我使用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混淆库文件?
答案 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 语句的补充。