R8 表示类型定义了多次:在 build\.transforms 和 build\tmp\kotlin-classes 中
R8 says type is defined multiple times: in build\.transforms and in build\tmp\kotlin-classes
我最近从我的 Android 应用程序项目中提取了一些代码到单独的 kotlin 模块中(build.gradle 文件声明了 "java-library"
和 "kotlin"
插件)。
现在,任务 ':app:minifyQaWithR8'
失败并显示消息:
AGPBI: {"kind":"error","text":"Type com.myapp.ext.models.AckResponse
is defined multiple times:
E:\projects\myapp\ext\build\.transforms656f2face08400c6d53844207373f0\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
文件夹,然后使 cache/restart 失效,然后 assemble,得到了类似的结果,但 class 不同。但两次的位置都是一样的:一个在 .transforms656f2face08400c6d53844207373f0\jetified-ext.jar
一个在 app\build\tmp\kotlin-classes\qa
在 similar question
中,R8 团队的一名成员建议这些位置之一代表依赖关系,一个代表应用程序代码,但是,我找不到 class 的任何实例我的应用程序代码中存在问题,也没有任何迹象表明我的模块被多次导入。
我的两个模块确实有很多相同的 class 可能是相关的,但是我使用以下语句只在构建中包含其中一个:
if(api_version == "ext2") {
implementation project(":ext2")
}else{
implementation project(":ext1")
}
这些模块中的包不会出现在主应用程序代码中。
我还可以采取哪些其他步骤来追查此问题的根源?
事实证明,我的项目中实际上有重复的 类。只是一开始找不到,因为文件中的包名与文件所在的文件夹不对应
我最近从我的 Android 应用程序项目中提取了一些代码到单独的 kotlin 模块中(build.gradle 文件声明了 "java-library"
和 "kotlin"
插件)。
现在,任务 ':app:minifyQaWithR8'
失败并显示消息:
AGPBI: {"kind":"error","text":"Type com.myapp.ext.models.AckResponse is defined multiple times: E:\projects\myapp\ext\build\.transforms656f2face08400c6d53844207373f0\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
文件夹,然后使 cache/restart 失效,然后 assemble,得到了类似的结果,但 class 不同。但两次的位置都是一样的:一个在 .transforms656f2face08400c6d53844207373f0\jetified-ext.jar
一个在 app\build\tmp\kotlin-classes\qa
在 similar question
中,R8 团队的一名成员建议这些位置之一代表依赖关系,一个代表应用程序代码,但是,我找不到 class 的任何实例我的应用程序代码中存在问题,也没有任何迹象表明我的模块被多次导入。
我的两个模块确实有很多相同的 class 可能是相关的,但是我使用以下语句只在构建中包含其中一个:
if(api_version == "ext2") {
implementation project(":ext2")
}else{
implementation project(":ext1")
}
这些模块中的包不会出现在主应用程序代码中。
我还可以采取哪些其他步骤来追查此问题的根源?
事实证明,我的项目中实际上有重复的 类。只是一开始找不到,因为文件中的包名与文件所在的文件夹不对应