【错误解决】Android APK 方法数量限制
错误:# Cannot fit requested classes in a single dex file (# methods: 74519 > 65536)
最近开发安卓程序遇到以下错误:
Cannot fit requested classes in a single dex file (# methods: 74519 > 65536)
翻译:
无法将请求的类放入单个dex文件(#方法:74519>65536)
大致意思是Android App中的方法数超过65535,如果往下兼容到低版本设备时,就会报编译错误,尤其在引入一些jar包之后容易出现这个错误,因为一些Android系统定义单个dex的总方法数的最大值是65535,当你引入一些jar包后方法超过65535个方法。一个dex已经装不下了,需要个多个dex,也就是multidex。
解决方案
1.配置依赖
在app目录下的build.gradle文件里的dependencies下添加如下依赖:
implementation 'com.android.support:multidex:1.0.3'
然后在android下的defaultConfig添加以下配置:
multiDexEnabled true
配置好后我的文件内容如下:
build.gradle
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "minuy.android.nlecloud"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
implementation project(path: ':nlecloud-sdk')
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation("com.squareup.okhttp3:okhttp:4.9.0")
implementation 'com.android.support:multidex:1.0.3'
}
2.自定义Application子类
新建一个Java类并继承自Application。
覆盖onCreate方法。
在onCreate方法里加入如下语句:
MultiDex.install(this);
我的Java类内容如下:
MainApplication.java
package minuy.android.nlecloud;
import android.app.Application;
import androidx.multidex.MultiDex;
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
MultiDex.install(this);
}
}
3.配置AndroidManifest.xml
在application下加入如下语句:
android:name=".{$刚刚新建的类名}"
例如我的:
android:name=".MainApplication"
配置好后,我的AndroidManifest.xml文件内容如下:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="minuy.android.nlecloud">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MainApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher_icon"
android:label="@string/app_name"
android:roundIcon="@drawable/ic_launcher_icon"
android:supportsRtl="true"
android:theme="@style/Theme.NleCloud">
<activity android:name=".StartActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
问题解决!
参考:
https://blog.csdn.net/m0_37707561/article/details/84983184
【错误解决】Android APK 方法数量限制的更多相关文章
- android studio 更新 Gradle错误解决方法(Gradle sync failed)
android studio 更新 Gradle错误解决方法 Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing ...
- 安卓安装提示:Android SDK requires Android Developer Toolkit version 21.1.0 or above. (错误解决方法)
安卓安装提示:Android SDK requires Android Developer Toolkit version 21.1.0 or above. (错误解决方法) 主要是因为版本号不正确 ...
- Android Studio Eclipse运行时出现 finished with non-zero exit value 2 错误解决方法
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing Error:Ex ...
- android.util.AndroidRuntimeException: requestFeature() must be called before adding content 错误解决方法
Activity全屏,网上的代码如下:protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstance ...
- Android layoutInflate.inflate 方法具体解释,removeView()错误解决
错误: The specified child already has a parent. You must call removeView(). 解答: 这个错误非常直白,就是你viewGroup. ...
- android打包方法超过65k错误
近日,Android Developers在Google+上宣布了新的Multidex支持库,为方法总数超过65K的Android应用提供了官方支持. 如果你是一名幸运的Android应用开发者,正在 ...
- 关于Android方法数量限制的问题
限制Android方法数量的原因是: Android应用以DEX文件的形式存储字节码文件,在Dalvik字节码规范里,方法引用索引method referenceindex只有16位,即65536个. ...
- react-native学习(RN)--之Window环境下搭建环境配置,以及初始化建立react-native项目,(真机和模拟器运行的相关错误解决办法,android打包报错)
react-native以后会更火的 一.安装java 二.安装Android Studio 三.安装react-native需要的Android studio额外部分 四.安装nodeJS 五.安 ...
- jack server 常见错误解决方法【转】
本文转载自:https://blog.csdn.net/qq_27061049/article/details/70156200 jack 服务常见错误解决方法 当你编译Android时,你不需要修改 ...
- 解决Android单个dex文件不能超过65535个方法问题
一.找坑:谷歌规定单个dex文件中的方法不能超过65536的限制 我们编写项目过程中在工程的lib文件夹下引用的第三方插件jar包太多或者项目过大,编译运行时就有可能报出com.android.dex ...
随机推荐
- CDS标准视图:设备功能位置变更历史 I_EQUIPINSTALLATIONHISTORYC
视图名称:I_EQUIPINSTALLATIONHISTORYC 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'Equipment Installation ...
- Db4o数据库-其它存储
面向对象的数据库db4o: 初识db4o 2021-01-11 23:18:34 阅读数 9211 收藏 0 前言 业界对持久存储领域的追求从未停止过,为了更方便.更容易地用对象表达我们的思维,开源领 ...
- 2025高级java面试精华及复习方向总结
1. Java基础 顶顶顶顶的点点滴滴 1.1 java集合关系结构图 1.2 如何保证ArrayList的线程安全 方法一: 使用 Collections 工具类中的 synchronizedLis ...
- 在日常工作和生活中使用Linux-开篇
前言 欢迎来到<在日常工作和生活中使用Linux>的系列分享.在这个系列中,我们将探讨为什么选择Linux,以及如何在日常工作和生活中高效地使用它.无论你是刚刚接触Linux的新手,还是希 ...
- Oracle数据库只能127.0.0.1连接,无法局域网远程通过IP访问
今天使用Oracle时遇到一个问题,连接字符串中IP配置成127.0.0.1时可能正常访问数据库,当配置成实际IP地址时连接数据库失败.然后 telnet IP 1521 失败. 解决方案: 1. 打 ...
- 效率起飞!天翼云并行文件服务HPFS高效应对AI时代大模型训练存储挑战!
国内外AI大模型层出不穷,训练数据复杂程度更是呈指数级增加.如今,在万亿级参数时代,单个资源池已无法满足大模型训练场景中动辄PB级的数据存储量,对于企业来说,启用多个资源池构成的分布式存储势在必行. ...
- [记录点滴]Spring Boot Admin源码分析笔记
[记录点滴]Spring Boot Admin源码分析笔记 0x00 摘要 本文是过去使用Spring Boot Admin时候分析源码的笔记.虽然比较简单,但是也可以看出Spring Boot Ad ...
- 2025年,Fantastic-admin 这款后台框架将继续引领潮流
前言 大言不惭的取了这个标题,但作为开发了 4 年多的 Fantastic-admin 的作者,回顾这一路走来,从一开始被指责抄袭,到现在拥有数百名付费用户和几十家付费企业.我认为我的开发理念应该是得 ...
- oracle - [11] 那些年使用的emp表和dept表
那些年在学习编程时,Oracle自带的emp表和dept表,本文进行整理和记录,以便于在今后的学习和工作中作为示例数据. 雇员表(emp) CREATE TABLE EMP( EMPNO NUMBER ...
- Halcon学习教程(二) 测量量测相关(点到线距离,线到线距离,轮廓线距离,一维测量,圆形测量,矩形测量等)
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/18740576 本篇讲一些测量用到的算子和实例,想了解更多就得去看看halcon实例里一维测量里 ...