android shell打包
来源:互联网 发布:手机注册淘宝达人 编辑:程序博客网 时间:2024/05/21 17:43
android常见打包方式
- 原始的打包方式(eclipse或者android studio,打包时很容易让开发工具crash);
- python脚本打包(这个接触得少);
- ant脚本打包(我前面有篇文章介绍了http://blog.csdn.net/a394268045/article/details/50838478);
- shell脚本打包(本帖重点说这个~)。
shell打包环境配置
如果是在windows上的话,需要有shell环境(自行百度),本人是在mac上进行开发打包的,自支持shell命令,另外需要android环境(apktool和zipalign),这个不讲太多,如果环境有问题的话,请留言~
shell批量打包流程
定义全局常量
全局常量通常是定义的一些路径啥的,举例如下:
RESOURCE_PATH='/Users/luoxiaohui/Desktop/zhenwei_pack/Resource_test'APKOUTPUT_DIR='/Users/luoxiaohui/Desktop/zhenwei_pack/apk'
左边一般是大写,然后下划线隔开,右边路径用单引号引起来~
解包
apktool d test.apk
按渠道将解开的包放到不同目录
echo "ready to create temp dir"TARGETOUTPUT_PATH=temp/$channelmkdir -p $TARGETOUTPUT_PATHcp -rf target/ $TARGETOUTPUT_PATHecho "create temp dir completely"
正则表达式抠出参数
#正则表达式抠出所需参数FILE_LINE=`cat channel_test.txt|grep ${channel}`A_=`echo $FILE_LINE|awk -F "@" '{ print $1 }'`B_=`echo $FILE_LINE|awk -F "@" '{ print $2 }'`C_=`echo $FILE_LINE|awk -F "@" '{ print $3 }'`echo "parameterA—->"$A_echo "parameterB——>”$B_echo "parameterC——>"$C_
替换渠道所需参数及资源文件
#替换smali中存放R文件的目录echo "ready to replace replace R file"ORIGINAL_R=$TARGETOUTPUT_PATH/smali/…TARGETOUTPUT_R=$TARGETOUTPUT_PATH/smali/…/$channelcp -rf $ORIGINAL_R $TARGETOUTPUT_Rrm -rf $ORIGINAL_Recho "replace R file completely"#替换channel_test.txt中渠道所需参数#在某个small中更改参数sed -e “s/特殊字符穿/${A_}/g” $TARGETOUTPUT_PATH/smali/…/abc.smali > ./tmp.txtmv tmp.txt $TARGETOUTPUT_PATH/smali/…/abc.smali#在string.xml中替换appnamesed -e “s/app名/${$B_}/g” $TARGETOUTPUT_PATH/res/values/strings.xml > ./tmp.txtmv tmp.txt $TARGETOUTPUT_PATH/res/values/strings.xml #在manifest中替换baidu_keysed -e "s/baidu_key/${$C_}/g” $TARGETOUTPUT_PATH/AndroidManifest.xml > ./tmp.txtmv tmp.txt $TARGETOUTPUT_PATH/AndroidManifest.xmlecho "replace channel.txt completely"
打包
apktool b $TARGETOUTPUT_PATH
签名
DIST_DIR=$TARGETOUTPUT_PATH/distjarsigner --verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore your.keystore -storepass 密码 $DIST_DIR/target.apk 别名zipalign -v 4 $DIST_DIR/target.apk $DIST_DIR/$A_.apkmv $TARGETOUTPUT_PATH/dist/$A_.apk $APKOUTPUT_DIR/$A_.apk
遇到的问题及思路
1. 对于shell脚本不是很熟练;
写脚本前,将项目打包需求先列出来,然后一个个对号入座,遇到不懂的shell语句,直接百度谷歌,但不要去了解它的所有,能为我们所用就行了~
2. mac中sed替换的特殊用法
刚开始我用的sed -i去替换,但是会提示路径不对,其实路径是对的,然后用的sed -e,但是它需要先放到临时文件,中转一下
3. 替换smali文件注意
我替换某个smali的文件的某个带final的静态常量,发现没替换过来,打包签名成功后,再解包去看,这个常量确实替换了,但就是没生效,我就纳闷了,后面将final字段渠道,就OK了~
最后,shell脚本下载地址:
http://download.csdn.net/detail/a394268045/9481031
0 0
- android shell打包
- android shell打包报错
- shell打包
- android studio shell 命令行自动打包(mac 平台)
- LINUX shell script 打包
- shell 批量打包
- shell打包ios程序
- shell自动打包ipa
- 通过shell脚本打包
- shell自动打包IPA
- Shell 自动化编译打包
- android 打包
- android-打包
- Android 打包
- android打包
- android打包
- Android打包
- Android 打包
- 关于nginx 403问题
- js设置cookie,为cookie中设置多个key value
- 绝对定位的div居中
- 免费的优质英文字体打包下载
- 算法 - Dijkstra 最短路径
- android shell打包
- finally的学习笔记
- CentOS6.5轻量级桌面化安装
- android ActionBar用法详解
- iOS --- 理解UIWindow及其常见使用场景
- 进程与线程
- dbms_stats和analyze汇总
- Hdu oj 1800 Flying to the Mars(Map)
- hdu2710 (素数删选法)