在用于调试版本的Application和用于版本构建的MultiDexApplication之间切换

时间:2017-07-28 02:50:38

标签: android android-multidex

当应用程序类扩展MultiDex应用程序时,我的一个测试手机无法使用ADB安装应用程序。

我尝试在build.gradle上实现this,我的应用程序类扩展了MultiDexApplication但无法编译。

buildTypes {
 release {
    multiDexEnabled false
 }
 debug {
    multiDexEnabled true
 }
}

参考文献:  1. https://developer.android.com/studio/build/multidex.html  2. Can I enable multidex in Android debug build only? 3. Conditionally inherit from class

2 个答案:

答案 0 :(得分:0)

让您的Application课程延长MultidexApplication,但请将此行添加到attachBaseContext

if (BuildConfig.DEBUG) {
    MultiDex.install(this);
}

答案 1 :(得分:0)

也许我可以建议一种不同的方法。 我假设您在发布版本中使用了proguard,这就是为什么您不需要使用multidex进行发布

如果在调试时将minifyEnabled设置为true并将useProguard设置为false,则会删除调试版本中的所有死代码,但不会使用任何像混淆一样的proguard优化。

您需要将您的proguard规则设置移动到默认配置,以便minify知道要保留哪些文件。

此方法可以帮助您避免在调试版本上使用multidex。

defaultConfig {
    ...
    proguardFile 'proguard-rules.pro'
    proguardFiles getDefaultProguardFile('proguard-android.txt')
}

debug {
    ...
    minifyEnabled true
    useProguard false
}

release {
    ...
    minifyEnabled true
}