私は仕事のためにアンドロイドライブラリを開発していますが、私たちは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.gradle
のandroid
タグ:
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のレポの依存関係とは全く関係ありませんよ。ライブラリを使用している人は、使用しているジャーを入手して追加する必要があります。
これを指定する方法はあまり複雑ではありませんか?