flutter module怎么把所有的依赖都打到一个aar中?
来源:1-6 VS Code开发Flutter实用技巧(持续更新)

酒巷清风
2025-05-15
module类型的Flutter项目,当打包成aar时,该项目所依赖的组件都打包到一个aar中?现在打包aar发现都是分开的,每个package模块或pub上的组件库都会单独生成一个aar,怎么把这些aar打包成一个?
写回答
1回答
-
CrazyCodeBoy
2025-05-16
可以尝试下下面是几种【将所有依赖打包进一个 AAR】的方案:
✅ 推荐方案:使用 --merge-debug 或 --merge-profile/release
从 Flutter 1.22+ 开始,flutter build aar 提供了 --merge-* 参数可以将所有依赖打进一个 .aar 包中。
示例命令:
flutter build aar --no-debug --profile --release --target-platform android-arm,android-arm64,android-x64 --build-number=1.0.0 --merge-profile --merge-release
--merge-profile:将 profile 依赖也打进主 AAR
--merge-release:将 release 依赖打进主 AAR
--no-debug:可选,避免生成 debug 版本
--target-platform:支持多个架构
生成路径:build/host/outputs/repo
你会发现主模块中的 .aar 文件变大了,依赖都进去了。
---
✅ 可选方案:手动合并多个 AAR(不推荐)
如果你已经生成了多个 AAR,比如:
my_flutter/
├── build/
│ ├── aar/
│ ├── flutter_release.aar
│ ├── shared_preferences.aar
│ ├── your_plugin.aar
那可以:
1. 用 Android Studio 新建一个中间模块 merged_flutter_sdk
2. 把所有 .aar 解压合并资源(classes.jar、assets、res、jni)
3. 重新打成一个统一的 .aar
缺点:容易冲突、耗时、维护难。
---
✅ 第三方案:集成 Flutter SDK 方式(而不是用 AAR)
如果你是原生 Android 工程接入 Flutter,可以考虑直接用 Flutter SDK 接入方式(即不是打成 AAR,而是直接使用 FlutterEngine 加载 module),能避免 AAR 多包合并的问题。
参考文档:
https://flutter.dev/docs/development/add-to-app/android/project-setup
---
补充说明
多 .aar 文件是因为 Flutter 默认按插件/依赖拆分,便于增量优化
--merge-release 是官方提供的解决方案,最干净利落
build.gradle 不要手动修改依赖路径,会被覆盖022025-05-21
相似问题