为什么我的Android应用报告它无法“找到”我自己的课程?可能与proguard有关?

时间:2014-08-17 20:22:32

标签: android proguard

我正在开发一个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 {*;}

然而,这并没有解决问题。

我很茫然因为我的应用程序在启动时立即出错。你有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果你得到一个ClassNotFoundException,你应该保持这样的类:

-keep class com.myCompany.myModule.Utils

选项-keepclassmembers仅保留指定的类成员(字段和方法)。

选项-keepclasseswithmembers只保留具有指定类成员(以及那些成员)的类。

请参阅ProGuard手册>用法> Overview of Keep Options