问题描述
我最近从我的 Android 应用程序项目中提取了一些代码到单独的 kotlin 模块中(build.gradle 文件声明了 import plotly.express as px
import numpy as np
X = np.random.randint(0,10,(10,3))
fig = px.scatter_3d(x=X[:,0],y=X[:,1],z=X[:,2])
fig.show()
和 "java-library"
插件)。
现在,任务 "kotlin"
失败并显示以下消息:
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"}
我尝试删除每个模块的 ':app:minifyQaWithR8'
文件夹,然后使缓存失效/重新启动,然后组装,并在不同的类中得到了类似的结果。但两次,地点都是一样的:一个在build
,一个在.transforms\35656f2face08400c6d53844207373f0\jetified-ext.jar
在 app\build\tmp\kotlin-classes\qa
中,R8 团队的一名成员建议这些位置之一代表依赖项,一个代表应用程序代码,但是,我在我的应用程序代码中找不到相关类的任何实例,也没有任何迹象表明我的模块被多次导入。
我的两个模块确实有很多相同的类可能是相关的,但是我使用以下语句只在构建中包含其中一个:
similar question
这些模块中的包不会出现在主应用程序代码中。
我还可以采取哪些其他步骤来追踪此问题的根源?
解决方法
事实证明,我的项目中实际上存在重复的类。一开始我只是找不到它们,因为文件中的包名与文件所在的文件夹不对应。