为什么添加Google Firebase会导致Dex错误?

乔尔·布罗斯特伦

新增中

实施'com.google.firebase:firebase-core:11.8.0'

我的模块gradle文件中出现错误,提示我项目中有超过64K方法。

我的猜测是,尽管添加了

实施'com.google.android.gms:play-services-maps:11.8.0'

要么

实施'com.google.android.gms:play-services-location:11.8.0'

不要给我任何错误。

等级:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "se.workshop.collect"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:support-v4:26.1.0'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
    implementation 'com.google.android.gms:play-services-maps:11.8.0'
    implementation 'com.google.android.gms:play-services-location:11.8.0'
    implementation 'com.google.firebase:firebase-core:11.8.0'
    implementation "com.android.support:recyclerview-v7:26.1.0"                //Recycler View Support
    implementation "com.android.support:cardview-v7:26.1.0"                //Recycler View Support
    implementation 'com.squareup.okhttp3:okhttp:3.9.0'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.0"
    implementation 'com.karumi:dexter:4.2.0'
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:support-vector-drawable:26.1.0'
    implementation group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version:"$kotlin_version"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

}

和错误:

Error:The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
Error:com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Error:  at com.android.dx.merge.DexMerger$8.updateIndex(DexMerger.java:565)
Error:  at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:276)
Error:  at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:574)
Error:  at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:166)
Error:  at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error:  at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
Error:  at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error:  at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
Error:  at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
Error:  at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Information:BUILD FAILED in 13s
道格·史蒂文森

对于该主题中所述问题的简单答案是,您添加的依赖项仅使方法总数超过了64K,如错误消息中所示。听起来您正在假设不应该这样做,但显然是这样。请记住,firebase-core还引入了firebase-analyics和其他一些库,因此,添加后,您获得的不仅仅是Firebase-core。

无论如何,您应该在构建中启用multidex,以防止在添加更多库时出现此错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么会导致错误?

为什么添加依赖关系会导致AngularJS错误?

为什么这个条件会导致错误?

为什么矢量会导致细分错误?

为什么以下会导致分段错误?

为什么向烧瓶中的函数添加请求会导致空 POST 时出现“错误请求”?

为什么添加HTTP拦截器会导致CORS错误?

为什么在PS1末尾添加\ n会导致替换错误?

为什么将项目添加到链表会导致分段错误?

为什么将美学添加到我的 ggplot 会导致错误?

为什么向 web.xml 添加过滤器会导致 404 错误?

为什么添加 WHERE 子句会导致无法翻译?

为什么添加函数参数会导致SLOT()无法识别?

为什么将数据类型添加为类型声明的约束会导致匹配错误而不是更正确的错误?

为什么此代码会导致分段错误

为什么可选链接会导致重叠的访问错误?

:k [False]为什么会导致GHCI错误?

为什么导入模块会导致循环导入错误

为什么对信息字典进行散列会导致错误?

为什么在JavaScript中10 === 010会导致错误

为什么此流功能会导致错误?

为什么变量分配中的空格会导致Bash错误?

为什么与pthread链接会导致分段错误?

为什么00.0会导致语法错误?

为什么此JSON.parse()评估会导致错误?

为什么?:会导致转换错误,而if-else不会?

为什么命名枚举值“ IN”会导致语法错误?

为什么以联合方式访问指针会导致分段错误?

为什么释放内存会导致分段错误?