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 不要手动修改依赖路径,会被覆盖


0
2
CrazyCodeBoy
回复
酒巷清风
可能是flutter SDK版本不同,你试试这个命令flutter build aar --release
2025-05-21
共2条回复

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案

1751 学习 · 884 问题

查看课程