Android库proguard包混淆产生a.a.a.a.a冲突

标签 android proguard android-library

我正在编写 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.amy.domain.lib2.a.a?

编辑:混淆发生在构建库的过程中,而不是在构建应用程序时。

最佳答案

这可以通过输入 -repackageclasses my.domain.lib#.ofs 来解决在proguard-rules替换时每个库的文件 #12分别。这会将所有混淆的类移动到 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/

相关文章:

java - 另一个 zip 重复条目

android - Google Analytics 回溯 Proguard

Android: java.lang.UnsatisfiedLinkError: dlopen failed: libwebviewchromium.so 是 32 位而不是 64 位

android - 如何在android中行走时计算距离?

Android 使两个重叠的 View 接收并处理相同的触摸事件

java - 更改抽屉布局项目

android - Lambda 导致 Android 库模块中的编译器异常

java - Oreo 中的 Android Beacon 库(AltBeacon)支持

android - 在提供给应用程序之前混淆aar

java - Aspectj 与 android 库