【问题标题】:Using minifyEnabled=true is NOT OK in development ;]在开发中使用 minifyEnabled=true 是不行的;]
【发布时间】:2019-08-24 06:29:05
【问题描述】:

我刚刚将 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 版本为 UNKNOWN 错误

使用 AndroidX 的应用。

应用程序正在编译,设置后现在可以正常工作

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

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

更改:

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

当我使用 APK >=21 运行模拟器时,它正在使用 multiDex。 Prior 21 API 将仅使用发布版 APK 进行测试。

BTW APK 分析我的调试版本显示: classes.dex 54806 个方法 classes2.dex 1107 个方法 classes3.dex 6725 个方法

总数:62638。

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

有些不对劲;)

【问题讨论】:

    标签: android android-studio


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。在发布时我有 minifyEnable 所以在缩小后不应超过 64K 限制。因此,现在仅将 multiDexEnabled 用于开发(调试)。更新 3 个库的奇怪情况如此显着增加了方法的数量
    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 2019-01-14
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2015-10-14
    • 2018-11-13
    相关资源
    最近更新 更多