如何防止ProGuard混淆从JAR文件导入的库?

时间:2019-04-09 14:16:17

标签: java android proguard

我使用Android Studio的 从JAR / AAR文件导入 对话框导入了一个库。但是,ProGuard混淆了该库,因此这些类中的方法在我的其他模块中不可见。

我尝试创建文件 proguard-rules.pro 中位于 build.gradle 文件旁边的文件生成的库目录。但是,尽管这是我预期的情况,但ProGuard不会提取此文件。

我要导入的库JAR在包com.merchant.lib下的两个子包中有4个类。这些是我添加的ProGuard规则。

-keep class com.merchant.lib.** { *; }

由Android Studio生成的 build.gradle 文件如下:

configurations.maybeCreate("default")
artifacts.add("default", file("merchant-lib.jar"))

我希望ProGuard可以完整保留该JAR文件中的类,而无需进行任何修改。但是ProGuard仍在处理此JAR文件,并且我无法访问这些类。

如何防止ProGuard混淆库文件?

2 个答案:

答案 0 :(得分:0)

从jar文件中获取软件包名称,然后使用-dontwarn

-dontwarn  com.sun.mail.**
-dontwarn  javax.mail.**

答案 1 :(得分:0)

对我来说,我需要将 jar 文件作为输入而不是作为库包含在 proguard.pro 文件中:

-injars jar-in-question.jar

不是

-libraryjars jar-in-question.jar

所有这些都是对您问题中的 -keep 语句的补充。