因为公司的项目集成了很多无用的jar包,最近在添加Google地图的时候,出现了一个传说中的错误,方法数超过64k(65k),一看到我就吓呆了,之前我在其他博客看过这种情况,可是我一直没有遇到过,一直也不了解这是什么鬼。下面跟大家粗略介绍下什么是方法数超过64k(65k)和官方给出的解决办法。
到底是64k还是65k呢?不要问我,我也不知道。
看到了杰风居大大的博客里面写道说:
都没有错,同一个问题,只是不同的说法而已:
65536按1000算的话,是65k=65x1000
65536按1024算的话,是64k=64x1024
重点是65536=2^16,请大家记住这个数字。
报错提示
解决办法
- 方案一:分割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'
还有在在 defaultConfig 中添加:
multiDexEnabled true
- 在 AndroidManifest.xml 中的 application 标签中添加
温馨提示:如果你的APP继承了application,需要重写
attachBaseContext(Context base)
方法和继承MultiDexApplication
-
代码