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

Sco*_*ion 1 android 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.
Run Code Online (Sandbox Code Playgroud)

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

@Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*rky 5

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

只需将APK放在那里.

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

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

此外:

  • 在gradle文件中设置"minifyEnabled = true".

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

无论如何107K方法似乎对任何应用程序都有点太多了.