如何处理 android 方法总数超过 65536 . the number of method references in a .dex file exceed 64k

一:问题描述:

    应用中的Dex 文件方法数超过了最大值65536的上限,简单来说,应用爆棚了.

二、解决方案:

     方案1:使用插件化框架  比如: https://github.com/singwhatiwanna/dynamic-load-apk

方案2:分割Dex

三:分割 Dex 文件实现方法

1、相关链接

https://developer.android.com/tools/building/multidex.html#about

2、在app的 build.gradle 中

(1)在dependencies 中添加

compile ‘com.android.support:multidex:1.0.0‘

(2)在 defaultConfig 中添加

multiDexEnabled true

比如

1  defaultConfig {
2         applicationId "com.pegasus.map"
3         minSdkVersion 15
4         targetSdkVersion 23
5         versionCode 1
6         versionName "1.0"
7         signingConfig signingConfigs.config
8         multiDexEnabled true
9     }

(3)在 AndroidManifest.xml 中的  application 标签中添加

1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3     package="com.example.android.multidex.myapplication">
4     <application
5         ...
6         android:name="android.support.multidex.MultiDexApplication">
7         ...
8     </application>
9 </manifest>

提示:如果你的应用程序继承 Application , 那么你需要重写

1 @Override
2     protected void attachBaseContext(Context base) {
3         super.attachBaseContext(base);
4         MultiDex.install(this) ;
5     }

另外我的微信公众账号是: zhaoyanjun125

我会经常发一些我的些项目的感悟和编程技术。欢迎关注。

微信扫描二维码 关注我

时间: 2024-10-06 14:01:53

如何处理 android 方法总数超过 65536 . the number of method references in a .dex file exceed 64k的相关文章

Android开发 Error:The number of method references in a .dex file cannot exceed 64K.

在Android系统中,一个App的所有代码都在一个Dex文件里面.Dex是一个类似Jar的存储了多有Java编译字节码的归档文件.因为Android系统使用Dalvik虚拟机,所以需要把使用Java Compiler编译之后的class文件转换成Dalvik能够执行的class文件.这里需要强调的是,Dex和Jar一样是一个归档文件,里面仍然是Java代码对应的字节码文件.当Android系统启动一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt.DexO

Android方法引用超过65535的解决方式

//在app/build.gradle android { compileSdkVersion 24 buildToolsVersion "24.0.1" defaultConfig { ... minSdkVersion 14 targetSdkVersion 24 ... // 设置支持multidex multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.1' }

解决Android单个dex文件不能超过65536个方法问题

当我们的项目代码过大时,编译运行时会报Unable to execute dex: method ID not in[0, 0xffff]: 65536)错误.当出现这个错误时说明你本身自己的工程代码中含有的太多的方法,或者你的工程lib文件夹下引用的第三方插件jar包有太多的方法,这两者的方法加起来已经超过了65536这个数目.而谷歌规定单个dex文件中的方法不能超过65536的限制. 那么这个时候,我们就需要分包处理解决.一般情况下的解决方案就是把整个项目工程包括jar,区分开来分解成两个d

关于Android方法数量限制的问题

限制Android方法数量的原因是: Android应用以DEX文件的形式存储字节码文件,在Dalvik字节码规范里,方法引用索引method referenceindex只有16位,即65536个. Op & Format Mnemonic / Syntax Arguments 6e..72 35c invoke-kind {vC, vD, vE, vF, vG}, [email protected] B: method reference index (16 bits) 注意是method

Android Developer:构建超过65K方法的App

Android App的大小随着Android平台持续增长.当你的应用程序和它引用的库达到某个大小,你会遇见预示你的App已经达到Android应用构建架构极限的构建错误.早期版本的构建系统报告如下错误: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 最近版本的Android构建系统显示一个不同的错误,他指示这同样的问题: trouble writing

使用android-support-multidex解决Android方法数超过65535的问题

随着应用不断更新,业务的不断增加, 应运而生的应用可能需要集成了各种第三方library,相信很多人都遇到过如下类似的错误: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501) at com.android.

Dex文件方法数超过65536怎么破?

你的应用中的Dex 文件方法数超过了最大值65536的上限,会提示你: UNEXPECTED TOP-LEVEL EXCEPTION:java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501)at com.android.dx.merge.DexMerger$IdMerger.me

IDA 调试 Android 方法及简单的脱壳实现

IDA 调试 Android 方法及简单的脱壳实现 标签: android原创逆向调试dalvik 2016-05-24 14:24 9286人阅读 评论(3) 收藏 举报 分类: 原创(25) Android(5) 学习(9) 逆向(4) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文参考了一些网络文章,对大大们的技术分享表示感谢.小弟刚刚开始深入去搞Android的逆向不久,写一下学习笔记,希望能抛砖引玉,给新手同学们带来方便.文笔比较烂,这不重要,重要的是按自

如何处理android程序变为后台程序,系统回收资源,再次打开时,程序因为null指针等崩溃

home键等原因,程序会变为后台程序,系统会更具需要,可能回收资源,再打开时候,就会因为资源回收,再调用oncreate,没有Intent参数而导致程序崩溃.   这种情况,我们可以处理的方式有两种,一是用: @Override     protected void onSaveInstanceState(Bundle outState) {      // TODO Auto-generated method stub      super.onSaveInstanceState(outSta