测试人员打开一个短链,便可直接下载内测程序,
免费 App 托管平台
fir.im 要帮开发者简化内测过程
复制代码
#一行命令就完成了原先开发须要作的工做
sh bu.sh "这个版本改了啥"
复制代码
1.开发同窗:手动打包或者执行./gradlew clean assembleRelease
2.开发同窗:进入fir.im上传测试apk(支持网页,api接口等方式上传)
3.测试同窗:找到对应的文件下载测试
复制代码
```
buildTypes {
release {
.....
applicationVariants.all { variant ->
variant.outputs.all {
//outputFileName 是打包生成的apk文件名,
//这里versionName和versionCode用_分割,后续方便脚本使用
outputFileName = "${variant.productFlavors[0].name}_${defaultConfig.versionName}_${defaultConfig.versionCode}_release.apk"
}
}
}
}
```
复制代码
#bu.sh
#!/usr/bin/env bash
##使用方法Terminal在工程目录下 sh bu.sh "这个版本改了啥"
declare -a apks
declare changelog
#入参${1} changelog 必需要有
if [ $# -eq 1 ]
then
chmod +x gradlew
./gradlew clean assembleRelease
changelog=${1}
else
echo ""
echo "Usage: $0 release_version"
echo ""
echo ""
exit 1
fi
#查找当前目录下的全部apk文件,并加入到apks数组中
#${1} 当前目录
function findApk(){
for i in `ls ${1}`
do
if [ -d "${1}/${i}" ]
then
echo "${i}是目录"
# 若是是目录 ,则继续遍历
findApk ${1}/${i}
elif [[ ${i} =~ ".apk" ]]
then
apks=(${apks[@]} "${1}/${i}")
echo "${i}是apk文件"
fi
done
}
#上传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文件,不知道上传哪一个"
else
echo "准备上传:"${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:android
1.api token , 须要到fir.im上获取shell
https://fir.im/docs/description
复制代码
2.这里用到了 jq 使用参考:json
https://blog.csdn.net/offbye/article/details/38379195
复制代码