Tôi vừa tạo APK bằng Gradle để phát hành (ProGuard 4.9 và đã ký). Khi tôi khởi động ứng dụng nó sụp đổ về lỗi này:Lỗi Android phát hành Android với java.lang.AssertionError: không thể trong java.lang.Enum
E/AndroidRuntime(8662): java.lang.AssertionError: impossible
E/AndroidRuntime(8662): at java.lang.Enum$1.create(Enum.java:44)
E/AndroidRuntime(8662): at java.lang.Enum$1.create(Enum.java:35)
E/AndroidRuntime(8662): at libcore.util.BasicLruCache.get(BasicLruCache.java:54)
E/AndroidRuntime(8662): at java.lang.Enum.getSharedConstants(Enum.java:210)
E/AndroidRuntime(8662): at java.lang.Enum.valueOf(Enum.java:190)
E/AndroidRuntime(8662): at kr.infli.s.Z(Inflikr.java:390)
E/AndroidRuntime(8662): at kr.infli.a.ev(Inflikr.java:409)
E/AndroidRuntime(8662): at kr.infli.activity.InflikrActivity.onResume(InflikrActivity.java:231)
E/AndroidRuntime(8662): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)
E/AndroidRuntime(8662): at android.app.Activity.performResume(Activity.java:5310)
E/AndroidRuntime(8662): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2778)
E/AndroidRuntime(8662): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2817)
E/AndroidRuntime(8662): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
E/AndroidRuntime(8662): at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime(8662): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime(8662): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(8662): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(8662): at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime(8662): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(8662): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(8662): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(8662): Caused by: java.lang.NoSuchMethodException: values []
E/AndroidRuntime(8662): at java.lang.Class.getMethod(Class.java:661)
E/AndroidRuntime(8662): at java.lang.Class.getDeclaredMethod(Class.java:623)
E/AndroidRuntime(8662): at java.lang.Enum$1.create(Enum.java:41)
E/AndroidRuntime(8662): ... 20 more
Hình như lỗi này không nên xảy ra: https://android.googlesource.com/platform/libcore/+/9edf43dfcc35c761d97eb9156ac4254152ddbc55/libdvm/src/main/java/java/lang/Enum.java
build.gradle My chứa:
buildTypes {
release {
runProguard true
proguardFile file('./proguard-project.txt')
signingConfig signingConfigs.release
}
}
My Proguard-project.txt chứa
-useuniqueclassmembernames
-keepattributes SourceFile,LineNumberTable
+ a bunch of keep class, dontnote, dontwarn,...
Khi tôi xóa ProGuard khỏi build.gradle nó không bị hỏng.
Khi tôi đang sử dụng ProGuard từ bản dựng Ant, nó hoạt động (gần đây tôi đã di chuyển sang Gradle).
Mọi sự cố đã biết với Gradle + ProGuard?
Cảm ơn
nó trông giống như 'phương pháp runProguard' đã biến mất, vì vậy tôi chỉ kết hợp hai dòng của bạn vào 'proguardFiles getDefaultProguardFile ('Proguard-android.txt'), tập tin ("Proguard-rules.txt")' –
@ DraškoKokić: 'runProguard' được đổi tên thành' minifyEnabled' trong [Android Gradle plugin 1.0.0] (http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0). (Bạn cần phải chỉ định 'minifyEnabled true' cho kiểu xây dựng phát hành của bạn; nếu không ProGuard sẽ * không * được chạy.) – Jonik