Android 65536 详解!
异常:
trouble writing output:
Too many field references: 131000; max is 65536.
You may try using --multi-dex option.//或者:Conversion to Dalvik format failed:
Unable to execute dex: method ID not in [0, 0xffff]: 65536
原因:
65536。此数字是单个 Dalvik Executable (DEX) 字节码文件内的代码可调用的引用总数。Android 应用 (APK) 文件包含 Dalvik Executable (DEX) 文件形式的可执行字节码文件,
这些文件包含用来运行您的应用的已编译代码。
Dalvik Executable 规范将可在单个 DEX 文件内引用的方法总数限制为 65536,
其中包括 Android 框架方法、库方法以及您自己的代码中的方法。
解决:
一、Android 5.0 之前版本的多 dex 文件支持
1.每个 APK 只能使用一个 classes.dex 字节码文件。要绕过这一限制,可以在项目中添加多 dex 文件支持库:
dependencies {def multidex_version = "2.0.1"implementation 'androidx.multidex:multidex:$multidex_version'}
2.如果不使用 AndroidX,改为添加以下支持库依赖项:
dependencies {//此库会成为应用的主要 DEX 文件的一部分,然后管理对其他 DEX 文件及其所包含代码的访问。implementation 'com.android.support:multidex:1.0.3'}
二、Android 5.0 及更高版本的多 dex 文件支持
1.minSdkVersion 设为 21 或更高的值,默认情况下,系统会启用多 dex 文件,并且不需要多 dex 文件支持库。
2.minSdkVersion 设为 20 或更低的值,则必须使用多 dex 文件支持库并对应用项目进行修改。
3.解决之道:
① 修改模块级 build.gradle 文件以启用多 dex 文件:
android {defaultConfig {...minSdkVersion 15targetSdkVersion 28//这个别忘了,放在主Moudle配置文件中比较靠谱multiDexEnabled true}...}dependencies {implementation 'com.android.support:multidex:1.0.3'}
② Application 类:
注:1和2只配置一种即可
//1.可以将android:name设置为:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapp"><applicationandroid:name="android.support.multidex.MultiDexApplication" >...</application></manifest>//2.或者自己的Application继承MultiDexApplication://java这样public class MyApplication extends MultiDexApplication {@Overridepublic void onCreate() {super.onCreate();MultiDex.install(this);}}//kotlin 这样玩:class MyApplication : SomeOtherApplication() {override fun attachBaseContext(base: Context) {super.attachBaseContext(base)MultiDex.install(this)}}
注意事项:
注意:在 MultiDex.install() 完成之前,
不要通过反射或 JNI 执行 MultiDex.install() 或其他任何代码。多 dex 文件跟踪功能不会追踪这些调用,
从而导致出现 ClassNotFoundException,或因 DEX 文件之间的类分区错误而导致验证错误。
还有问题的话,可以在评论区留言哦~
Android 65536 详解!相关推荐
- android rotate 动画,Android RotateAnimation详解
RotateAnimation旋转坐标系为以旋转点为坐标系(0,0)点.x轴为0度,顺时针方向旋转一定的角度. 1.RotateAnimation(fromDegrees, toDegrees) [默 ...
- Android Linker详解
Android Linker详解 本文目的 Linker入口 So的装载 总结 本文目的 Unidbg在对So进行模拟执行的时候,需要先将So文件加载到内存,配置So的进程映像,然后使用CPU模拟器( ...
- 【转】Android菜单详解——理解android中的Menu--不错
原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...
- Android菜单详解——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- Android LayoutInflater详解
Android LayoutInflater详解 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类 似于findViewById().不同点是LayoutInflater是用来 ...
- android Fragments详解
android Fragments详解一:概述 android Fragments详解二:创建Fragment 转载于:https://my.oschina.net/liangzhenghui/blo ...
- android WebView详解,常见漏洞详解和安全源码(下)
上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http ...
- android WebView详解,常见漏洞详解和安全源码(上)
这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...
- android子视图无菜单,Android 菜单详解
Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该 ...
最新文章
- HTMD | 从PDB文件获取3D特征描述符
- hadoop3.0 分布式搭建/安装
- Codeforce 1255 Round #601 (Div. 2) C. League of Leesins (大模拟)
- security和oauth2.0的整合
- redis linux工具安装,linux 安装redis缓存工具
- IDC评述网:1月下旬国内域名注册商净增量Top10
- mysql文章列表_MySQL-分享文章列表 - Su的博客
- 19.docker attach
- ps读写ddr3里面的数据 zynq_ZYNQ应该如何让PS端的opencv程序读取到ddr中的图像数据...
- Abaqus GUI界面解决中文乱码问题(插件中文乱码也适用)
- Your connection is not private Attackers might be trying to steal your information from nemertes.lis
- 晨读-如何打造出有效的“人脉关系”
- HFSS 快速建立微带线
- java 篮球队淘汰赛_篮球淘汰赛怎么安排 6支篮球队淘汰赛图
- 音响常用电解电容转发
- 抖音SEO优化源码,企业号搜索排名系统,技术理论分析搭建。
- Supper 使用注意点
- Direx 自学总结一
- 【软件下载_1】关于Panoply的下载
- MSRA被曝停招国防七子及北邮学生!
热门文章
- lol那个服务器有无限火力,全新游戏模式-无限火力上线
- 微信小程序之获取当前位置附近的美食、酒店、娱乐、超市等,并显示标记
- steam账号连接服务器遇到问题,无法预料的服务器浏览器反应 - Steam Support
- Emacs 浏览网页
- Windows系统win10系统磁力种子文件下载软件推荐
- android背景图拉伸,解决android:background背景图片被拉伸问题
- Linux编译dd源码
- C6678信号处理板学习资料:基于6U VPX TMS320C6678+XC7K325T 的信号处理板
- 阿里云的专业技术认证分为哪些?为啥要获得阿里云的ACP认证!
- electron start之后index.html页面不显示