Android 9崩溃时minifyEnabled和multiDexEnabled

时间:2019-01-23 23:27:15

标签: android minify android-proguard android-multidex

我试图通过将minifyEnabled和rinkleResources设置为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:

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

我也已经在我的应用程序类中添加了这个:

override fun attachBaseContext(base: Context?) {
    MultiDex.install(this)
    super.attachBaseContext(base)
}

如果我尝试启动发行版,则只会出现此错误。当我使用相同的设置启动调试版本时,一切正常。而且,如果我在我的发行版本中添加“ debuggable true”,也可以。只有在尝试启动如上所述的发行版本时,才会发生这种情况。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

  

版本中执行 minifyEnabled true 时,这意味着您需要   提及所有您不想混淆的文件,例如。   在proguard-rules.pro

中提及BaseApplication

请将以下内容写在 proguard-rules.pro 行中,它将使用BaseApplication Class删除上述错误

-keep public class * extends android.app.Application

请进一步参考此link,以进一步了解proguard。

  

如果您面临更多问题,请分享Proguard的内容   文件。