使用摇篮到分离DEX文件分割外部库来解决Android的Dalvik的64K方式限制 [英] Using Gradle to split external libraries in separated dex files to solve Android Dalvik 64k methods limit

查看:277
本文介绍了使用摇篮到分离DEX文件分割外部库来解决Android的Dalvik的64K方式限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一个适当/易办法用摇篮,解决了64K的方法限制?

Is there a proper/easy way to solve the 64k methods limit using Gradle?

我的意思是一些自定义的摇篮任务使用,而不是一个单一的 classes.dex

I mean some custom Gradle task to use pre-dexed jars to create separated dex files, instead of a single classes.dex.

感谢您

伊万

目前,我挣扎与大湄公河次区域:它带来了20K的方法来使用Analytics(分析)。我用Proguard的剥离下来什么也不需要,但仍... 72K方法和计数...

Currently, I'm struggling with GMS: it brings in 20k methods to use Analytics. I use Proguard to strip down what's not need, but still... 72k methods and counting...

我可以在两种文件分割 classes.dex 使用 DX 参数 - 多DEX 。我做到了这一点手工编辑

I can split classes.dex in two file using dx parameter --multi-dex. I achieved it manually editing

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

和这样的编辑最后一行:

and editing last line like this:

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

我的APK文件现在包含 __ classes.dex__和__classes2.dex __

我试图动态加载第二个文件有几个方法:

I'm trying to dynamically load the second file with a few methods:

  • Dexdex link
  • Dexter link
  • Secondary dex gradle link

不幸的是仍然没有运气。我真的希望一些谷歌/ Facebook的/方大师可以提供一个妥善的解决办法。

Unfortunately still no luck. I really hope some Google/Facebook/Square guru can provide a proper solution.

推荐答案

编辑:最近发布的摇篮Android插件0.14.0 通过新的 multiDexEnabled真正指令(需要运行工具,可以直接多DEX支持21.1.0,支持存储库版本8和Android工作室0.9)。

The recently released Gradle Android plugin 0.14.0 has direct multi-dex support via the new multiDexEnabled true directive (requires build-tools 21.1.0, support repository revision 8, and Android Studio 0.9).

自从摇篮Android插件0.9.0你真正的可以的的通 - 多DEX DX 加入这个给你的应用程序的 build.gradle 文件:

Ever since Gradle Android plugin 0.9.0 you actually can pass the --multi-dex to dx by adding this to you app's build.gradle file:

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 (这是谷歌即将推出的MultiDex支持库的一个分支)。

So far for the creating he multiple dex files. To actually use the multiple dex files, take a look at https://github.com/casidiablo/multidex (which is a fork of Google's upcoming MultiDex support library).

这篇关于使用摇篮到分离DEX文件分割外部库来解决Android的Dalvik的64K方式限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆