请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

flutter module怎么把所有的依赖都打到一个aar中?

module类型的Flutter项目,当打包成aar时,该项目所依赖的组件都打包到一个aar中?现在打包aar发现都是分开的,每个package模块或pub上的组件库都会单独生成一个aar,怎么把这些aar打包成一个?

正在回答 回答被采纳积分+3

1回答

CrazyCodeBoy 2025-05-16 20:29:54

可以尝试下下面是几种【将所有依赖打包进一个 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 不要手动修改依赖路径,会被覆盖


0 回复 有任何疑惑可以回复我~
  • 提问者 酒巷清风 #1
    提示没有找到--merge-release相关命令,没有--merge这个命令吧
    回复 有任何疑惑可以回复我~ 2025-05-18 11:30:39
  • CrazyCodeBoy 回复 提问者 酒巷清风 #2
    可能是flutter SDK版本不同,你试试这个命令flutter build aar --release
    回复 有任何疑惑可以回复我~ 2025-05-21 09:30:44
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号