前言
空闲时间,了解了一下Shell,Shell是用C语言程序编写的程序,它是用户使用Linux的桥梁,Shell是一种命令语言,又是一种程序设计语言。个人对Shell的了解知之甚少,不过在这方面也激起了我的求知欲,用短短的几行命令,就可以完成诸如文件复制,上传等强大的功能。用Shell命令打包AndroidApk,此项目是开发环境需在AndroidStudio下完成,
原理
命令行调用工程根目录下的gradlew,来完成打包
过程
1.配置versionCode从配置文件读取
配置versionCode,按照这篇文章先简单配置,其中可以去掉自增的代码,实际下面会不起作用,我们需要去用命令行自增(不改动也没问题)
2.新建一个文件AndroidBuild.sh(名字随意,后缀.sh)
任意文件夹下都可以
3.AndroidBuild.sh代码讲解
读取配置文件versionCode,并累加
shell读取
#version.properties文件所在的目录
path='/d/Disk/code_local2/jsb-link/frameworks/runtime-src/proj.android-studio/app/'
content=$(cat ${path}version.properties)
echo "读取内容:$content"
#读取文件的VERSION_CODE对应的value,保存versionCode变量
versionCode=`grep VERSION_CODE ${path}version.properties|cut -d'=' -f2`
累加
#将versionCode+1,得到累加后的addVersionCode
addVersionCode=`expr $versionCode + 1`
写入
# 将addVersionCode重新累加赋值给文件的VERSION_CODE
sed -i "s#^VERSION_CODE=.*#VERSION_CODE=${addVersionCode}#g" ${path}version.properties
找到gradlew对应目录
BUILD_TOOL_PATH='/d/Disk/code_local2/jsb-link/frameworks/runtime-src/proj.android-studio'
打包
assembleRelease参数指定打出所有的Release包,更多渠道包,debug包,可了解gradlew常用方法
cd $BUILD_TOOL_PATH && ./gradlew assembleRelease
AndroidBuild.sh全部代码
#!/bin/bash
#version.properties文件所在的目录
path='/d/Disk/code_local2/jsb-link/frameworks/runtime-src/proj.android-studio/app/'
content=$(cat ${path}version.properties)
echo "读取内容:$content"
#读取文件的VERSION_CODE对应的value,保存versionCode变量
versionCode=`grep VERSION_CODE ${path}version.properties|cut -d'=' -f2`
#将versionCode+1,得到累加后的addVersionCode
addVersionCode=`expr $versionCode + 1`
echo "versionCode====$versionCode"
# 将addVersionCode重新累加赋值给文件的VERSION_CODE
sed -i "s#^VERSION_CODE=.*#VERSION_CODE=${addVersionCode}#g" ${path}version.properties
content=$(cat ${path}version.properties)
addVersionCode=`grep VERSION_CODE ${path}version.properties|cut -d'=' -f2`
echo "替换之后====$content"
echo "addVersionCode====$addVersionCode"
#判断versionCode是否累加成功, -gt标识大于返回true
if [ $addVersionCode -gt $versionCode ]
then
# 打包apk
#gradlew 对应目录
BUILD_TOOL_PATH='/d/Disk/code_local2/jsb-link/frameworks/runtime-src/proj.android-studio'
echo "开始打包..."
#cd $BUILD_TOOL_PATH && ./gradlew assembleinsectRelease
cd $BUILD_TOOL_PATH && ./gradlew assembleRelease
openRootPath='D:\Disk\code_local2\jsb-link\frameworks\runtime-src\proj.android-studio\app'
#打包完成打开包所在的目录,当然,程序里面的这面绝对路径请替换成你对应的路径,不然程序运行不会成功
explorer $openRootPath'\build\outputs\apk\insect\release'
else
echo "error : versionCode未加1"
fi
执行AndroidBuild.sh文件
这里使用的是VisualStudio code(一个跨平台的编辑器),直接打开AndroidBuild.sh所在的文件夹
终端输入如下命令回车
打包中,还可看到打包进度,等进度走完就可打包完成,会自动打开打包好的apk所在目录
到此也算完成了,前面有点没有说明是只做了versionCode的自动获取,增加,以同样的原理也是可以实现version的自动获取和提升的,不过暂时没有尝试,原理是行的通的。做这个的主要目的是为了能在同一个具有能执行脚本能力的编辑器上,不需要切换编辑器的情况下,即使不用打开AndroidStudio,也能够打包,简单来说只是一个小工具