在开发中使用 minifyEnabled=true 是不行的;]



我刚刚将Android Studio更新到3.5。

顺便说一句,更新了 Gradle 版本和几个库。

令我惊讶的是,该应用程序不适合单个 DEX(使用超过 73,500 种方法,据我所知,以前是调试版本~50K)

我做了哪些更改:

Kotlin 1.3.41 -> 1.3.50
classpath 'com.android.tools.build:gradle:3.5.0' from 3.4.2
classpath 'com.google.gms:google-services:4.3.1' from 4.3.0
implementation 'com.google.android.gms:play-services-ads:18.1.1' from 18.1.0
implementation 'com.google.firebase:firebase-core:17.1.0' from 17.0.1

新版本APK的方法(60)比前一个少(26760)。

我遇到的其他问题: NDK 解决结果:项目设置:Gradle 模型版本 = 5.4.1,NDK 版本为未知错误

使用安卓X的应用程序。

应用程序正在编译并立即工作,设置时正常

debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}

我从旧版本的 Android Studio 导入了设置。也许这就是问题所在? 或者没有问题,我必须协调并使用 multiDEX(用于开发)并在发布中 apk 丢弃 multiDEX?。对于调试版本,multidex 会比 minifyEnabled 更好吗?

改变:

debug {
// minifyEnabled true
// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
multiDexEnabled true
}

当我使用 APK>=21 运行模拟器时,正在使用 multiDex。 之前的 21 API 将仅使用版本 APK 进行测试。

顺便说一句,APK分析我的调试版本显示: class.dex 54806 方法 类2.dex 1107方法 类3.DEX 6725

方法总计:62638。

当我禁用多德克斯时。 无法将请求的类放入单个 dex 文件中(# 方法:73883> 65536) ;))

有些不对劲;)

全局设置或同时设置multiDexEnabled true构建类型 - 否则发布版本将超过单个DEX文件的64k限制。 调试和发布构建可以有不同的方法计数,因为它们是两个合并的源代码集 - 未使用的类也可能被剥离(multiDexEnabled true还添加了它自己的库)。虽然调试构建minifyEnabled true是无用的......我真的不明白为什么有人打算这样做。当 APK 中的非公共类/方法名称与 IDE 中的类名不匹配时,可能会发现很难对其进行调试,因为断点不会捕获;这就像向自己的腿开枪一样。

如果单个库更新引入了新的依赖项,则可以添加许多类和方法。

相关内容

最新更新