在 "ProGuarded" 应用程序中使用 "ProGuarded" 库失败。非 ProGuard 应用程序或库工作正常

Using "ProGuarded" library in "ProGuarded" app fails. Non-ProGuard app or lib works fine

我有一个已经用 ProGuard 优化和混淆的库,如果我不在应用程序上使用 ProGuard,它也能正常工作。也就是说,我可以看到它向正确的位置发出 HTTP 请求,并使应用程序正确响应某些触摸事件。同样,如果我在应用程序上使用 ProGuard 而不是库,一切仍然正常。我只在 lib 和应用程序分别 "ProGuarded" 时遇到问题,其中 app/library 不再发出任何 HTTP 请求。为什么我会在这种 "double ProGuard" 情况下遇到问题?我开始怀疑是否可能存在 class 命名冲突,而库只是调用了错误的 class。

我的应用程序 ProGuard 规则文件如下所示:

-dontwarn com.mylibrary.**
-dontwarn org.acra.**
-dontwarn org.apache.**
-dontwarn com.google.**

-keepattributes *Annotation*

-keep class com.mylibrary.** { *; }

-keep class org.acra.** {
    *;
}

编辑:澄清一下,这是我自己的库,没有抛出任何错误。一切都构建良好,应用程序按预期运行,除了库应该添加的功能。

事实证明,应用程序的 Proguard 规则文件中有规则导致库再次被混淆,从而破坏了功能。我添加了一条规则,以确保在 Proguard 过程中跳过整个库,一切都会自行解决。