方法参考太多:107085;扩展MultiDexApplication后,max为65536

时间:2015-07-16 12:05:38

标签: android multidex android-multidex

[2015-07-16 17:32:14 - Loneous] Dx 
trouble writing output: Too many method references: 107085; max is 65536.
You may try using --multi-dex option.

我有这个错误,我已经使用MultiDexApplication扩展了我的Application类,但我仍然收到此错误。

@Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

还在我的应用程序中添加了attachBaseContext方法。

请指导我如何避免此编译错误并成功运行我的应用程序。

2 个答案:

答案 0 :(得分:5)

Multidex应该是你最后的手段,首先尝试模糊你的代码,这样签名的APK会变得更苗条(它会删除方法)。之后尝试查看您正在使用的第三方库以及他们拥有多少种方法 - 您可以通过此在线工具轻松完成:

只需将APK放在那里。

http://inloop.github.io/apk-method-count/

获得结果后,尝试确定您当前使用的某些库是否可以替换为具有较少方法的类似库。

另外:

  • set" minifyEnabled = true"在您的gradle文件中。

  • 如果您使用支持库,您可以使用gradle'排除模块'来减少其中的方法数量(大约20K(!!))。并选择您实际使用的支持库的模块。

无论如何,107k方法似乎对任何应用来说都太过分了。

答案 1 :(得分:2)

  1. 编辑manifest.xml并添加对MultidexApplication类的引用

    <application android:name="your.package.MyApplicationWhichExtendsMultidex">
    
  2. 转到您的grandle构建文件并添加

    multiDexEnabled true
    

    以及对multidex支持的依赖

    compile 'com.android.support:multidex:1.0.0'
    
  3. 我不知道Eclipse如何处理Android项目,但如果它不使用Gradle则需要在构建期间传递--multi-dex选项(如错误所述)。如果您仍在使用Ant,请移至Gradle或Maven。

    I've found for you the official documentation about how to fix this problem