Android Studio 一行命令实现打包并发布到fir.im

fir.im简介

测试人员打开一个短链,即可直接下载内测程序,
免费 App 托管平台 
fir.im 要帮开发者简化内测过程
复制代码

现在工作流程

#一行命令就完成了原先开发需要做的工作
sh bu.sh  "这个版本改了啥"
复制代码

原先工作流程

1.开发同学:手动打包或者执行./gradlew clean assembleRelease
2.开发同学:进入fir.im上传测试apk(支持网页,api接口等方式上传)
3.测试同学:找到对应的文件下载测试
复制代码

实现过程

编译脚本

1.前置准备 app的build.gradle中
```
buildTypes {release {.....applicationVariants.all { variant ->variant.outputs.all {//outputFileName 是打包生成的apk文件名,//这里versionName和versionCode用_分割,后续方便脚本使用outputFileName = "${variant.productFlavors[0].name}_${defaultConfig.versionName}_${defaultConfig.versionCode}_release.apk"}}}
}
```
复制代码
2.在工程目录下新建buid和上传脚本
 #bu.sh#!/usr/bin/env bash
##使用方法Terminal在工程目录下 sh bu.sh  "这个版本改了啥"
declare -a apks
declare changelog#入参${1} changelog 必须要有
if [ $# -eq 1 ]
thenchmod +x gradlew./gradlew clean assembleReleasechangelog=${1}
elseecho ""echo "Usage: $0 release_version"echo ""echo ""exit 1
fi#查找当前目录下的所有apk文件,并加入到apks数组中
#${1} 当前目录
function findApk(){for i in `ls ${1}`doif [ -d "${1}/${i}" ]thenecho "${i}是目录"# 如果是目录 ,则继续遍历findApk ${1}/${i}elif [[ ${i} =~ ".apk" ]]thenapks=(${apks[@]} "${1}/${i}")echo "${i}是apk文件"fidone
}
#上传apk文件到fir.im
#${1} apk文件路径
function uploadApk2Fir(){apkPath=${1}#这里要注意的是编译生成的文件名中versionName和versionCode要用_分割array=(${apkPath//_/ })size=${#array[@]}versionName=${array[$size-3]}versionCode=${array[$size-2]}#upload.sh 在另外一个shell文件中单独编写sh upload.sh ${apkPath} ${versionName} ${versionCode}  ${changelog}
}#dir=app/build/outputs/apk build后生成apk的文件目录
findApk app/build/outputs/apk
if [ ${#apks[@]} -ne 1 ]then#这里注意的是,我们希望一次打包只出现一个测试包,要不然选哪个echo "有多个apk文件,不知道上传哪个"elseecho "准备上传:"${apks[0]}uploadApk2Fir  ${apks[0]}
fi复制代码

上传脚本

#!/usr/bin/env bash
#sh upload.sh  app/build/outputs/apk/ngmm_atestServer/release/ngmm_atestServer_4.4.1_35_release.apk  4.4.45  38  test2
#${1} 文件路径
#${2} versionName
#${3} versionCode
#${4} changelog#1.获取 upload key 和token url
#这里用到了 jq 使用参考:https://blog.csdn.net/offbye/article/details/38379195
resultFile=fir_get_upload_token_result.json
value=`
curl -X "POST" "http://api.fir.im/apps" \-H "Content-Type: application/json" \-d "{\"type\":\"android\", \"bundle_id\":\"your packagename\", \"api_token\":\"fir api token\"}"  > ${resultFile} `
upload_key=` jq .cert.binary.key ${resultFile} | sed 's/\"//g' `
upload_token=` jq .cert.binary.token ${resultFile} | sed 's/\"//g'`
upload_url=` jq .cert.binary.upload_url ${resultFile} | sed 's/\"//g' `
rm -rf ${resultFile}curl   -F "key=${upload_key}"             \-F "token=${upload_token}"           \-F "file=@${1}"            \-F "x:name=appname"             \-F "x:version=${2}"         \-F "x:build=${3}"               \-F "x:changelog=${4}"       \${upload_url}
复制代码

ps:

1.api token , 需要到fir.im上获取

https://fir.im/docs/description
复制代码

2.这里用到了 jq 使用参考:

https://blog.csdn.net/offbye/article/details/38379195
复制代码


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部