解决单个DEX文件方法数超过65536的解决方案
2016-06-06 15:13
519 查看
决定使用Google官方的multiDex解决。
1.修改gradle脚本来产生多dex。
2.修改manifest 使用MulitDexApplication。
步骤1.在gradle脚本里写上:
在gradle文件中配置完就可以进行顺利编译了
步骤2. manifest声明修改
如果有自己的Application,继承MulitDexApplication。如果当前代码已经继承自其它Application没办法修改那也行,就重写 Application的attachBaseContext()这个方法。
r
文档还写明了multiDex support lib 的局限:
1.在应用安装到手机上的时候dex文件的安装是复杂的(complex)有可能会因为第二个dex文件太大导致ANR。请用proguard优化你的代码。呵呵
2.使用了mulitDex的App有可能在4.0(api level 14)以前的机器上无法启动,因为Dalvik linearAlloc bug(Issue22586) 。请多多测试自祈多福。用proguard优化你的代码将减少该bug几率。呵呵
3.使用了mulitDex的App在runtime期间有可能因为Dalvik linearAlloc limit (Issue 78035) Crash。该内存分配限制在 4.0版本被增大,但是5.0以下的机器上的Apps依然会存在这个限制。
4.主dex被dalvik虚拟机执行时候,哪些类必须在主dex文件里面这个问题比较复杂。build tools 可以搞定这个问题。但是如果你代码存在反射和native的调用也不保证100%正确。呵呵
1.修改gradle脚本来产生多dex。
2.修改manifest 使用MulitDexApplication。
步骤1.在gradle脚本里写上:
在gradle文件中配置完就可以进行顺利编译了
android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.0' }
步骤2. manifest声明修改
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> </manifest>
如果有自己的Application,继承MulitDexApplication。如果当前代码已经继承自其它Application没办法修改那也行,就重写 Application的attachBaseContext()这个方法。
@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
r
文档还写明了multiDex support lib 的局限:
1.在应用安装到手机上的时候dex文件的安装是复杂的(complex)有可能会因为第二个dex文件太大导致ANR。请用proguard优化你的代码。呵呵
2.使用了mulitDex的App有可能在4.0(api level 14)以前的机器上无法启动,因为Dalvik linearAlloc bug(Issue22586) 。请多多测试自祈多福。用proguard优化你的代码将减少该bug几率。呵呵
3.使用了mulitDex的App在runtime期间有可能因为Dalvik linearAlloc limit (Issue 78035) Crash。该内存分配限制在 4.0版本被增大,但是5.0以下的机器上的Apps依然会存在这个限制。
4.主dex被dalvik虚拟机执行时候,哪些类必须在主dex文件里面这个问题比较复杂。build tools 可以搞定这个问题。但是如果你代码存在反射和native的调用也不保证100%正确。呵呵
相关文章推荐
- Linux crontab定时执行任务 命令格式与详细例子
- EL表达式
- 使用Validator做SpringMVC的验证框架 - 自定义验证组件
- java定时器的几种用法[转]
- AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案
- 运行Keras例子程序:imdb_cnn.py
- 解决Android Studio加载第三方jar包,出现包重复加载的问题
- display:inline、block、inline-block的区别,与下文float相关。
- web第五课html课堂笔记
- zoom和transform:scale的区别
- 使用easyBCD软件双系统安装ubuntu-14.04-desktop-amd64.iso
- 欢迎使用CSDN-markdown编辑器
- swift--用 Swift 编写面向协议的网络请求
- /var/log目录下的20个Linux日志文件功能详解
- 数据库的拆分
- python生成器(转)
- Installing Libpng on Ubuntu Linux
- windows 2012R2 11gRAC(11204)------INS-35423报错
- 四种方式实现SQLServer 分页查询
- 全国首例微信三级分销被认定为传销,三级分销“身世”揭秘(上)