NOTE:这个问题是基于我在以下讨论中收到的答案:
Android:2个具有相同包的aar库 https://stackoverflow.com/questions/57347039/android-2-aar-libraries-with-the-same-package
在我的安卓项目中,我正在尝试支持在不同 aar 库中使用的通用代码库的多个版本,这些库应该在我的应用程序上一起编译。我目前在公共代码库中复制类,更改它们的包名称并将它们放入我创建的每个库中。从短期来看,它允许每个库都使用唯一的包名称进行编译。此外,如果公共库中的类需要不同的实现,它也是允许的。从长远来看,它会产生明显的维护问题。我正在尝试创建一个解决方案,该解决方案允许我使用同一代码库的不同版本编译多个库。
我尝试过以下过程:
在名为“commonLib_1_0_0”的 aar 库中编译我的通用代码库。
使用 libCommon_1_0_0 编写一个名为“libA”的库。
更改公共代码库中方法的实现,使其包括
不同的代码,因此不同的版本 - “comonLib_1_0_1”
使用 libCommon_1_0_1 编写一个名为“libB”的库。
创建一个实现这两个 aar 的新应用程序。
当我尝试从步骤 5 编译应用程序时,会抛出错误:"Program type already present: commonlib.mybcommonpackage.MyCommonClass"
.
抛出该错误是因为编译器无法使用相同的名称和相同的包编译两个不同的类。
我的问题是关于维持这种情况的最佳方法:
编译两个使用相同公共库但实现不同的不同库的正确方法是什么?
考虑到编译器无法编译两个具有完全相同名称的不同类,我应该如何在多个项目中部署公共库?
NOTE:虽然我目前使用 aar 解决方案来部署我的库,但我也考虑根据问题中描述的需求将其更改为可以帮助我更好地维护代码的解决方案。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)