java - 无法在单个 dex 文件中容纳请求的类(# 方法:86010 > 65536)
问题描述
我不知道错误是什么意思。我正在尝试从 youtube 上做一个使用 Firebase 的超级应用程序并收到此错误。
无法在单个 dex 文件中容纳请求的类(# 方法:86010 > 65536) com.android.tools.r8.CompilationFailedException:编译未能完成。
构建.gradle(应用程序)
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 28
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.ezbusjava"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
debuggable = true
signingConfig signingConfigs.debug
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.firebase:firebase-analytics:17.2.2'
implementation 'com.google.firebase:firebase-auth:19.2.0'
implementation 'com.google.firebase:firebase-firestore:21.3.1'
implementation 'com.google.firebase:firebase-database:19.2.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
build.gradle(项目)
buildscript {
repositories {
mavenCentral()
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'com.google.gms:google-services:4.3.3'
}
}
allprojects {
repositories {
mavenCentral()
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
解决方案
Android 有 65,536 个方法限制。如果您的应用程序超过该数量,则需要启用multidexing。
只需将multiDexEnabled
标志和所需的依赖项添加到您的build.gradle
:
android {
defaultConfig {
...
multiDexEnabled true
...
}
...
}
dependencies {
...
implementation 'com.android.support:multidex:1.0.3'
}
此外,您需要配置您的应用程序以使用多索引。
根据文档,如果您的应用程序 extends Application
,则需要将其扩展自MultiDexApplication
。
如果您的应用没有扩展Application
,则需要将以下行添加到清单中:
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
推荐阅读
- python - ModuleNotFoundError:没有名为 keras 的模块
- c# - 在反序列化(C#)中仅从 Json 获取一个属性
- python - SystemError:父模块'setuptools'未加载,无法执行相对导入,jupyterhub
- java - 使用 RSAwithSHA256 实现 RSA 签名的 Java
- text-processing - 我可以让 objdump --full-contents 只打印原始文本吗?
- postgresql - PostgreSQL:以用户友好的方式显示表内的交叉引用
- ruby-on-rails - 单击图像时无法移动到页面(使用 gem 'rinku')
- dialogflow-es - 如何创建类似于 @sys.airport 的 Dialogflow 自定义实体?
- microsoft-graph-api - 搜索我的 onedrive 在 ms 图中返回 invalidRequest
- go - 通过 import 生成基于 protobuf 的 go 文件