建立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=test apk.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:$PATH cd /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 执行打包命令了。
建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统的更多相关文章
- 建立apk定时自动打包系统第二篇——自动上传文件
在<建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期>这篇文章中介绍多渠道打包的流程.很多时候我们需要将打包好的apk上传到ftp中,这时候我可以修改custo ...
- 建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期
团队开发时,每天都需要输出一个apk包给其它部门的同事测试验证.打包几乎是每天必须完成的功课.如果用IDE来输出apk,那速度是非常慢的,如果还需要有不同渠道的apk包,那程序猿都要疯了.当然也有用 ...
- “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第三篇(登录窗口的实现以及如何保存登录者的信息)
一.前言: 1.再看这篇文章的时候,您是否已经完成前两篇介绍的文章里的功能了?(Tabs页的添加,Tabs页右键的关闭,主题的更换) 2.今天来说说登录窗口吧,看截图: ...
- Android窗口系统第三篇---WindowManagerService中窗口的组织方式
Android窗口系统第一篇—Window的类型与Z-Order确定 Android窗口系统第二篇—Window的添加过程 上面文章梳理了一个窗口的添加过程,系统中有很多应用,每个应用有多个Activ ...
- android apk 防止反编译技术第三篇-加密
上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...
- 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注
原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...
- WEB项目(B/S系统)打包安装(总结篇)
原文:WEB项目(B/S系统)打包安装(总结篇) 打包安装程序的制作选择性还很多的,有installshield,wise installer,inno setup这几个做打包安装项目都是很强大的,要 ...
- Oracle JOB的建立,定时执行任务
Oracle JOB的建立,定时执行任务 oracle job的相关设置 next date: 2010-12-28 18:05:00 interval: to_date(to_char(sysdat ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
随机推荐
- 【译】.NET Core 3.0 发布自包含单体可执行程序
.NET Core 提供的发布应用程序选项 self-contained 是共享应用程序的好方法,因为应用程序的发布目录包含所有组件.运行时和框架.您只需要告诉使用者应用程序的入口 exe 文件,就可 ...
- 【动态规划例题-数塔问题】-C++
描述 观察下面的数字金字塔.写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以 从当前点走到左下方的点也可以到达右下方的点. 在上面的样例中,从13到8到26到15到24 ...
- 新手小白快速登天日记之安装python以及环境变量和pycharm解释器较为详细教程
Python解释器安装及环境变量配置 Python官方网站:www.python.org 首先打开这个网址,找到downloads选择,因为我是Windows所以下载windows的,因电脑而异 然后 ...
- Atlassian In Action-Jira之核心插件(三)
目录 BigPicture BigPicture特点介绍 管理员管理菜单 任务列表 任务管理 设置 最佳实践 Jira Misc Workflow Extensions 最佳实践 自动分配 自动化流程 ...
- 个人永久性免费-Excel催化剂功能第40波-工资、年终奖个人所得税计算函数
学Excel的表哥表姐们必定有接触过个人所得税的案例学习,在计算个人所得税这个需求上,大家的层次也是很多种多样,当然Excel催化剂推荐的方式仍然是经过封装后的简单明了的自定义函数的方式,此篇已为财务 ...
- c实现生产者消费者问题。 windows下。
#include <stdio.h>#include <windows.h> #define P(S) WaitForSingleObject(S,INFINITE)//定义W ...
- 九、chart控件的使用(图表数据的展示)
chart属于老插件网上还有新的插件功能也更多) Chart控件是VS自带的控件,只是比较老了,功能肯定不如现在出来的某些插件强,不过对于简单的显示还是够用:那么现在来看看chart控件的使用方法: ...
- mysql8.0忘记密码如何操作?
很不幸,刚安装了MYSQL8,由于密码验证方式的不同,自己折腾了一小会,不小心退出来了,进不去了.从网上面查了一下资料,好多都不是特别好使,最后摸索出来可以进行如下操作: 1. 在配置文件中设置将密码 ...
- flink入门实战总结
随着大数据技术在各行各业的广泛应用,要求能对海量数据进行实时处理的需求越来越多,同时数据处理的业务逻辑也越来越复杂,传统的批处理方式和早期的流式处理框架也越来越难以在延迟性.吞吐量.容错能力以及使用便 ...
- AbstractCollection
概述 这个类提供了实现Collection接口的骨架,来最小化实现此接口所做的工作. 要实现一个不可修改的 collection,编程人员只需扩展此类,并提供 iterator 和 size 方法的实 ...