Android 9 崩溃 minifyEnabled 和 multiDexEnabled
Android 9 crash minifyEnabled and multiDexEnabled
我试图通过将 minifyEnabled 和 shrinkResources 设置为 true 来缩小我的 apk 大小,但在启动时我的应用程序崩溃并出现此错误(简短版本):
java.lang.ClassNotFoundException: Didn't find class "...BaseApplication" on path: DexPathList...
我找到了这个错误的许多解决方案,但似乎每个人都只在 android 4.x.x 上崩溃过。我正在 android 9 上测试,但仍然有这个问题。 Gradle 看起来像这样:
defaultConfig {
minSdkVersion 17
targetSdkVersion 28
versionName "1.0"
multiDexEnabled true
}
和构建类型:
buildTypes {
debug {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
而且我还在我的申请中添加了这个 class:
override fun attachBaseContext(base: Context?) {
MultiDex.install(this)
super.attachBaseContext(base)
}
如果我尝试启动发布版本,我只会遇到此错误。当我使用相同的设置启动调试变体时,一切正常。而且,如果我将 "debuggable true" 添加到我的发布变体中,也可以。它只发生在我尝试像上面描述的那样开始我的发布变体时。有人有想法吗?
when you do minifyEnabled true in release it means you need to
mention what all files you dont want to obfuscate for eg.
BaseApplication by mentioning it in proguard-rules.pro
请在 proguard-rules.pro 中写下一行,它将消除 BaseApplication Class
的上述错误
-keep public class * extends android.app.Application
请参考此link以进一步了解proguard。
If you are facing more problem kindly share content from proguard
file.
我试图通过将 minifyEnabled 和 shrinkResources 设置为 true 来缩小我的 apk 大小,但在启动时我的应用程序崩溃并出现此错误(简短版本):
java.lang.ClassNotFoundException: Didn't find class "...BaseApplication" on path: DexPathList...
我找到了这个错误的许多解决方案,但似乎每个人都只在 android 4.x.x 上崩溃过。我正在 android 9 上测试,但仍然有这个问题。 Gradle 看起来像这样:
defaultConfig {
minSdkVersion 17
targetSdkVersion 28
versionName "1.0"
multiDexEnabled true
}
和构建类型:
buildTypes {
debug {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
而且我还在我的申请中添加了这个 class:
override fun attachBaseContext(base: Context?) {
MultiDex.install(this)
super.attachBaseContext(base)
}
如果我尝试启动发布版本,我只会遇到此错误。当我使用相同的设置启动调试变体时,一切正常。而且,如果我将 "debuggable true" 添加到我的发布变体中,也可以。它只发生在我尝试像上面描述的那样开始我的发布变体时。有人有想法吗?
when you do minifyEnabled true in release it means you need to mention what all files you dont want to obfuscate for eg. BaseApplication by mentioning it in proguard-rules.pro
请在 proguard-rules.pro 中写下一行,它将消除 BaseApplication Class
的上述错误-keep public class * extends android.app.Application
请参考此link以进一步了解proguard。
If you are facing more problem kindly share content from proguard file.