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.