Android 库 proguard 包混淆产生 aaaaa 冲突

Sir*_*lot 5 android proguard android-library

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

在模块classes.jar (lib1) 和classes.jar (lib2) 中发现重复的类aaaaa

我怎样才能防止Proguard混淆前 3 个包而最终得到:

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

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

Sir*_*lot 1

这可以通过将每个库的文件分别替换-repackageclasses my.domain.lib#.ofs为和来解决。这会将所有混淆的类移至包中,而所有未混淆的类将保留在其原始包中,并且保证不会发生冲突。proguard-rules#12my.domain.lib#.ofs

正如Proguard 文档所述:

-repackageclasses [package_name]

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

另一种解决方案是使用-keeppackagenames. 不幸的是,我找不到一种方法让它只保留前 3 个包

请参阅Proguard 文档

-keeppackagenames [package_filter]

指定不混淆给定的包名称。