如何将Flutter生成的Android库(.aar)分发给第三方Android应用?
Flutter模块打包可分发AAR及第三方Android应用集成方案
一、生成可分发的Flutter AAR
- 将你的Flutter模块单独抽离维护(如果之前嵌在现有Android项目中,需先拆分为独立模块)
- 进入Flutter模块根目录,执行release版打包命令:
打包完成后,会在flutter build aar --no-debug --no-profilebuild/host/outputs/repo生成完整的本地Maven仓库结构——包含Flutter模块AAR、依赖的Flutter引擎AAR及插件AAR,必须分发整个repo目录,单传单个AAR会导致第三方应用缺失依赖。
二、分发给第三方的两种方式
- 离线分发:直接打包
repo目录发送给对方,让其通过本地路径引用 - 远程分发:将
repo内的资源上传至私有Maven仓库(如Nexus、Artifactory),给对方提供仓库URL即可
三、第三方应用集成步骤
- 配置Maven仓库:在第三方项目的
settings.gradle中添加仓库地址:dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // 离线场景填本地repo绝对路径,远程场景填仓库URL maven { url '/Users/xxx/Documents/flutter_module/build/host/outputs/repo' } } } - 添加依赖:在应用模块的
build.gradle中引入Flutter模块依赖,具体的groupId、artifactId、version可在你打包时的控制台输出中获取:dependencies { implementation 'com.yourcompany:flutter_module:flutter_release:1.0.0' // 若模块用到Flutter插件,需同步引入对应release版依赖,例如: // implementation 'io.flutter.plugins.sharedpreferences:flutter_sharedpreferences_release:2.2.0' } - 初始化Flutter引擎:在第三方应用的Application类中预初始化引擎,避免启动Flutter页面卡顿:
import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.FlutterEngineCache; import io.flutter.embedding.engine.dart.DartExecutor; public class App extends Application { @Override public void onCreate() { super.onCreate(); FlutterEngine engine = new FlutterEngine(this); engine.getDartExecutor().executeDartEntrypoint( DartExecutor.DartEntrypoint.createDefault() ); FlutterEngineCache.getInstance().put("cached_flutter_engine", engine); } } - 启动Flutter页面:
startActivity( FlutterActivity.withCachedEngine("cached_flutter_engine") .build(this) );
四、关键注意事项
- 第三方应用的Flutter SDK版本必须与你打包模块时的版本完全一致,否则会出现引擎兼容性问题
- 模块中用到的Android权限,需在第三方应用的
AndroidManifest.xml中同步声明 - 打包前务必测试集成流程,确保所有依赖都包含在repo目录中,避免遗漏插件或引擎资源
内容的提问来源于stack exchange,提问作者vishnu
相关产品推荐
相关产品推荐

