病症

Conversion to Dalvik format failed:
Unable to execute dex: method ID not in [0, 0xffff]: 65536
trouble writing output:
Too many field references: 131000; max is 65536.
You may try using --multi-dex option.

有上述提示错误或者类似的字样时,你就很可能中招了。
65536是在一个单独的dex文件中,可以调用的引用(可以理解为方法数)的最大数目。
这些引用包括:安卓framework 方法,library 方法和你自己定义的方法。

方法

很显然一个dex可以允许65536的方法,使用多个不就结了吗?下面讲述一下mulitdex的配置方法。

  • 在Android 5之前
    在Android5之前,默认一个app中只有一个dex文件,我们可以通关过添加support包来完成。
    1.修改build.gradle配置
android {compileSdkVersion 21buildToolsVersion "21.1.0"defaultConfig {...minSdkVersion 14targetSdkVersion 21...// Enabling multidex support.multiDexEnabled true}...
}dependencies {
//add multidex support librarycompile 'com.android.support:multidex:1.0.0'
}

2.对Application进行调整
这里有三种方法
1.如果你没有定义你自己的Application
声明android.support.multidex.MultiDexApplication,作为你的Application
2.如果已经定义你的Application
这里有两种方法:
1.修改extends Application为 extends MultiDexApplication
2.在原来的Application中添加如下代码:

protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
  • 在Android5之后
    api 21系统的运行环境ART,默认支持多dex文件。在APP安装时,ART将所有的dex文件,预编译成一个.oat文件供app调用。

精简代码,避免64K限制

虽然有multidex解决方案,仍然有许多不近人意的地方,所以,我们应该尽可能的避免64k问题。
1.删除没有用的代码&&相关类库中的代码
包含一个大的类库,仅仅使用一小部分的功能,尤其需要严格处理
2.使用Proguard工具,精简代码

Multidex support library限制

1.由于Dalvik linearAlloc bug (Issue 22586)问题,APP在android4一下,可能无法运行,需要做大量的测试;
2.在APP启动的时候,可能会引发ANR(Android Not Response);
3.会造成更多的内存开销,导致APP崩溃;
4.由于APP内代码调用的复杂性,可能导致某些功能无法使用。

在APP开发时,加快build

使用multidex打包时,需要对放入primary dex的class进行复杂计算,导致build时间显著增加。通过下面的配置,可以在开发中加快build过程。

android {productFlavors {// Define separate dev and prod product flavors.dev {// dev utilizes minSDKVersion = 21 to allow the Android gradle plugin// to pre-dex each module and produce an APK that can be tested on// Android Lollipop without time consuming dex merging processes.minSdkVersion 21}prod {// The actual minSdkVersion for the application.minSdkVersion 14}}...}
dependencies {compile 'com.android.support:multidex:1.0.0'
}

在minSDK>=api 21,APP自动支持多dex文件,build时,仅仅需要将修改的dex进行更新一下即可。

翻译地址

https://developer.android.com/studio/build/multidex.html#dev-build

APP中方法超过64K的解决办法相关推荐

  1. 本文主要讲述如何开通自己的博客。若读者不想或已经知道如何开通使用博客,那么就可以跳过。 一直以来,想把自己在学习过程中遇到的问题及解决办法共享给志同道合的人,那么如何分享自己的见解呢?有如下方法

    本 本文主要讲述如何开通自己的博客.若读者不想或已经知道如何开通使用博客,那么就可以跳过. 一直以来,想把自己在学习过程中遇到的问题及解决办法共享给志同道合的人,那么如何分享自己的见解呢?有如下方法, ...

  2. 合成实验中,十三种后处理方法:实验室常用13种后处理方法、故障及解决办法

    合成实验中,十三种后处理方法:实验室常用13种后处理方法.故障及解决办法 1.有机酸碱性化合物的分离提纯 具有酸碱性基团的有机化合物,可以得失质子形成离子化合物,而离子化合物与原来的母体化合物具有不同 ...

  3. GDI+中发生一般性错误的解决办法 from http://www.cnblogs.com/winzheng/archive/2008/12/23/1360440.html...

    GDI+中发生一般性错误的解决办法 这个错误经常发生,代码如下:    private  static  byte[] GetBytes (Image image)         {         ...

  4. Windows中无法删除文件的解决办法

    Windows中无法删除文件的解决办法 有时候我们在删除某个文件或文件夹时,系统提示无法删除,这确实令人十分头疼,现在我们就来看看解决的办法. 一.常规解决办法: 1.注消或重启电脑,然后再试着删除. ...

  5. 深度学习中神经网络模型压缩的解决办法( flask API、onnx、ncnn在嵌入式、流媒体端口应用)

    深度学习中神经网络模型压缩的解决办法( flask API.onnx.ncnn在嵌入式.流媒体端口应用) 1 开发环境的创建 1.1 Conda简介 1.2 miniconda 1.3 conda操作 ...

  6. redhat enterprise 5 在 VMware 6.5 中中文显示乱码的解决办法

    redhat enterprise 5 在 VMware 6.5 中中文显示乱码的解决办法 事情的经过是这样的 记得以前曾经在VMware 5.5.3 上装过redhat 估计是9吧 当初我选的是图形 ...

  7. RS错误RSV-VAL-0032之项目未在布局中引用的3种解决办法

    如下图所示,我用RS新建了一个空白页面,拖入了一个列表,给该列表新建了一个条件样式 条件样式如下所示,表达式来自查询1 运行,报错如下图所示 原因就是条件样式使用到了查询1中的数据项1但是数据项1在报 ...

  8. 【ML/DL】python3学习《机器学习实战》书中的报错及解决办法

    python3学习<机器学习实战>书中的报错及解决办法(更新中) <机器学习实战>是一本很不错的书,其采用的是py2的语法格式,在用最新的python3.6编写代码的过程中,书 ...

  9. 关于cmd中路径包含空格的解决办法

    关于cmd中路径包含空格的解决办法 很多人曾经都纠结于cmd中路径没有空格,昨天看到一篇文章,深受启发 1)最简单的方法就是给路径名上加上"" 然后cd或执行即可: 2)用缩写.比 ...

  10. VUE项目中遇到的问题和解决办法 (1) route.query刷新后丢失

    VUE项目中遇到的问题和解决办法 (1) route.query刷新后丢失 背景:今天在写项目时需要用到,route.query获取参数,本来这是一个很简单的问题,但是我遇到了参数丢失的问题 环境: ...

最新文章

  1. “ compiler-rt”运行时runtime库
  2. pandas分层索引(层级索引、MultiIndex)的创建、取值、切片、统计计算以及普通索引和层级索引的转换方法
  3. 企业网站Solaris环境DNS服务器创建
  4. 10-03视图的优缺点及注意事项
  5. 10个开源的PHP网站内容管理系统
  6. 【产品]如何建立交互设计自查表
  7. java 常用类库_JAVA(三)JAVA常用类库/JAVA IO
  8. WPF下递归生成树形数据绑定到TreeView上
  9. 接口里面能有构造器吗?_家用弱电箱里空空如也,装修时应该怎么在里面接线呢?能拆掉吗?...
  10. Postfix 电子邮件系统精要
  11. 在云面前,为何Cisco,Dell和HP都是Loser
  12. PLC控制系统在我国的发展及应用
  13. C语言if的所有用法,关于if的用法
  14. python金融分析小知识(23)——matplotlib面向对象绘制股票收盘价曲线
  15. Leetcode1278
  16. 云原生小课堂|Envoy请求流程源码解析(三):请求解析
  17. LoadRunner12 进行协议顾问分析时浏览器选择问题
  18. 发表科技类论文的期刊《科技新时代》杂志简介及投稿须知
  19. C文件编译生产exe可执行文件
  20. BZOJ1163: [Baltic2008]Mafia

热门文章

  1. Proteus,keil5仿真运行stm32程序,流水灯详细教程
  2. 简单 黑苹果dsdt教程_提取DSDT和SSDT教程
  3. c语言程序细菌分组实验报告,案例:细菌实验分组 - nimozp的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. Keil5中添加C51芯片
  5. Vue全家桶基础设施环境搭建
  6. 【学术相关】人工智能300年!LSTM之父万字长文:详解现代AI和深度学习发展史...
  7. LeetCode-LCP 17. 速算机器人(Goland实现)
  8. 冷色系清新调、日系清新调 、电影色调复古风、欧美风复古,用曲线就可以调了!!!...
  9. 图解阿里达摩院内部结构
  10. 十二个一的宠物倾向分析