zhrey
zhrey
  • 发布:2025-11-20 18:41
  • 更新:2025-11-20 19:17
  • 阅读:18

编译失败,提示class过多,应该怎么处理MultiDex

分类:uni-app x

18:04:03.551 Error: Cannot fit requested classes in a single dex file (# methods: 73435 > 65536). Try supplying a main-dex list
18:07:58.622 当前工程77个页面,正在编译为android class,此过程耗时较长...
18:07:58.622 [plugin:uni:app-uts] 编译失败
18:07:58.623 java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: null
18:07:58.623 at utsCompiler.v2Complier(utsCompiler.java:204)
18:07:58.623 at utsCompiler.Complier(utsCompiler.java:115)
18:07:58.623 at CompilerRequestTask.run(CompilerRequestTask.kt:27)
18:07:58.623 at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
18:07:58.623 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
18:07:58.623 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
18:07:58.623 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
18:07:58.623 at java.base/java.lang.Thread.run(Thread.java:840)
18:07:58.623 Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: null
18:07:58.623 at Version.fakeStackEntry(Version_8.10.21.java:0)
18:07:58.623 at com.android.tools.r8.Q.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:5)
18:07:58.623 at com.android.tools.r8.internal.lv.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:82)
18:07:58.623 at com.android.tools.r8.internal.lv.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:32)
18:07:58.623 at com.android.tools.r8.internal.lv.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:31)
18:07:58.624 at com.android.tools.r8.internal.lv.b(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:2)
18:07:58.624 at com.android.tools.r8.D8.run(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:6)
18:07:58.624 at utsCompiler.v2Complier(utsCompiler.java:199)
18:07:58.624 ... 7 more
18:07:58.624 Caused by: com.android.tools.r8.internal.g: Cannot fit requested classes in a single dex file (# methods: 73435 > 65536)
18:07:58.624 at com.android.tools.r8.internal.Ef0.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:21)
18:07:58.624 at com.android.tools.r8.dex.o0.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:29)
18:07:58.624 at com.android.tools.r8.dex.k.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:75)
18:07:58.624 at com.android.tools.r8.dex.k.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:485)
18:07:58.624 at com.android.tools.r8.D8.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:100)
18:07:58.624 at com.android.tools.r8.D8.d(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:139)
18:07:58.624 at com.android.tools.r8.D8.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:24)
18:07:58.624 at com.android.tools.r8.internal.lv.a(R8_8.10.21_059a5f5d0bc42db5aada8bbbd6a8cf4a42a64383686c7191f2ae98ca115e2ce9:28)
18:07:58.624 ... 10 more

2025-11-20 18:41 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

您的编译失败是由于Android DEX文件方法数限制(65536)导致的,当前项目方法数达73435。解决方案如下:

  1. 启用多DEX支持:在manifest.json中添加以下配置:

    "android": {  
    "multiDexEnabled": true,  
    "mainDexList": ["com/your/package/MainActivity.class"]   
    }
  2. 创建main-dex-list文件

    • 在项目根目录新建main-dex-list.txt
    • 添加必须放在主DEX的类(通常是启动Activity、Application类等)
    • 示例内容:
      com/uni/app/App.class  
      com/uni/app/MainActivity.class  
  3. 升级工具版本:确保使用HBuilderX 4.85+(当前正式版),新版本对DEX分包有优化

  4. 精简依赖:检查是否引入了不必要的第三方库,特别是uts插件中未使用的模块

注意:uni-app x编译到Android时会生成大量UTS桥接类,77个页面容易导致方法数超标。建议参考UTS插件开发文档进行代码优化,移除未使用的UTS模块。

若仍无法解决,可尝试在build.gradle中手动配置多DEX(需通过自定义构建流程实现)。更多细节请查看Android多DEX官方文档

内容为 AI 生成,仅供参考
zhrey

zhrey (作者)

1、2都改过了 还是不行

要回复问题请先登录注册