私は

2016-09-06 4 views
1

まずAAR生成にjarファイルの依存関係を追加することができますどのように私は私がある、_Iの使用は、AARファイルを生成するために使用されるライブラリモジュールをテストするためのテストアプリケーションを持っている私のプロジェクト構造私は

Test Application 
| 
| - Library Module 
| | 
| | - Core Library Module 
|  | Module 1 
|  |- Jar dependency 1 
|  | 
|  | Module 2 
|  |- Jar dependency 2 

を説明します他のアプリに配布する

ライブラリモジュールには、ライブラリやその他のライブラリ用のコア機能が含まれている別のモジュールに依存しています。

問題は、コアライブラリに2つの依存関係、2つのjarファイルがあることです。それらは、そのjarファイルのみを含むモジュールとしてプロジェクトに追加されます。

ここで、ライブラリモジュール用のaarファイルを生成すると、それらのjarファイルはaarに追加されません。私はこれらのjarファイルをクライアントアプリケーションに直接追加したくないので、私の唯一の解決策は、それらをaarファイルに追加する方法を見つけることです。

これは、https://github.com/adwiv/android-fat-aarを使ってそれらを追加しようとしましたが、それはjarファイルだけでなく、aarに通常のモジュールを追加するために使用されているためです。

これらのjarファイルをaarファイルに追加する方法はありますか?アールはジーンキンで生成され、アーティファクトに展開されます。

おかげで、

答えて

0

は、私がこれを行うための直接的な方法を見つけるcould'nt、しかし、私は他の誰かが同じ問題を抱えている、そしておそらくこれがあなたのために働く場合には周りに私の仕事を説明します。他の人が私たちにもっと良いものを与えるかもしれないので、私はこの答えを正しいものとして設定しません。

jarsファイルを直接追加することができないため、私はgradle takを作成してjarファイル内のすべてのファイルをコピーしました。 .aarファイルの中にあるファイル。

これはGradleのタスク

tasks.whenTaskAdded { task -> 
if (task.name == 'bundleRelease') { 
    task.dependsOn embedJavaJarsCustom 
} 
} 

task embedJavaJarsCustom << { 

def finalPath = '/Users/jenkins/workspace/MyProject/MyLibrary/libs' 
    // Collect list of all jar files 
    FileTree jars = fileTree(dir: finalPath, include: ['*.jar']) 

    println "Embedding jars : " + jars 

    // Explode all jar files to classes so that they can be proguarded 
    jars.visit { 
     FileVisitDetails element -> 
      println element.getName() 
      if (element.getName().equals('my.jar') 
        || element.getName().equals('my2.jar')) { 
        copy { 

         from(zipTree(element.file)) 
         into("${getProject().getBuildDir()}/intermediates/classes/release/") 
        } 
      } 

    } 
} 
ある