从 eclipse 导出签名包后,当调用其中一项 Activity 时,应用程序开始崩溃。
05-30 23:05:43.814: E/AndroidRuntime(11578): FATAL EXCEPTION: main
05-30 23:05:43.814: E/AndroidRuntime(11578): java.lang.NoClassDefFoundError: com.encryptomatic.alockbin.ItemListActivity
我完全排除了该类对所有成员的混淆,并且我看到它列在 seeds.txt 中。
与其他 Activity 的唯一区别是该 Activity 扩展了 SherlockFragmentActivity。 我使用以下方法完全排除了依赖项:
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.actionbarsherlock.** { *; }
-keep interface com.actionbarsherlock.** { *; }
-keepattributes *Annotation*
这里可能出了什么问题?如何检查我的类(class)是否真的以 apk 结束?
最佳答案
简单的回答是:ProGuard 无法检测到您的代码使用了 com.encryptomatic.alockbin.ItemListActivity
类,因此已将其删除。如果动态加载或以不同的异常方式加载,则可能会发生这种情况。
因此,如果您使用 ProGuard,您应该简单地将提到的类添加为“keep”类:
-keep class com.encryptomatic.alockbin.ItemListActivity { public *; }
然后重新构建 APK 并尝试。测试应用程序的所有功能,因为很可能还有其他类需要配置保留。如果您已识别出所有类,还请检查 ProGuard 警告,因为它们通常包含其他可能明智的保留类。
关于proguard 混淆后的 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851424/