思路
- 先执行
flutter pub get
获取项目最新依赖插件。 - 对 flutter module 进行打包成 aar,因为是上传到 maven 的,只要 release 版本即可。
- 对打包出来的 aar 文件,简单粗暴使用
mvn deploy
指令进行上传到 maven。 - 上传完之后,提示如何引入到项目。
完整构建脚本
创建一个 android_build.sh
文件
#!/usr/bin/env bash
###############################################################
# 脚本是 shell 文件,只适用于 mac 系统
# 执行脚本时,版本号为必填参数
# 在项目路径下执行命令:./android_build.sh 版本号
# 若出现提示 `zsh: command not found: android_build.sh`
# 解决方法:
# 1. vim ~/.zshrc
# 2. 找到 “# User configuration” 在其位置下面加 `source ~/.bash_profile`
# 3. 保存退出
# 4. source ~/.zshrc
###############################################################
# 在执行出错时结束程序
set -e
# 读取版本号
version=$1
###### 1. 检查参数
if [ ! -n "$version" ]; then
echo ">>> 版本号参数不能为空!"
# 结束脚本运行
exit
fi
###### 2. 获取/更新包
echo ">>> 执行 flutter pub get!"
flutter pub get
###### 3. 构建依赖项目的AAR
echo ">>> 执行构建 ${version} release 版本 aar !"
flutter build aar --no-debug --no-profile --build-number ${version}
echo ">>> 构建成功"
###### 4. 将文件上传 maven
echo ">>> 执行上传 Maven"
# 打包出来的 aar 文件存放路径
file_path="build/host/outputs/repo/com/chicdeals/flutter/flutter_release/$version/flutter_release-$version"
mvn deploy:deploy-file \
-s="mvn-settings.xml" \
-DpomFile="$file_path.pom" \
-DgeneratePom=true \
-Dfile="$file_path.aar" \
-Durl="https://oss.gojun.me/repository/flutter-release" \
-DrepositoryId="com.chicdeals.flutter" \
-DgroupId="com.chicdeals.flutter" \
-Dpackaging=aar
echo ">>> 上传成功"
###### 5. 提示如何引入
echo ">>> 项目接入地址:"
echo ">>> implementation 'com.chicdeals.flutter:flutter_release:$version'"
与 android_build.sh
文件同目录下创建 maven 账号密码配置文件 mvn-settings.xml
。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups></pluginGroups>
<proxies></proxies>
<servers>
<!-- server
| Specifies the authentication information to use when connecting to a particular server, identified by
| a unique name within the system (referred to by the 'id' attribute below).
|
| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
| used together.
|
-->
<server>
<id>com.chicdeals.flutter</id>
<username>Maven账号</username>
<password>Maven密码</password>
</server>
</servers>
</profiles>
</settings>
解释
上面脚本的注释已经做了比较详细的解释了,在这里对几个比较重点的地方再做一遍解释说明。
- 执行命令是
./android_build.sh 版本号
版本号为必传参数。 - 执行 mvn 命令的前提需要 Mac 系统安装 Maven,安装方法建议通过
brew install maven
安装。 - Maven 账号密码配置文件在
mvn-settings.xml
,其中文件配置的id
需要与DgroupId
和DrepositoryId
保持一致。
拓展
- 如何验证安装成功 Maven,执行以下命令:
$ mvn -version
成功时,输出的日志如下:
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven/apache-maven-3.6.3
Java version: 1.8.0_172, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.3", arch: "x86_64", family: "mac"
- 想查看详细 Maven 上传日志,在命令行加多
--debug
即可。
mvn --debug deploy:deploy-file \
-s="mvn-settings.xml" \
-DpomFile="build/host/outputs/repo/com/chicdeals/flutter/flutter_release/1.0/flutter_release-1.0.pom" \
-DgeneratePom=true \
-Dfile="build/host/outputs/repo/com/chicdeals/flutter/flutter_release/1.0/flutter_release-1.0.aar" \
-Durl="https://oss.gojun.me/repository/flutter-release" \
-DrepositoryId="com.chicdeals.flutter" \
-DgroupId="com.chicdeals.flutter" \
-Dpackaging=aar