最近、JitPackを介して2つのAndroidライブラリを追加しましたが、次のエラーが発生します。
Duplicate files copied in APK META-INF/library_release.kotlin_module
キャッシュをクリアし、を使用してモジュールを除外しようとしました
exclude group: 'org.jetbrains'
そして
exclude group: 'org.jetbrains.kotlin'
しかし、どちらも問題を解決していないようです。 kotlin stdlibがJitPackを介して追加されないようにする方法はありますか?奇妙なことに、DbFlowのような他のライブラリにはこの問題はありませんが、セットアップについて特別なことは何も見られません(JitPackを介していないことを除いて)
これをアプリのbuild.gradle
ファイルのAndroid
タグ内に追加する必要があります
packagingOptions {
exclude 'META-INF/library_release.kotlin_module'
}
投稿で示唆されているように Kotlin M13が出ています! by jetbrains
:
これらの.kotlin_moduleファイルがパッケージングプロセスによって削除されていないことを確認してください。
したがって、exclude
オプションを使用して、このリソースファイルの生成を除外することはできません。
Kotlin M13がリリースされました! で説明されているように、次のことを行う必要があります。
mavenでは、モジュール名にgroupIdとartifactIdを使用しますが、次のように言うことができます。
<configuration>
<moduleName>com.example.mymodule</moduleName>
</configuration>
gradleでは、プロジェクト名+ビルドタスク名をカスタマイズします。
compileKotlin {
kotlinOptions.moduleName = "com.example.mymodule"
}
これは、Android
ライブラリプロジェクトの構成です。
ext {
GROUP_ID = 'custom.group.id'
ARTIFACT_ID = 'artifactid'
}
Android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
compileOptions {
kotlinOptions.freeCompilerArgs += ['-module-name', "$GROUP_ID.$ARTIFACT_ID"]
}
defaultConfig {
...
}
buildTypes {
...
}
}
META-INF/custom.group.id.artifactId.kotlin_module
の代わりにMETA-INF/library_release.kotlin_module
という名前のリソースファイルが生成されます。重複ファイルはこれ以上見つかりません。
他の競合を調べた後、解決策は
packagingOptions {
pickFirst 'META-INF/library_release.kotlin_module'
}
アプリのgradleのAndroid
の下。
これにより、apkをビルドできます