关于打包
发布的打包是兴奋,测试的打包是耗时耗力,有时候,做了一半的东西,突然给中断,要求你给另一个项目打包个测试,这时候,你要打开另一个项目,编译,打包,上传,通知测试,一个流程下来,十几分钟过去了,但是不可能就这样看着干等十几分钟,很多人都会选择继续之前的工作,于是······,也是是一个钟,两个钟,那个工作做完了或者刚好想起打包的事,才回来查看打包完了没有,上传再通知测试,所以,把一切交给程序,想当于多线程,让程序帮我们自己把编译,打包,上传,通知测试这一流程简化为一句代码,然后我们可以继续做我们的手头的工作了
若需要最终结果,请把鼠标滚到最后,整个脚本的代码都贴在最后,前面可忽略
基于手头的项目,打包的流程
接到打包任务的时候,执行打包脚本,这个脚本会先拉取最新的项目(web app)代码,并将代码copy到相对应的sdk中(iOS or android),然后不同的平台执行不同的命令进行打包,android平台可以选择是否打渠道包,最后打包完上传发邮件通知测试人员,一切尽在一行代码中,爹妈不用再操心你老忘事啦
打包脚本
先根据不同的平台写好脚本,再进行合并
iOS
- 命令行进入项目
sdk - 执行
xcodebuild clean,清除信息 - 执行
xcodebuild build,重新编译,生成.app - 使用
xcun打包成.ipa - 上传
fir.im - 发邮件通知相关人员
|
|
目前的项目是web app,使用HBuilder工具开发,所以这脚本只适用于该类项目,若为原生项目,按需修改
使用此脚本需要修改hbuilder_appid为相应的值,若使用官方的sdk进行离线打包,hasPods为false,若自己配置的离线打包sdk,使用了pod管理第三方,需要设置为true
直接命令行执行:
期间,会生成 xx.app
紧接着,将xx.app打包成 xx.ipa
最后,上传到fir.im
android
- 进入项目
sdk - 执行
./gradlew clean,清除信息 - 执行
./gradlew assembleRelease,编译出签名的apk - 打渠道包
- 上传
fir.im
编译打包apk
先在
Android studio中配置:
配置完,生成:
配置打包签名:
生成代码:
命令行进入安卓sdk项目所在根目录,执行:
生成的apk如图:
渠道包
安卓经常会发布在不同的平台,所以对应平台会打出不同的渠道包
这里需要几个东西,上面签名的
apk,一个渠道文件(channel_list.txt),一个渠道包脚本(channel.py),一个对apk优化的脚本(zpalign_batch.sh或者zpalign_batch.bat)
channel_list.txt
channel.py
zpalign_batch.sh
zpalign_batch.bat
在以上文件放在同一目录,执行:
结果如图:
脚本合并
以上是
iOS和android的不同打包方式,对于懒癌晚期的我们来说,太复杂了,好了,现在可以忘记上面的东西,只要记住下面的合并完的脚本,先看下项目目录:




archive用于存放打包后的apk和ipahbuilder_android_sdk存放打包的android sdkhbuilder_ios_sdk存放打包的iOS sdkweb_project存放我们的web app项目channel_list.txt,android,打包渠道zipalign_batch.bat和zipalign_batch.sh,对apk进行优化UTea.py,主要代码,UTea为对应项目名,项目不同,按需修改为项目名
终端cd到当前位置,输入下面命令,go 你:


以上为android和iOS各自生成的最终文件,用于上传到fir.im
差点忘记贴代码🙄️:
第一次使用,需要手动配置xcode的签名以及保证项目编译通过,android需要配置签名文件,然后按照demo的格式,可以自己修相关路径,原本是想用一个python脚本,打包多个项目,但是目前的项目需要一个id,这个id属于随机生成,若每次需要输入太过麻烦,便改为,一个项目对应一个脚本
自动打包终于告一段落了,之前写的iOS自动打包,所缺的android打包也补上了,可以继续当一名懒癌晚期患者了