APK 中复制了重复文件 META-INF/library_release。kotlin_module
Duplicate files copied in APK META-INF/library_release.kotlin_module
我最近通过 JitPack 添加了两个 Android 库,但出现以下错误:
Duplicate files copied in APK META-INF/library_release.kotlin_module
我已经清除了缓存并尝试使用
排除模块
exclude group: 'org.jetbrains'
和
exclude group: 'org.jetbrains.kotlin'
但似乎都无法解决问题。有什么办法可以阻止通过 JitPack 添加 kotlin stdlib?奇怪的是,像 DbFlow 这样的其他库没有这个问题,尽管我没有看到它们的设置有什么特别之处(除了它不是通过 JitPack)
您应该将其添加到 build.gradle
文件的 android
标签内
packagingOptions {
exclude 'META-INF/library_release.kotlin_module'
}
看了其他的冲突,好像是这样解决的
packagingOptions {
pickFirst 'META-INF/library_release.kotlin_module'
}
在应用 android
下 gradle。
这允许 apk 构建
正如 post Kotlin M13 is out! 中 jetbrains
的建议:
Make sure these .kotlin_module files are not stripped by your packaging process.
因此,我们不能使用 exclude
选项来排除生成此资源文件。
如Kotlin M13 is out!所述,我们应该:
在 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
。将不会再找到重复文件。
我最近通过 JitPack 添加了两个 Android 库,但出现以下错误:
Duplicate files copied in APK META-INF/library_release.kotlin_module
我已经清除了缓存并尝试使用
排除模块exclude group: 'org.jetbrains'
和
exclude group: 'org.jetbrains.kotlin'
但似乎都无法解决问题。有什么办法可以阻止通过 JitPack 添加 kotlin stdlib?奇怪的是,像 DbFlow 这样的其他库没有这个问题,尽管我没有看到它们的设置有什么特别之处(除了它不是通过 JitPack)
您应该将其添加到 build.gradle
文件的 android
标签内
packagingOptions {
exclude 'META-INF/library_release.kotlin_module'
}
看了其他的冲突,好像是这样解决的
packagingOptions {
pickFirst 'META-INF/library_release.kotlin_module'
}
在应用 android
下 gradle。
这允许 apk 构建
正如 post Kotlin M13 is out! 中 jetbrains
的建议:
Make sure these .kotlin_module files are not stripped by your packaging process.
因此,我们不能使用 exclude
选项来排除生成此资源文件。
如Kotlin M13 is out!所述,我们应该:
在 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
。将不会再找到重复文件。