建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统
我们的思路是每天下班后团队各成员在指定的时间(例如下午18:30)之前把各自的代码上传到SVN,然后服务器在指定的时间(例如下午18:30)更新代码、执行ant 打包命令、最后将apk包存放在指定目录(或者上传指定ftp目录)、其他部门或者同事可以访问指定的地址来下载最新的APK包。就是在ubuntu系统中创建一个定时任务,这个任务每天会在指定时间执行事先编写好的编译脚本。这个定时任务在ubuntu中可以使用crontab来实现。(还不了解crontab的同学自行脑补啦)
一、环境准备
1、在ubuntu 12.04搭建编译环境。
关于Linux下ant编译Android的步骤可以参考 《建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期》和《建立apk定时自动打包系统第二篇——自动上传文件》 这个帖子。这个帖子虽然是在windows上操作的,但是步骤都是相似的。相信作为聪明的程序猿这点是可以举一反三的。
2、搭建好apk的编译环境之后我们要安装SVN客户端。unbuntu安装SVN非常简单。执行下列命令
sudo apt-get install subversion
等待完成之后,执行下面命令
svn --version
如果出现了svn版本以及相关帮助等信息说明svn已经安装好了。
二、安装apache服务
由于我的ubuntu服务器已经绑定了公司内网的IP(192.168.0.115),只要我将apk包存放在指定目录下(如apk),那么其他同事就是可以在浏览器中使用192.168.0.115/apk下查看或下载已经打好包的apk了。
1、安装apache服务。
ubuntu中安装apache服务也是很简单的。
sudo apt-get install apache2
安装好之后,自动打开了apache服务,其对外访问的目录默认是在/var/www/目录下,所以在浏览器中输入localhost,并出现It work!字样,说明apache服务安装成功
1、修改ant.properties
在这个文件中我们指定一个apk保存目录为apache服务下的一个目录
key.store=./test.keystore key.alias=test.keystore key.store.password=test key.alias.password=testapk.dir=/var/www/apk app.name=AntDemo #channel numbers market_channels=default_channel
这样,ant打好包之后只要是公司内网的同事就可以访问192.168.0.115/apk来下载最新的apk包了。
二、编写apk编译执行脚本
在《建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期》帖子中,我们是使用
ant deploy
进行打包的。因此我们的脚本的思路也是很简单的,先使用svn update 项目代码,然后使用ant deploy 命令。
1、在项目根目录(例如我的项目目录是/data/appworks/AntDemo)下面新建一个build-app.sh文件。文件的内容如下:
#!/bin/sh export JAVA_HOME=/data/dev/jdk export ANT_HOME=/data/dev/ant export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATHcd /data/appworks/AntDemo/#update echo "updating code from server." svn update --username 你的svn用户名 --password svn密码,无可省略echo "update finish.begin building the project." #deploy ant deploy echo "building app is finishing."
上面蓝色部分一定要设置,否则crontab不会执行这个脚本。这个问题困扰了楼主好久。切记切记!
编写好shell脚本之后,给build-app.sh添加执行权限
chmod +x build-app.sh
然后在项目目录下手动执行下这个脚本看看有没有错,如果可以打包成功,那么说明这个脚本是正确的了。
2、创建crontab任务。
使用下面命令编辑一个crontab任务
crontab -e
这个时候在shell中就打开了crontab的编辑状态下的页面,在这个页面的后面插入下面的指令
30 18 * * * /data/appworks/AntDemo/build-app.sh
然后编辑,保存
这时候crontab就会在每天的18:30执行/data/appworks/AntDemo/build-app.sh 执行打包命令了。
转载于:https://www.cnblogs.com/angrycode/p/4059687.html
建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统相关推荐
- 5G网络实现自动驾驶车联网——第三篇:5G网络实现远程SSH,远程桌面
5G网络实现自动驾驶车联网--第三篇:5G网络实现远程SSH,远程桌面 大家好我是Jones,写博客记录一下工作的痕迹,同时也对工作做一个总结,才疏学浅,难免会有很多纰漏,还请大家批评指正,创业初期, ...
- [玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot IK系统(ALS V4实现方案详解)
本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式. 教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>. 教程中使 ...
- 简书 u盘安装linux,Linux基础之自动化安装Linux系统第三篇
简介 这一篇本地安装CentOS6.9 当然也不需要用到FTP服务器和网络源了 所以就有点麻烦了需要修改很多地方 所以这一篇会有点多,要耐心看啊,当然我也要耐心的写 下一篇就开始说全自动网络安装了,但 ...
- android apk 防止反编译技术第三篇-加密apk
经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术和运行时修改字节码,如果有不明白的可以查看我的博客的前两篇中关于这两种技 ...
- android apk 防止反编译技术第三篇-加密
经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blo ...
- KitKat系统发现BUG:付费输入法更新后自动停用
相信很多使用Android智能手机的用户都会使用第三方键盘应用来替代系统默认的输入法.在最新的KitKat系统中用户可能已经注意当对付费的键盘输入法应用进行升级之后将会自动跳转到默认的键盘输入法.而更 ...
- 三十行代码轻松破解山东理工大学教务系统的登录问题
程序语言:python3.6 IDE:Pycharm 浏览器:chrome浏览器 山东理工大学教务处系统在前段时间换为正方股份软件的新系统 身为山东理工大学信管系的一名"好" ...
- 阿里云使用笔记-第三篇-使用阿里云App连接实例
一,前言 前面记录了首次登录阿里云实例,实现远程连接,SSH连接 阿里云还可以通过自己的App管理实例 这一篇介绍如何使用阿里云App连接实例 二,使用阿里云App连接实例 1)复制密钥信息 在上一篇 ...
- “中国版特斯拉”绝地反击,自动驾驶开辟“第三条路”?
马斯克最近可以不用睡在工厂了. 不久前,中国宣布将相当幅度降低汽车进口关税,很可能将整车关税从目前的25%降低到15%,以特斯拉为代表的美国车企将直接因此受益. 但对中国车企来说,降税带来竞争结果并非 ...
最新文章
- string字符串转换为array(互换)
- 具体分析Struts工作流程
- python模块介绍-locustio:性能测试工具locustio
- Delphi中预想不到的代码楼主zswang(伴水清清)(专家门诊清洁工)2002-05-16 14:20:38 在 Delphi / VCL组件开发及应用 提问
- read/fread write/fwrite 的区别
- 【错误纠正】关于文章《绕开数学,讲讲信息论》
- error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js
- 三星s4 android8,三星全面支持安卓8.0系统,14款手机更新让人眼红
- Glide:重新加载失败的问题
- 关于PHP你可能不知道的10件事
- 让Linux脱胎换骨的标致桌面与主题
- Win32编程day14 学习笔记
- ZK 在XML编辑器中设置.zul文件
- 怎么把ppt文字大小设置一致_其实,90%的大学生根本不会做PPT
- Snipaste 截图工具快捷键大全
- 人机平台:商业未来行动路线图
- 微信亲戚备注分组名称_微信隐藏小技巧,1分钟批量分组精准好友
- Postgresql学习03-C外部函数创建,及与Plsql自定义函数效率对比
- Windows环境下搭建SQL注入环境(sqli-labs)
- wincc7.0显示无法访问服务器,WinCC 7.0 SP3 安装时提示网络连接不可用,无法安装...
热门文章
- Markdown会干掉Html吗?
- jtabel 遍历_使用抽象表模型获取JTable中选定的行
- 为什么传值时加号变成了空格_URL的参数中有加号传值变为空格的问题(URL特殊字符)...
- python验证码 识别代码不准_谈谈Python进行验证码识别的一些想法
- C++中引用传递与指针传递区别(进一步整理)
- PHP培训选云和数据,送给云和数据郑州分中心PHP培训班全体学员的祝福
- 哪些网站在+1s后有神奇的功能
- 产品认知:你的产品适不适合快速去迭代?
- openwrt 遍译php_openwrt安装编译
- 六元均匀直线阵的各元间距为_给棉花地选购滴灌带时记住这几点,不再为棉花滴水时发愁...