手机扫一扫访问本页内容

微信扫描点右上角"···"分享到好友或朋友圈

关闭
微信扫一扫可打开小程序

微信长按图片或搜“分享录”可打开小程序

关闭
安卓,经验

Android Studio打包构建失败:Cannot fit requested classes in a single dex file (# methods: 67658 > 65536)

本文图文讲解Android Studio在打包时,构建失败报错误:Cannot fit requested classes in a single dex file (# methods: 67658 > 65536)的解决方案。

今天打算给APP加个视频播放功能,但加个十几兆依赖包后编译报错了:Error: Cannot fit requested classes in a single dex file (# methods: 67667 > 65536),实际上就是超过最大方法数限制的问题,是由于DEX文件格式限制,一个DEX文件中method个数采用使用原生类型short来索引文件中的方法,也就是2个字节共计最多表达65536个method,field/class的个数也均有此限制。对于DEX文件,则是将工程所需全部class文件合并且压缩到一个DEX文件期间,也就是Android打包的DEX过程中, 单个DEX文件可被引用的方法总数(自己开发的代码以及所引用的Android框架、类库的代码)被限制为65536。

Android 5.0(API 级别 21)之前的平台版本使用 Dalvik 运行时来执行应用代码。默认情况下,Dalvik 限制应用的每个 APK 只能使用单个 classes.dex 字节码文件。要想绕过这一限制,您可以使用multidex,然后管理对其他 DEX 文件及其所包含代码的访问。

Android 5.0(API 级别 21)及更高版本使用名为 ART 的运行时,后者原生支持从 APK 文件加载多个 DEX 文件。ART 在应用安装时执行预编译,扫描 classesN.dex 文件,并将它们编译成单个 .oat 文件,供 Android 设备执行。因此,如果您的 minSdkVersion为 21 或更高值,则不需要 Dalvik 可执行文件分包支持库。

也就是说你可以把minSdkVersion改成为21 或更高值来避免这个错误,或者引入multidex来解决这个问题,引入multidex网上的说法是要在app下的build.gradle加入multiDexEnabled true和implementation ‘com.android.support:multidex:1.0.3’,并且在加入“MultiDex.install(this);”这行代码,但我发现可以不用加入“MultiDex.install(this);”这行代码:

好了根据实际情况自己选择要用哪种方式处理吧。

参考:https://www.jianshu.com/p/9d9c2dbba223


历史上的今天:

展开阅读全文


上一篇:

下一篇:

服务器又要到期了鼓励一下吧
您还可以访问本站的小程序、公众号等所有端,或者下载APP, 在小程序、APP上可以评论文章以及保存图片还有在线客服哦,如您有任何疑问或建议可向作者提出意见反馈
扫码打开小程序可评论文章保存图片,在“我的”有实时在线客服哦,看效果?
关注我的公众号为您分享各类有用信息
分享录多端跨平台系统