)
Flutter 应用构建报 multidex 错误时如何启用 multidex 支持API 20 及以下【免费下载链接】flutterFlutter makes it easy and fast to build beautiful apps for mobile and beyond项目地址: https://gitcode.com/GitHub_Trending/flutter41/flutter在 Flutter 的 Android 构建过程中如果应用的目标设备 API 为 20 及以下且构建因 dex 方法数超限而失败你会遇到 multidex 错误。根据 Flutter 仓库文档 Android-Multidex-support.mdFlutter 对此提供了自动检测与启用机制构建失败时会提示你是否启用 multidex确认后即可继续构建。本文说明这个问题的成因、默认的解决路径以及构建时临时关闭 multidex 的--no-multidex参数。为什么 API 20 及以下的 Flutter 应用会触发 multidex 错误Android 应用会被编译为 .dexdalvik executable文件在 Dalvik 虚拟机上运行。在 Android API 21 之前应用编译为单个 .dex 文件而单个 .dex 文件只支持 64k 个方法名。应用规模较大时就可能超过这个限制从而需要启用 Multidex 支持。对 Flutter 应用来说超出单 dex 限制的情况很容易出现主要来自插件的使用。即使是很小的应用只要导入了整套标准 Google 插件也可能超限。并且即使发布版本release中未被使用的方法会被移除dex 限制仍然可能阻止应用构建成功。构建失败时如何启用 multidex对于目标 API 为 20 及以下的应用Flutter 支持自动检测 multidex 错误并提供 multidex 支持。当应用因 multidex 错误构建失败时Flutter 会自动提示你是否应该启用 multidex 支持。操作路径如下正常执行 Android 构建。构建因 multidex 错误失败后留意 Flutter 给出的提示。对提示回答 yesFlutter 会为该应用添加 multidex 支持。添加成功后后续构建都会默认在 multidex 支持开启的状态下进行不需要每次构建都手动处理。也就是说默认路径下你不需要手动修改构建配置确认提示即可文档只说明回答 yes 会添加支持未给出具体的配置文件名和写入内容具体变更以工具实际执行结果为准。需要临时关闭 multidex 时使用--no-multidex如果某次构建需要临时禁用 multidex 支持可以在构建命令中传入--no-multidex参数。文档原文为You may pass the--no-multidexflag to temporarily disable multidex support during a build.。注意这是临时禁用它只作用于当次构建不会撤销已经为该应用添加的 multidex 支持后续构建仍会按已启用的 multidex 支持进行。如何验证验证方式以构建结果本身为准确认提示回答 yes之后再次构建构建因 multidex 错误导致的失败应消失并且后续构建持续在 multidex 支持开启的状态下进行。使用--no-multidex时验证点是当次构建按 multidex 支持关闭的状态执行文档未提供额外的日志输出或检查命令也不保证关闭 multidex 后构建必然成功如果应用确实超过了单 dex 限制禁用 multidex 后仍可能构建失败。限制与边界目标 API 21 及以上的设备已原生支持 multidex不需要本文的操作。但文档明确不建议纯粹为了绕开 multidex 问题而把目标提到 API 21因为这会无意中排除运行旧设备的潜在用户。如果你的应用确实面向旧设备应保留较低的目标 API 并启用 multidex 支持。旧版本 Flutter 曾通过创建io/flutter/app/FlutterMultiDexApplication.java文件的方式支持 multidex 启用。这个文件已经过时如果不删除会导致构建失败当前 Flutter 工具链会执行自动迁移删除该文件见 multidex_removal_migration.dart日志中对应的提示为 Deleted obsolete FlutterMultiDexApplication.java file.。如果你的项目源自旧模板、构建因此失败检查项目android目录下src/main/java/io/flutter/app/中是否还残留该文件。本文只覆盖目标 API 20 及以下应用的 multidex 错误场景API 21 的原生支持不在本文范围内。参考资料multidex 机制与本文主要依据Android-Multidex-support.md工具自动删除过时 multidex 文件的迁移实现multidex_removal_migration.dart【免费下载链接】flutterFlutter makes it easy and fast to build beautiful apps for mobile and beyond项目地址: https://gitcode.com/GitHub_Trending/flutter41/flutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考