我怎样才能检查android中的dex数?

时间:2017-01-20 07:32:24

标签: android multidex

我的项目的gradle文件如下所示。

android {
    compileSdkVersion 23
    buildToolsVersion "25.0.1"

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
    }
}

当"生成已签名的APK"时,我可以看到DexIndexOverflowException。在Android Studio中。

Error:Execution failed for task ':MyProject:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: 
com.android.ide.common.process.ProcessException: 
java.util.concurrent.ExecutionException: 
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

我已经知道此错误并阅读了文档(https://developer.android.com/studio/build/multidex.html) 我想查看已经超过了多少dex。

例如:

trouble writing output:
Too many field references: 99999; max is 65536.
You may try using --multi-dex option.

请找到解决方案 谢谢

5 个答案:

答案 0 :(得分:3)

Android Studio有APK analyzer显示此信息,不需要gradle插件。

答案 1 :(得分:1)

使用此插件在每次构建时获取APK中方法引用的数量。

<强> dexcount

答案 2 :(得分:1)

看看this。我正在寻找相同的东西,并在这里找到了答案。基本上,您必须生成项目的APK,然后转到“构建”->“分析APK”,然后单击classes.dex,然后在下面,您将确切地看到项目定义和引用了多少种方法。

答案 3 :(得分:0)

Android studio有一个名为Android Methods Count的插件,它会显示每个依赖项的方法数。

还有一个cli工具可供选择 https://github.com/mihaip/dex-method-counts

答案 4 :(得分:0)

我修改了dx.jar源以显示方法计数。

https://github.com/b1uec0in/dx

输出样本

string ID count: 91,857
type ID count: 12,636
proto ID count: 18,417
field ID count: 72,011 (max:65535 +6476)
method ID count: 81,181 (max:65535 +15646)

用此dx.jar替换你的dx.jar。