gpt4 book ai didi

android - 如何使用 "minifyEnabled true"调试应用程序并在 Release模式下禁用 MultiDexApplication

转载 作者:太空狗 更新时间:2023-10-29 13:03:51 24 4
gpt4 key购买 nike

build.gradle有行时:

buildTypes {
debug{
minifyEnabled true
}

我们无法调试应用程序。一个解决方案是写:

    ...
multiDexEnabled true
}
buildTypes {
debug{
minifyEnabled false
debuggable true
}

...
implementation 'com.android.support:multidex:1.0.3'

然后在 MyApplication 文件中写入:

public class MyApplication extends MultiDexApplication

但是当我们转向 Release模式时,应用程序仍然继承自 MultiDexApplication。因此,旧设备可能存在一些兼容性问题。例如,在 Gradle 中,有没有办法在 Release模式下避免 MultiDexApplication 并仅在 Debug模式下保留它?我读了https://xrubio.com/2016/10/disabling-removing-code-on-release-builds/但不确定是否有帮助。

最佳答案

一个选择是使用 build variants .基本上,这使您可以指定仅包含在应用程序的调试或发布版本中的代码。为此,您可以将只需要的代码放在 src/debugsrc/release 而不是 src/main 中的一个版本中。究竟什么代码放在哪里取决于你。您在这里有几个选择。

1. 你可以有两个 MyApplication 副本,一个扩展 src/debug 中的 MultiDexApplication 和其他扩展 src/release 中的 Application 基类。这样,多 dex 代码仅包含在调试版本中,而不包含在发布版本中。您仍然在 src/main/AndroidManifest.xml 中指定您的应用程序类。如果您的 Application 类中没有任何其他内容,则此选项是最佳选择。

2. 如果您的应用程序类中的重要代码超出了 multi-dex,那么拥有一个包含所有其他内容的基本抽象类并在 src/中扩展它可能会更容易debugsrc/main,将以下内容添加到您的调试版本(如 here 所述):

public class MyApplication extends BaseApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}

3. 第三个选项是在调试和发布中实际声明不同的应用程序类。这可以通过在 src/debug/AndroidManifest.xml 和等效版本中声明来完成。然后,您可以为所欲为,包括不在一个版本中声明应用程序类。如果您的类中有几个不同的部分在发布和调试之间是不同的,或者不需要其中之一的应用程序类,那么这很有效。

关于android - 如何使用 "minifyEnabled true"调试应用程序并在 Release模式下禁用 MultiDexApplication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51255106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com