2017-01-17 12 views
0

私は仕事のためにアンドロイドライブラリを開発していますが、私たちはMavenリポジトリでは利用できないいくつかのjarファイルを使用しています。しかし、私たちは合法的にこれらの瓶を図書館に入れることは許されていません。消費者は図書館に加えてそれらの壺を手に入れなければなりません。aarへのjar依存関係のパッケージ化を避ける

私の問題は、私たちのライブラリの消費者にこれらのjarを提供する必要がないように思えることです(私はaarを含むテストアプリを使用しています)。私はthis similar questionのソリューションを無駄にしようとしました。私は私のGradleファイルにprovided代わりのcompileにそれらを設定しようとしている

// Neither of these seem to fix the problem 
compile files('libs/externalDep.jar') 
provided files('libs/externalDep.jar') 

私もパッケージオプションでそれらを除外してみました:

packagingOptions { exclude 'libs/externalDep.jar }` 

私はこれを追加することによって、それらを除外することができますbuild.gradleandroidタグ:

android.libraryVariants.all { variant -> 
variant.outputs.each { output -> 
    def packageLib = output.getPackageLibrary() 
    packageLib.exclude('libs/externalDep.jar') 
} 

彼らはAARに追加されますが、テストアプリケーションを構築することは、私に与えていない:

com.android.build.api.transformTransformException: 
    com.android.builder.packaging.DuplicateFileException: 
    Duplicate files copied in APK VERSION.txt 
File1: path/to/jar/in/test/app/project/externalDep.jar 
File2: path/to/build/intermediates/exploded-aar/.../jars/classes.jar 

を明確にするために、私はそれらが正常に動作している、Mavenのレポの依存関係とは全く関係ありませんよ。ライブラリを使用している人は、使用しているジャーを入手して追加する必要があります。
これを指定する方法はあまり複雑ではありませんか?

答えて

5

this answerとして、からmymodule/までのjarファイルを1つ上に移動する必要があります。

その後build.gradleファイル、変化:
compile file('libs/externalDep.jar')
provided file('externalDep.jar')


にそれです。

これはaarにコピーされず、aarを使用するクライアントはjarファイル自体を提供する必要があります。
aarを使用するアプリケーションプロジェクトでは、通常どおりcompile file('lib/externalDep')を指定できます。

関連する問題