【问题标题】:R8 says type is defined multiple times: in build\.transforms and in build\tmp\kotlin-classesR8 说类型被定义多次:在 build\.transforms 和 build\tmp\kotlin-classes
【发布时间】:2021-02-24 03:05:37
【问题描述】:

我最近从我的 Android 应用程序项目中提取了一些代码到单独的 kotlin 模块中(build.gradle 文件声明了 "java-library""kotlin" 插件)。

现在,任务':app:minifyQaWithR8' 失败并显示以下消息:

AGPBI: {"kind":"error","text":"Type com.myapp.ext.models.AckResponse 被多次定义: E:\projects\myapp\ext\build\.transforms\35656f2face08400c6d53844207373f0\jetified-ext.jar:com/myapp/ext/models/AckResponse.class, E:\projects\myapp\app\build\tmp\kotlin-classes\qa\com\myapp\ext\models\AckResponse.class"}],"tool":"R8"}

我尝试删除每个模块的 build 文件夹,然后使缓存/重新启动无效,然后进行组装,并使用不同的类得到了类似的结果。但两次,位置都是一样的:一个在.transforms\35656f2face08400c6d53844207373f0\jetified-ext.jar,一个在app\build\tmp\kotlin-classes\qa

similar question 中,R8 团队的一名成员建议其中一个位置代表依赖项,一个代表应用程序代码,但是,我在我的应用程序代码中找不到任何相关类的实例,也没有任何表明我的模块被多次导入。

我的两个模块确实有很多相同的类可能是相关的,但是我使用以下语句仅在构建中包含其中一个:

if(api_version == "ext2") {
    implementation project(":ext2")
}else{
    implementation project(":ext1")
}

这些模块中的包不会出现在主应用程序代码中。

我还可以采取哪些其他步骤来追查此问题的根源?

【问题讨论】:

    标签: android android-studio gradle android-r8


    【解决方案1】:

    事实证明,我的项目中实际上存在重复的类。一开始我只是找不到它们,因为文件中的包名与文件所在的文件夹不对应。

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 2023-02-16
      • 1970-01-01
      • 2020-11-25
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      相关资源
      最近更新 更多