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

Android 發(fā)布 APK 因 java.lang.AssertionError 崩潰:在 ja

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

問題描述

我剛剛使用 Gradle 構(gòu)建了一個(gè)用于發(fā)布的 APK(ProGuard 4.9 并已簽名).當(dāng)我啟動(dòng)應(yīng)用程序時(shí),它會(huì)因此錯(cuò)誤而崩潰:

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

看起來這個(gè)錯(cuò)誤不應(yīng)該發(fā)生: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,...

當(dāng)我從 build.gradle 中刪除 ProGuard 時(shí),它不會(huì)崩潰.

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

當(dāng)我在 Ant 構(gòu)建中使用 ProGuard 時(shí),它可以工作(我最近遷移到 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 工具使用這個(gè) ProGuard 配置來實(shí)現(xiàn)它:

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);
}

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

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')

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

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

相關(guān)文檔推薦

IncompatibleClassChangeError after updating to Android Build Tools 25.1.6 GCM / FCM(更新到 Android Build Tools 25.1.6 GCM/FCM 后出現(xiàn) IncompatibleClassChangeError)
How to get current flavor in gradle(如何在 gradle 中獲取當(dāng)前風(fēng)味)
How to fix quot;unexpected element lt;queriesgt; found in lt;manifestgt;quot; error?(如何修復(fù)“意外元素lt;查詢gt;在“清單中找到錯(cuò)誤?)
Multi flavor app based on multi flavor library in Android Gradle(基于 Android Gradle 中多風(fēng)味庫的多風(fēng)味應(yīng)用)
Android dependency has different version for the compile and runtime(Android 依賴在編譯和運(yùn)行時(shí)有不同的版本)
Transitive dependencies for local aar library(本地 aar 庫的傳遞依賴)
主站蜘蛛池模板: 在线观看成人精品 | 手机在线观看av | 99久久精品一区二区毛片吞精 | 男女深夜网站 | 日韩视频在线观看 | 亚洲一区二区精品视频 | 日韩午夜精品 | 久久国| 香蕉久久久 | 欧美一级二级三级 | 国产福利精品一区 | 99re| 欧美一区二区三区国产精品 | 国产99视频精品免费播放照片 | 免费国产一区二区 | 日韩欧美高清 | 亚洲三级在线 | 一区二区三区中文字幕 | 完全免费在线视频 | www.国产一区 | 羞羞视频网站免费看 | 国产一区二区在线免费播放 | 美女131mm久久爽爽免费 | 国产免费一二三区 | 99久久久国产精品免费消防器 | 99久久婷婷 | 日韩成人在线播放 | 亚洲精品一区二区三区中文字幕 | 日韩久久网 | 高清黄色 | 黄色大片在线免费观看 | 少妇一级淫片免费放播放 | 在线视频一区二区 | 欧美一级二级三级视频 | 欧美福利| 久热m3u8 | 久热中文字幕 | 欧洲尺码日本国产精品 | 国产在线视频网 | 成人在线小视频 | 狠狠干天天干 |