Android编译错误,类型定义了多次

wbgh16ku  于 2023-04-18  发布在  Android
关注(0)|答案(2)|浏览(206)

我需要使用Android Studio构建一个库,以下是我的配置:
包含2个模块的项目:1/App:包含测试我的库的应用程序的应用程序模块2/MyLibrary:Library Module,包含我正在使用的库。
每个模块都有一个相同的外部.jar库文件的实现(放在每个模块的libs文件夹中),方法是转到项目结构-〉依赖关系并添加libs文件夹,结果是:

dependencies {    
    implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
}

事实上,我在两个模块中需要jar,是因为我需要这个jar库中的一些对象作为我正在编写的库中的函数参数,因此我需要我的测试模块能够提供这种对象。
当我尝试编译时,我有一个错误,说“类型com……被定义多次”,实际上外部库在中间文件夹中可见两次
很明显,这个问题来自于我实现这个外部库的方式。我需要一种方法来实现它一次,或者避免两个冲突。
我的问题:在同一个项目中的两个模块中实现外部库的好方法是什么?
我已经试过了:- 清理项目-重建项目-使缓存无效-删除中间文件夹-检查包名称

xtfmy6hx

xtfmy6hx1#

有几个选项:
1.由于“测试模块”应该知道“主库模块”(将其作为依赖项),因此您只能在主库模块中添加此jar/lib,而不能在“测试模块”中添加
1.创建第三个模块,将jar添加到其中,并将此模块用作“主库模块”和“测试模块”的依赖项。

rdlzhqv9

rdlzhqv92#

找到了一个解决方法。不知道这是否是一个好的方法。
在库模块中,我更改了:

implementation files('libs\\my_lib.jar')

通过:

compileOnly files('libs\\my_lib.jar')

然后一切似乎都编译得很好。我对其他解决方案和任何有助于更好理解的东西都持开放态度。

相关问题