我正在开发一个Android应用程序,最近因为库中包含的“类”而开始使用proguard。
在这个过程中,我已经能够添加proguard规则,最后重新编译我的应用程序甚至“运行”它。
每次我“运行”它时,都会出错并报告
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.myCompany.myModule.Utils" on path: DexPathList...
由于已经实现了proguard以减少类的总数,我在每次构建时都使用了proguard。对于问题在于该文件的问题,我会花钱购买 - 因为应用程序在添加之前运行顺畅。 我已将以下几行添加到android studio中的proguard.pro文件中,试图强制解决此问题:
-keepclassmembers class com.myCompany.myModule
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keepclasseswithmembers class com.myCompany.myModule.** { *; }
-keepclasseswithmembers class com.myCompany.myModule.Utils {*;}
然而,这并没有解决问题。
我很茫然因为我的应用程序在启动时立即出错。你有什么想法可以解决这个问题吗?
答案 0 :(得分:0)
如果你得到一个ClassNotFoundException,你应该保持这样的类:
-keep class com.myCompany.myModule.Utils
选项-keepclassmembers仅保留指定的类成员(字段和方法)。
选项-keepclasseswithmembers只保留具有指定类成员(以及那些成员)的类。
请参阅ProGuard手册>用法> Overview of Keep Options