Flutter项目打成AAR供Android原生使用步骤
一、打成本地AAR步骤详解
1、用Android Studio工具打开已有或者新建 Flutter项目,
如上图所示,带x的是未安装的环境,根据提示安装即可,这里特别强调一点,如果已经配置了Flutter插件,还提示插件未安装,输入
ln -s ~/Library/Application\ Support/Google/AndroidStudiox.x/plugins ~/Library/Application\ Support/AndroidStudiox.x命令回车,命令成功之后再次执行,flutter doctor检测环境是否正常,其中x.x代表的Android Studio版本
2、打开flutter项目中 android 选项里面app里面的 build.gradle文件
复制如下代码到该文件指定的位置当中,
其中applicationId 是你自己项目配置的
embed "io.flutter:flutter_embedding_release:1.0.0-xxx",中xxx的版本需要自己电脑中搜索,搜索engine.version这个文件,文本编辑打开复制粘贴即可。
def isLib=true
if(isLib){
apply plugin: 'com.android.library'
}else {
apply plugin: 'com.android.application'
}
删除原有的
apply plugin: 'com.android.application'
defaultConfig目录下面粘贴下面代码
if(!isLib){
applicationId "xxxxxx"
}
if(isLib){
ndk{ abiFilters 'armeabi','armeabi-v7','x86' }
}
if (isLib) {
apply plugin: 'com.kezong.fat-aar'
}
复制下面的代码到最下面
dependencies {
// implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
//新增:将libflutter.so 和 flutter_embedding.jar ,同时和第三方插件打包到aar中
if (isLib) {
// 添加 flutter_embedding.jar release 注释
① embed "io.flutter:flutter_embedding_release:1.0.0-xxx"
// 添加各个 cpu 版本 flutter.so 注释
//embed "io.flutter:x86_64_debug:1.0.0-c8e3b9485386425213e2973126d6f57e7ed83c54"
// embed "io.flutter:x86_debug:1.0.0-c8e3b9485386425213e2973126d6f57e7ed83c54"
embed "io.flutter:arm64_v8a_release:1.0.0-xxx"
embed "io.flutter:armeabi_v7a_release:1.0.0-xxx"
//添加fat-aar处理flutter打包成aar中三方依赖
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') {
reader -> plugins.load(reader)
}
}
plugins.each { name, _ ->
embed project(path: ":$name", configuration: 'default')
}
}
}
3、打开android 下面 build.gradle文件,修改配置如下,
classpath "com.kezong:fat-aar:1.2.15"
maven { url "http://download.flutter.io" }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
4、打开如图所示AndroidManifest.xml文件
删掉application的配置项,删掉主入口页面的配置项
5、打开Terminal窗口,cd到android目录下,如果不会请自行百度,
懒人方法(mac):控制板左边长按,拖动到terminal中即可
输入命令flutter pub get,命令执行完如上图所示,再执行下面打包命令
./gradlew assembleRelease
Windows 命令 去掉 ./即可,打包成功之后如下图所示
6、打包成功之后,在build目录下面app目录下面outputs下面aar下面找到xxx-release.aar扔给安卓工程师使用即可
注意:flutter项目中所有引用的classpath "com.android.tools.build:gradle:4.1.1"
compileSdkVersion 28buildToolsVersion "28.0.3"
minSdkVersion 16targetSdkVersion 28
需要一致
如若上述打包发生未知错误,备用方式,把flutter项目下android包作为一个安卓原生项目打开,点击下图操作进行手动打包,生成的aar文件在同上面的方式当中
二、Man远程包
plugins {
id 'maven'
}
//上传maven服务
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: “需要上传的库的地址”) {
authentication(userName: 'xxx', password: xxx)
}
pom.project {
//版本名称
version '1.1.1'
//aar文件名称
artifactId 'libandroid'
//aar文件所在maven包路径
groupId 'com.beijiait.android_lib'
packaging 'aar'
//更新描述
// description 'update version 1.1.0 add new method'
}
}
}
}
重复上面第二步配置,然后输入 ./gradlew uploadArchives进行上传
三、引用所上传的maven包
project标签下面的gradle allprojects里面添加
maven { url 'maven私服路径'}
app下面的 gradle dependencies里面添存储路径
implementation 'com.xxx:libandroid:1.1.1@aar'
其中@不能省略(需要额外配置才可以省略)
android标签里面添加如下代码
repositories {
flatDir { dirs 'libs' }
}
点击Sync Now 等待编译完成