因为公司的项目集成了很多无用的jar包,最近在添加Google地图的时候,出现了一个传说中的错误,方法数超过64k(65k),一看到我就吓呆了,之前我在其他博客看过这种情况,可是我一直没有遇到过,一直也不了解这是什么鬼。下面跟大家粗略介绍下什么是方法数超过64k(65k)和官方给出的解决办法。
到底是64k还是65k呢?不要问我,我也不知道。
看到了杰风居大大的博客里面写道说:
都没有错,同一个问题,只是不同的说法而已:
65536按1000算的话,是65k=65x1000
65536按1024算的话,是64k=64x1024
重点是65536=2^16,请大家记住这个数字。
报错提示
![](https://img.haomeiwen.com/i915812/1b1e482c4645755d.png)
解决办法
- 方案一:分割Dex,官方链接:https://developer.android.com/studio/build/multidex.html#about
- 方案二:使用插件化框架 栗子:https://github.com/singwhatiwanna/dynamic-load-apk
下面我们用方案一:分割Dex方法来解决,方案二我暂时不会,学会了再告诉大家
-
首先我们要在module的build.gradle的dependencies 中添加:
compile 'com.android.support:multidex:1.0.1'
multidex.png
-
还有在在 defaultConfig 中添加:
multiDexEnabled true
![](https://img.haomeiwen.com/i915812/927d2895b806ecaf.png)
- 在 AndroidManifest.xml 中的 application 标签中添加
![](https://img.haomeiwen.com/i915812/3a89bd141194cc4c.png)
温馨提示:如果你的APP继承了application,需要重写
attachBaseContext(Context base)
方法和继承MultiDexApplication
![](https://img.haomeiwen.com/i915812/b44358c969fbd45b.png)
-
代码
继承.png
网友评论
Error:The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
都没有错,同一个问题,只是不同的说法而已:
65536按1000算的话,是65k=65x1000
65536按1024算的话,是64k=64x1024