可能出现的错误信息:

Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

说明:这个方法是谷歌提供的.链接如下:
https://developer.android.com/studio/build/multidex.html

解决步骤:

1.步骤1:

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.步骤2:

让应用支持多DEX文件。在MultiDexApplication JavaDoc中描述了三种可选方法:

1.在AndroidManifest.xml的application中声明

android.support.multidex.MultiDexApplication;

2.如果你已经有自己的Application类,让其继承MultiDexApplication;

3.如果你的Application类已经继承自其它类,你不想/能修改它,那么可以重写attachBaseContext()方法:

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

附言:

Multidex仍有一些限制:

  1. DEX文件安装到设备的过程非常复杂,如果第二个DEX文件太大,可能导致应用无响应。此时应该使用ProGuard减小DEX文件的大小。

  2. 由于Dalvik linearAlloc的Bug,应用可能无法在Android 4.0之前的版本启动,如果你的应用要支持这些版本就要多执行测试。

  3. 同样因为Dalvik linearAlloc的限制,如果请求大量内存可能导致崩溃。Dalvik linearAlloc是一个固定大小的缓冲区。在应用的安装过程中,系统会运行一个名为dexopt的程序为该应用在当前机型中运行做准备。dexopt使用LinearAlloc来存储应用的方法信息。Android 2.2和2.3的缓冲区只有5MB,Android 4.x提高到了8MB或16MB。当方法数量过多导致超出缓冲区大小时,会造成dexopt崩溃。
    Multidex构建工具还不支持指定哪些类必须包含在首个DEX文件中,因此可能会导致某些类库(例如某个类库需要从原生代码访问Java代码)无法使用。

更多相关文章

  1. Android[art]-Android(安卓)dex,odex,oat,vdex,art文件结构学习总结
  2. android thread Interrupte使用方法
  3. tiny210的android编译过程
  4. android window.requestWindowFeature()常用方法(转)
  5. Android(安卓)Studio 用 JNI 实现与原生代码通信
  6. android asset中 zip包解压sdcard
  7. android中webviewjs与java的相互调用
  8. Android隐藏标题栏的四种方法
  9. Android(安卓)menu使用

随机推荐

  1. centos7 磁盘空间不足,扩容
  2. 在复杂业务体系中DevOps理论及方法的实践
  3. 京东app首页布局
  4. 第一篇php博客hehe
  5. 好玩、有趣的 Linux 命令学习神器 kmdr!
  6. 百分点认知智能实验室:基于不完全标注样本
  7. 软件开发之交付清单详解
  8. kubernetes ingress 原理、部署
  9. 一个Python程序,可以帮助您自动备份文件
  10. 系统之眼!Linux系统性能监控工具Glances