使用applymapping的proguard会产生重复的名称

时间:2018-03-02 19:23:10

标签: android proguard android-proguard

我正在编写一个作为插件加载到第三方应用程序的android模块。 API由.jar提供,已被proguard混淆并包含mapping.txt文件。

在我的proguard配置中,我有:

-dontskipnonpubliclibraryclasses
-dontshrink
-dontoptimize

-applymapping "mapping.txt"

...

问题是,仅在我的模块中使用的类被映射到与库.jar中使用的类相同的名称(但我不会使用)。在运行时加载它们会导致IncompatibleClassChangeError

我可以清楚地看到生成的映射文件中的重复项:

mine:
timber.log.Timber -> b.a.a:

jars:
gnu.nmea.ContainsPosition -> b.a.a:

有没有办法让proguard 重用obfusaction名称?

1 个答案:

答案 0 :(得分:2)

您应该使用规则

-repackageclasses <packagename>
在您的Android模块中

。 这会将所有混淆的类移动到这个(唯一的)包中,避免名称冲突。

示例:您的模块名为com.foo.mymodule,然后您将添加

 -repackageclasses com.foo.mymodule.internal

所有混淆的类都会在那里结束。

相关问题