android开发中APP引用方法总数过多
来源:互联网 发布:捕鱼最优化问题 编辑:程序博客网 时间:2024/06/06 03:51
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.
这个数字代表的是单个Dalvik可执行的(DEX)字节码文件的可以调用方法总数。如果你已经创建了android应用,并且收到了这个错误,那么恭喜你,你的代码太多了!
在Android系统中,一个App的所有代码都在一个Dex文件里面。Dex是一个类似Jar的存储了多有Java编译字节码的归档文件。
因为Android系统使用Dalvik虚拟机,所以需要把使用Java Compiler编译之后的class文件转换成Dalvik能够执行的class文件。这里需要强调的是,Dex和Jar一样是一个归档文件,里面仍然是Java代码对应的字节码文件。当Android系统启动一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。这个过程会生成一个ODEX文件,即Optimised Dex。执行ODex的效率会比直接执行Dex文件的效率要高很多。但是在早期的Android系统中,DexOpt有一个问题,也就是这篇文章想要说明并解决的问题。DexOpt会把每一个类的方法id检索起来,存在一个链表结构里面。但是这个链表的长度是用一个short类型来保存的,导致了方法id的数目不能够超过65536个。当一个项目足够大的时候,显然这个方法数的上限是不够的。
0 0
- android开发中APP引用方法总数过多
- 解决Android Studio 开发过程中方法数过多的问题
- 解决Android Studio 开发过程中方法数过多的问题
- Android开发中TextView内容过多而设置滚动条
- Android开发 方法总数超过64K时,dex分割(Android Studio)
- Android APK 方法数过多的问题
- .NET方法中参数过多的解决方法
- Android项目app和module引用aar文件方法
- 【引用】linux驱动开发中open 方法
- 怎样在Android开发中引用ButterKnife
- android应用程序中引用系统资源的方法
- Android 在XML中引用系统资源方法
- Android中引用资源的方法总结
- Android开发中使用软引用和弱引用
- Android开发中软引用和弱引用
- Android开发中使用软引用和弱引用
- 在Android App开发中实现任意Java方法的拦截
- Android当方法总数超过64K时(Android Studio)
- FrameLayout(帧布局)
- 从网络获取时间
- 用友NC5.7房地产系统模块功能说明及应用介绍
- hdu 1561 The more, The Better【树型dp】
- Android强制设置横屏或竖屏
- android开发中APP引用方法总数过多
- Mining and Summarizing Customer Reviews (Hu 2004)
- Java时间
- 一个有关package的错误: 没有包名的类
- Android化繁为简——从设计一个简单主界面开始
- 栈Stack
- 深入理解android6.0 RunTime Permisstion
- 详解CSS中:nth-child的用法
- 关于Android5.0+去掉标题栏的研究