gpt4 book ai didi

android - 使用Gradle将外部库拆分为单独的dex文件解决Android Dalvik 64k方法限制

转载 作者:IT老高 更新时间:2023-10-28 22:25:38 25 4
gpt4 key购买 nike

有没有一种正确/简单的方法来解决使用 Gradle 的 64k 方法限制?

我的意思是一些自定义 Gradle 任务,使用预 dexed jar 来创建单独的 dex 文件,而不是单个 classes.dex

谢谢

伊万

当前状态

目前,我在 GMS 上苦苦挣扎:它引入了 20k 种方法来使用 Analytics。我使用 Proguard 去除不需要的东西,但仍然...... 72k 方法和计数......

我可以使用 dx 参数 --multi-dexclasses.dex 拆分为两个文件。我实现了手动编辑

sdk/build-tools/android-4.4W/dx

并像这样编辑最后一行:

exec java $javaOpts -jar "$jarpath" --multi-dex "$@"

我的 APK 文件现在包含 __classes.dex__ 和 __classes2.dex__

我正在尝试使用几种方法动态加载第二个文件:

不幸的是,仍然没有运气。我真的希望一些 Google/Facebook/Square 大师可以提供一个适当的解决方案。

最佳答案

Android Gradle 插件 2.2.0 更新: 无法再访问 dex 任务,但作为交换,引入了 additionalParameters作为 dexOptions 的一部分。像这样使用它

android {
dexOptions {
additionalParameters += '--minimal-main-dex'
// additionalParameters += '--main-dex-list=$projectDir/<filename>'.toString()
// additionalParameters += '--set-max-idx-number=55000'
}
}

Android Gradle 插件 0.14.0 更新: 现在通过新的 multiDexEnabled true 指令直接支持多 dex(需要 build-tools 21.1.0,支持存储库修订版 8 和 Android Studio 0.9)。

原答案:自从 Gradle Android 插件 0.9.0 以来,您实际上可以--multi-dex 传递给 dx 将其添加到您应用的 build.gradle 文件中:

afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = ['--multi-dex']
} else {
dx.additionalParameters += '--multi-dex'
}

// Add more additional parameters like this:
dx.additionalParameters += '--main-dex-list=class-list.txt'
dx.additionalParameters += '--minimal-main-dex'
}
}

到目前为止,正在创建多个 dex 文件。要真正使用多个 dex 文件,请查看 https://github.com/casidiablo/multidex (这是 Google 即将推出的 MultiDex 支持库的一个分支)。

关于android - 使用Gradle将外部库拆分为单独的dex文件解决Android Dalvik 64k方法限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23614095/

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