Android库ProGuard包混淆导致a.a.a.a.a冲突。

5

我正在编写两个 Android 库。当我对它们进行混淆时,它们中的混淆代码都包含了一个名为 a.a.a.a.a 的类,导致在尝试在同一应用程序中使用这两个库时出现以下错误:

在模块 classes.jar (lib1) 和 classes.jar (lib2) 中找到重复的类 a.a.a.a.a

如何防止 Proguard 混淆前面的3个包以得到以下结果:

my.domain.lib1.a.amy.domain.lib2.a.a

编辑:混淆是作为构建库的一部分发生的,而不是构建应用程序时。

2个回答

1

这可以通过在每个库的proguard-rules文件中放置-repackageclasses my.domain.lib#.ofs来解决,同时将#分别替换为12。这将把所有混淆的类移动到my.domain.lib#.ofs包中,而所有未混淆的类将保留在它们原来的包中,确保没有冲突。

Proguard documentation所述:

-repackageclasses [package_name]

指定重新打包所有被重命名的类文件,将它们移动到单个给定的包中。

另一个解决方案是使用-keeppackagenames。不幸的是,我找不到一种方法使其仅保留前三个包

请参见Proguard documentation:

-keeppackagenames [package_filter]

指定不混淆给定的包名。


0
将以下代码添加到proguard-rules.pro文件中。
-keeppackagenames

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接