Android library proguard软件包混淆会产生a.a.a.a.a冲突
我正在编写两个Android库。当我对这两个库进行模糊处理时,它们中的模糊代码都包含一个名为Android library proguard软件包混淆会产生a.a.a.a.a冲突,android,proguard,android-library,Android,Proguard,Android Library,我正在编写两个Android库。当我对这两个库进行模糊处理时,它们中的模糊代码都包含一个名为a.a.a.a的类,当尝试在同一应用程序中使用这两个库时,会导致以下错误: 在模块classes.jar(lib1)和classes.jar(lib2)中找到重复的类a.a.a.a.a.a 如何防止Proguard混淆前3个包,最终导致: my.domain.lib1.a.a和my.domain.lib2.a.a 编辑:作为构建库的一部分,混淆正在发生,在构建应用程序时不会出现这种情况。这可以通过将-re
a.a.a.a
的类,当尝试在同一应用程序中使用这两个库时,会导致以下错误:
在模块classes.jar(lib1)和classes.jar(lib2)中找到重复的类a.a.a.a.a.a
如何防止Proguard
混淆前3个包,最终导致:
my.domain.lib1.a.a
和my.domain.lib2.a.a
编辑:作为构建库的一部分,混淆正在发生,在构建应用程序时不会出现这种情况。这可以通过将
-repackageclasses my.domain.lib#ofs
放在每个库的proguard rules
文件中来解决,同时分别用1
和2
替换
。这将把所有模糊类移动到my.domain.lib#.ofs
包中,而所有未模糊类将保留在其原始包中,并且保证不会发生冲突
正如Proguard
所述:
-重新打包类[包名称]
指定通过将重命名的所有类文件移动到单个给定包中来重新打包这些类文件
另一个解决方案是使用-keeppackagenames
。不幸的是,我找不到办法让它只保留前3个包
请参阅Proguard
:
-keeppackagenames[package\u filter]
指定不混淆给定的包名称
将下面的代码添加到
proguard rules.pro
文件中
-keeppackagenames