我正在编写 2 个 Android 库。当我混淆两者时,它们中的混淆代码包含一个名为 a.a.a.a.a
的类,当尝试在同一应用程序中使用这两个库时会导致以下错误:
Duplicate class a.a.a.a.a found in modules classes.jar (lib1) and classes.jar (lib2)
如何防止 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
documentation状态:
-repackageclasses [package_name]
Specifies to repackage all class files that are renamed, by moving them into the single given package.
另一个解决方案是使用 -keeppackagenames
.不幸的是,我找不到让它只保留前 3 个包 的方法。
参见 Proguard
documentation :
-keeppackagenames [package_filter]
Specifies not to obfuscate the given package names.
关于Android库proguard包混淆产生a.a.a.a.a冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59712878/