为方法数超过 64K 的应用启用 MultiDex

AndroidStudio报错信息

> Task :launcher:mergeDexDebug FAILED
ERROR:: D8: Cannot fit requested classes in a single dex file (# methods: 135451 > 65536 ; # fields: 71268 > 65536)
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
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
at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:128)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:115)
at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:111)
at com.android.build.gradle.internal.tasks.DexMergingWorkAction.merge(DexMergingTask.kt:805)
at com.android.build.gradle.internal.tasks.DexMergingWorkAction.run(DexMergingTask.kt:760)
at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:67)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:63)
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:63)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:60)
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:200)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:214)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: null
at Version.fakeStackEntry(Version_2.2.71.java:0)
at com.android.tools.r8.utils.a0.a(SourceFile:89)
at com.android.tools.r8.D8.run(D8.java:11)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:113)
... 36 more
Caused by: com.android.tools.r8.utils.b: Cannot fit requested classes in a single dex file (# methods: 135451 > 65536 ; # fields: 71268 > 65536)
at com.android.tools.r8.utils.V0.a(SourceFile:22)
at com.android.tools.r8.utils.V0.a(SourceFile:25)
at com.android.tools.r8.dex.P.a(SourceFile:55)
at com.android.tools.r8.dex.P$h.a(SourceFile:7)
at com.android.tools.r8.dex.b.a(SourceFile:14)
at com.android.tools.r8.dex.b.c(SourceFile:30)
at com.android.tools.r8.D8.d(D8.java:163)
at com.android.tools.r8.D8.b(D8.java:1)
at com.android.tools.r8.utils.a0.a(SourceFile:47)
... 38 more
> Task :unityLibrary:lint
e: C:/Users/admin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.10/b8af3fe6f1ca88526914929add63cf5e7c5049af/kotlin-stdlib-1.6.10.jar!/META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an inco
mpatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/transforms-3/0c86e166a84664774fc946b59b6a559e/transformed/jetified-core-ktx-1.9.0-alpha02/jars/classes.jar!/META-INF/core-ktx_release.kotlin_module: Module was compiled with an incompatible version o
f Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/transforms-3/475dc8edcd43fc8a44d5a59c19d09b6b/transformed/mint-mediation-sdk-1.2.0.2/jars/classes.jar!/META-INF/mint-android-sdk_release.kotlin_module: Module was compiled with an incompatible versio
n of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.10/c118700e3a33c8a0d9adc920e9dec0831171925/kotlin-stdlib-common-1.6.10.jar!/META-INF/kotlin-stdlib-common.kotlin_module: Module was c
ompiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
> Task :launcher:lint
e: C:/Users/admin/.gradle/caches/transforms-3/0c86e166a84664774fc946b59b6a559e/transformed/jetified-core-ktx-1.9.0-alpha02/jars/classes.jar!/META-INF/core-ktx_release.kotlin_module: Module was compiled with an incompatible version o
f Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.10/b8af3fe6f1ca88526914929add63cf5e7c5049af/kotlin-stdlib-1.6.10.jar!/META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an inco
mpatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/transforms-3/475dc8edcd43fc8a44d5a59c19d09b6b/transformed/mint-mediation-sdk-1.2.0.2/jars/classes.jar!/META-INF/mint-android-sdk_release.kotlin_module: Module was compiled with an incompatible versio
n of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.10/c118700e3a33c8a0d9adc920e9dec0831171925/kotlin-stdlib-common-1.6.10.jar!/META-INF/kotlin-stdlib-common.kotlin_module: Module was c
ompiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.10/b8af3fe6f1ca88526914929add63cf5e7c5049af/kotlin-stdlib-1.6.10.jar!/META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an inco
mpatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/transforms-3/0c86e166a84664774fc946b59b6a559e/transformed/jetified-core-ktx-1.9.0-alpha02/jars/classes.jar!/META-INF/core-ktx_release.kotlin_module: Module was compiled with an incompatible version o
f Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.10/c118700e3a33c8a0d9adc920e9dec0831171925/kotlin-stdlib-common-1.6.10.jar!/META-INF/kotlin-stdlib-common.kotlin_module: Module was c
ompiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
e: C:/Users/admin/.gradle/caches/transforms-3/475dc8edcd43fc8a44d5a59c19d09b6b/transformed/mint-mediation-sdk-1.2.0.2/jars/classes.jar!/META-INF/mint-android-sdk_release.kotlin_module: Module was compiled with an incompatible versio
n of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.
Ran lint on variant debug: 8 issues found
Ran lint on variant release: 8 issues found
Wrote HTML report to file:///F:/MyCode/AndroidStudio/UnityXiaoMiAdsDemo/launcher/build/reports/lint-results.html
Wrote XML report to file:///F:/MyCode/AndroidStudio/UnityXiaoMiAdsDemo/launcher/build/reports/lint-results.xml
> Task :unityLibrary:lint
Ran lint on variant debug: 6 issues found
Ran lint on variant release: 6 issues found
Wrote HTML report to file:///F:/MyCode/AndroidStudio/UnityXiaoMiAdsDemo/unityLibrary/build/reports/lint-results.html
Wrote XML report to file:///F:/MyCode/AndroidStudio/UnityXiaoMiAdsDemo/unityLibrary/build/reports/lint-results.xml
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':launcher:mergeDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingTaskDelegate
> There was a failure while executing work items
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingWorkAction
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
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
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 44s
118 actionable tasks: 31 executed, 87 up-to-date
F:\MyCode\AndroidStudio\UnityXiaoMiAdsDemo>

前言

一开始我是在AndroidStudio集成 Mint Mediation广告SDK的,集成这个广告SDK不难,就是在你测试是要注意,这个要FQ才可以获取广告资源,否则是没有服务器相应的。这个我一开始也不知道,花了好久才从以为大佬那听说的。哪个写的文档啊,这个都不说清楚别人怎么接你家平台,吐槽一下,舒服多了!

OK!现在在AndroidStudio集成完毕后,开始导入Unity作为插件使用了。在Unity导出来Android工程一切都是那么顺利。在我运行demo是又出现了报错,网上找了一下,已经解决了,在运行,有出现报错,继续找,又出现报错。一直这样解决要出现行的报错。我真的想砸电脑了。拖了几天时间终于构建成功了。

这是我用到的一个报错,希望可以帮助大家拜托烦恼,少走弯路!

分析问题

其实在报错日志内已经给我们找解决办法了。
报错第八行Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
通过这个链接可以在官方文档内找到解决办法!

Android 5.0 之前版本的 MultiDex 支持

Android 5.0(API 级别 21)之前的平台版本使用 Dalvik 运行时执行应用代码。默认情况下,Dalvik 将应用限制为每个 APK 只能使用一个 classes.dex 字节码文件。为了绕过这一限制,您可以向模块级 build.gradle 文件中添加 MultiDex 库:

dependencies {
def multidex_version = "2.0.1"
implementation "androidx.multidex:multidex:$multidex_version"
}

如需查看此库的当前版本,请参阅版本页面中有关 MultiDex 的信息。

如果您使用的不是 AndroidX,请改为添加以下已弃用的支持库依赖项:

dependencies {
implementation 'com.android.support:multidex:1.0.3'
}

Android 5.0 及更高版本的 MultiDex 支持

Android 5.0(API 级别 21)及更高版本使用名为 ART 的运行时,它本身支持从 APK 文件加载多个 DEX 文件。ART 在应用安装时执行预编译,这会扫描查找 classesN.dex 文件,并将它们编译成单个 .oat 文件,以供 Android 设备执行。因此,如果您的 minSdkVersion 为 21 或更高版本,系统会默认启用 MultiDex,并且您不需要 MultiDex 库。

我的解决方式

在我的AndroidStudio build.Gradle文件内 minSdkVersion 19。只需要19给成21即可。

posted @   镜子-眼泪  阅读(1019)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
欢迎阅读『为方法数超过 64K 的应用启用 MultiDex』

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示