我正在开发一个使用 proguard 的 Android 应用程序,导出 apk 文件后,我的应用程序在启动屏幕上运行时崩溃。我已将错误日志以及 proguard.properties 和 proguard.txt 粘贴到此处。
java.lang.RuntimeException: An error occured while executing doInBackground()
1 at android.os.AsyncTask$3.done(AsyncTask.java:300)
2 at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
3 at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
4 at java.util.concurrent.FutureTask.run(FutureTask.java:242)
5 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
6 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
7 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
8 at java.lang.Thread.run(Thread.java:841)
9 Caused by: java.lang.NoSuchFieldError: UNKNOWN
10 at java.lang.reflect.Method.getDefaultValue(Native Method)
11 at java.lang.reflect.Method.getDefaultValue(Method.java:353)
12 at libcore.reflect.AnnotationFactory.getElementsDescription(AnnotationFactory.java:75)
13 at libcore.reflect.AnnotationFactory.(AnnotationFactory.java:112)
14 at libcore.reflect.AnnotationFactory.createAnnotation(AnnotationFactory.java:94)
15 at java.lang.reflect.Field.getAnnotation(Native Method)
16 at java.lang.reflect.Field.getAnnotation(Field.java:209)
17 at com.b.a.d.f.a(Unknown Source)
18 at com.b.a.a.g.a(Unknown Source)
19 at com.b.a.a.g.a(Unknown Source)
20 at com.b.a.c.g.a(Unknown Source)
21 at com.b.a.b.k.a(Unknown Source)
22 at com.b.a.a.a.a.a(Unknown Source)
23 at com.b.a.a.a.a.b(Unknown Source)
24 at com.ziqitza.b.a.g(Unknown Source)
25 at com.ziqitza.e.i.a(Unknown Source)
26 at com.ziqitza.e.v.a(Unknown Source)
27 at com.ziqitza.e.v.doInBackground(Unknown Source)
28 at android.os.AsyncTask$2.call(AsyncTask.java:288)
29 at java.util.concurrent.FutureTask.run(FutureTask.java:237)
30 ... 4 more
proguard-project.txt
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
-dontwarn com.parse.**
-keep class com.parse.*{ *; }
-dontwarn com.google.**
-keep class com.google.*{ *; }
-dontwarn org.hamcrest.**
-keep class org.hamcrest.*{ *; }
-dontwarn com.ziqiatza.**
-keep class com.ziqiatza.*{ *; }
-dontwarn com.actionbarsherlock.**
-keep class com.actionbarsherlock.*{ *; }
-dontwarn com.bouncycastle.**
-keep class com.bouncycastle.*{ *; }
-dontwarn com.coboltforge.**
-keep class com.bouncycastle.*{ *; }
-dontwarn com.squareup.**
-keep class com.squareup.*{ *; }
-dontwarn eu.janmuller.**
-keep class eu.janmuller.*{ *; }
-dontwarn org.bouncycastle.**
-keep class org.bouncycastle.*{ *; }
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
最佳答案
似乎有一个问题支持actionbarsherlock
。阅读official documentation您必须将以下 proguard 规则包含在:
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.actionbarsherlock.** { *; }
-keep interface com.actionbarsherlock.** { *; }
-keepattributes *Annotation*
但是,建议您现在使用新的 AppCompat Toolbar作为操作栏的替代品。而且,actionbarsherlock已被deprecated支持新的工具栏。
关于java.lang.NoSuchMethodException : [class android. app.Activity,int],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30033651/