久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Android 發布 APK 因 java.lang.AssertionError 崩潰:在 ja

Android release APK crash with java.lang.AssertionError: impossible in java.lang.Enum(Android 發布 APK 因 java.lang.AssertionError 崩潰:在 java.lang.Enum 中不可能)
本文介紹了Android 發布 APK 因 java.lang.AssertionError 崩潰:在 java.lang.Enum 中不可能的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我剛剛使用 Gradle 構建了一個用于發布的 APK(ProGuard 4.9 并已簽名).當我啟動應用程序時,它會因此錯誤而崩潰:

I've just built an APK using Gradle for release (ProGuard 4.9 and signed). When I launch the app it crash on this error :

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

看起來這個錯誤不應該發生:https://android.googlesource.com/platform/libcore/+/9edf43dfcc35c761d97eb9156ac4254152ddbc55/libdvm/src/main/java/java/lang/Enum.java

Looks like this error should not happen : https://android.googlesource.com/platform/libcore/+/9edf43dfcc35c761d97eb9156ac4254152ddbc55/libdvm/src/main/java/java/lang/Enum.java

我的 build.gradle 包含:

My build.gradle contains :

buildTypes {
    release {
        runProguard true
        proguardFile file('./proguard-project.txt')
        signingConfig signingConfigs.release
    }
}

我的 proguard-project.txt 包含

My proguard-project.txt contains

-useuniqueclassmembernames
-keepattributes SourceFile,LineNumberTable

+ a bunch of keep class, dontnote, dontwarn,...

當我從 build.gradle 中刪除 ProGuard 時,它不會崩潰.

When I remove ProGuard from build.gradle it do not crash.

當我在 Ant 構建中使用 ProGuard 時,它可以工作(我最近遷移到 Gradle).

When I was using ProGuard from an Ant build it worked (I recently migrated to Gradle).

Gradle + ProGuard 有任何已知問題嗎?

Any known issue with Gradle + ProGuard ?

謝謝

推薦答案

你必須告訴 ProGuard 保留一些 enum 方法.

You have to tell ProGuard to keep some enum methods.

Android SDK 工具使用這個 ProGuard 配置來實現它:

The Android SDK tools use this ProGuard configuration to achieve it:

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

您可以將上述規則添加到您的 ProGuard 配置中,也可以(我更喜歡)包含默認的 Android 規則:

You can either add the above rule to your ProGuard configuration or you can (what I'd prefer) include the default Android rules:

minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt')
proguardFile file('./proguard-project.txt')

這篇關于Android 發布 APK 因 java.lang.AssertionError 崩潰:在 java.lang.Enum 中不可能的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

IncompatibleClassChangeError after updating to Android Build Tools 25.1.6 GCM / FCM(更新到 Android Build Tools 25.1.6 GCM/FCM 后出現 IncompatibleClassChangeError)
How to get current flavor in gradle(如何在 gradle 中獲取當前風味)
How to fix quot;unexpected element lt;queriesgt; found in lt;manifestgt;quot; error?(如何修復“意外元素lt;查詢gt;在“清單中找到錯誤?)
Multi flavor app based on multi flavor library in Android Gradle(基于 Android Gradle 中多風味庫的多風味應用)
Android dependency has different version for the compile and runtime(Android 依賴在編譯和運行時有不同的版本)
Transitive dependencies for local aar library(本地 aar 庫的傳遞依賴)
主站蜘蛛池模板: 欧美一区二区在线观看 | 国产不卡一区 | 成人国产精品色哟哟 | 精品久久久一区 | 亚洲欧美精品一区 | 天天操天天天 | 黄色av观看| 中文字幕国产一区 | 亚洲国产成人精品一区二区 | 狠狠干av| 97视频免费| 日韩综合网 | 中文在线播放 | 美女爽到呻吟久久久久 | 色综合久久久久 | 一区二区日本 | 日韩免费高清视频 | 亚洲欧美一区二区三区情侣bbw | 97成人免费 | 国产精品美女视频 | 欧美专区在线 | 欧美一区在线视频 | 精品亚洲一区二区三区 | 欧美一区2区三区4区公司二百 | 精品亚洲一区二区三区四区五区 | 欧美激情综合五月色丁香小说 | www.免费看片.com| av免费观看在线 | 久久亚洲一区 | 久久久成人精品 | 成人99| 亚洲高清视频在线观看 | 国产中文在线观看 | 99国内精品 | 国产91一区 | 色欧美片视频在线观看 | 亚洲国产在| 看一级毛片| 免费黄色在线观看 | 欧美中文字幕在线 | 午夜久久久久久久久久一区二区 |