【问题标题】:Android library proguard package obfuscation produces a.a.a.a.a collisionAndroid 库 proguard 包混淆产生 a.a.a.a.a 冲突
【发布时间】:2020-04-29 22:41:26
【问题描述】:

我正在编写 2 个 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?

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

【问题讨论】:

    标签: android proguard android-library


    【解决方案1】:

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

    正如Proguard documentation 所说:

    -repackageclasses [package_name]

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

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

    Proguarddocumentation

    -keeppackagenames [package_filter]

    指定不混淆给定的包名。

    【讨论】:

      【解决方案2】:

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

      -keeppackagenames
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        • 1970-01-01
        • 2013-02-22
        • 2017-10-29
        • 1970-01-01
        相关资源
        最近更新 更多