Android Gradle Build:重复条目:META-INF/app_release.kotlin_module

use*_*708 8 android gradle android-studio build.gradle android-gradle-plugin

我正在尝试通过 Android Studio > Generate Signed Bundle 或 APK > Android App Bundle > Release 构建发布应用程序

但是 gradle 失败了

: > Task :core:transformClassesWithMergeClassesForRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':core:transformClassesWithMergeClassesForRelease'.
> 1 exception was raised by workers:
  java.util.zip.ZipException: duplicate entry: META-INF/app_release.kotlin_module
Run Code Online (Sandbox Code Playgroud)

在我的build.gradle我尝试添加:

    packagingOptions {
        exclude 'META-INF/app_release.kotlin_module'
    }
Run Code Online (Sandbox Code Playgroud)

但它没有任何区别。

我该如何解决?

对于额外的上下文,它是一个多模块项目。

我有一个core模块,以及一个installedcore build.gradlewith 中声明的模块dynamicFeatures = [":installed"]

谢谢

use*_*708 3

所以我想通了。

我在 Android studio 中按两次 Shift 键(打开到处搜索对话框)并搜索app_release.kotlin_module

我看到两个文件,它们位于我的两个依赖项下(有趣的是,它们是我创建的库!)

我打开了这些库项目,并在build.gradle文件中添加:

ext {
    PUBLISH_GROUP_ID = 'com.companyname'
    PUBLISH_ARTIFACT_ID = 'packagename'
}

android {
    ...
    compileOptions {
            kotlinOptions.freeCompilerArgs += ['-module-name', "$PUBLISH_GROUP_ID.$PUBLISH_ARTIFACT_ID"]
    }
}
Run Code Online (Sandbox Code Playgroud)

使用新版本重建库项目,在我的其他项目中使用这些新版本,然后它开始编译:)