我有一个已经使用ProGuard优化和混淆的库,如果我不在应用程序上使用ProGuard,它可以正常工作。也就是说,我可以看到它将HTTP请求发送到正确的位置,这会导致应用程序正确响应某些触摸事件。同样,如果我在应用程序上使用ProGuard但不是库,那么一切仍然正常。当lib和app分别是“ProGuarded”时,我只遇到问题,app / library不再发出任何HTTP请求。为什么我在这个“双ProGuard”情况下遇到问题?我开始怀疑是否存在类命名冲突,并且库只是调用了错误的类。
该应用的ProGuard规则文件如下:
-dontwarn com.mylibrary.**
-dontwarn org.acra.**
-dontwarn org.apache.**
-dontwarn com.google.**
-keepattributes *Annotation*
-keep class com.mylibrary.** { *; }
-keep class org.acra.** {
*;
}
编辑:为了澄清,这是我自己的库,没有错误被抛出。一切都很好,应用程序按预期运行,但库应该添加的功能除外。
答案 0 :(得分:0)
事实证明应用程序的Proguard规则文件中有规则导致库再次被混淆,破坏了功能。我添加了一条规则,以确保在Proguard过程中跳过整个库,一切都解决了。