我们的思路是每天下班后团队各成员在指定的时间(例如下午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自动打包系统的更多相关文章

  1. 建立apk定时自动打包系统第二篇——自动上传文件

    在<建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期>这篇文章中介绍多渠道打包的流程.很多时候我们需要将打包好的apk上传到ftp中,这时候我可以修改custo ...

  2. 建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期

    ​团队开发时,每天都需要输出一个apk包给其它部门的同事测试验证.打包几乎是每天必须完成的功课.如果用IDE来输出apk,那速度是非常慢的,如果还需要有不同渠道的apk包,那程序猿都要疯了.当然也有用 ...

  3. “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第三篇(登录窗口的实现以及如何保存登录者的信息)

    一.前言: 1.再看这篇文章的时候,您是否已经完成前两篇介绍的文章里的功能了?(Tabs页的添加,Tabs页右键的关闭,主题的更换)                 2.今天来说说登录窗口吧,看截图: ...

  4. Android窗口系统第三篇---WindowManagerService中窗口的组织方式

    Android窗口系统第一篇—Window的类型与Z-Order确定 Android窗口系统第二篇—Window的添加过程 上面文章梳理了一个窗口的添加过程,系统中有很多应用,每个应用有多个Activ ...

  5. android apk 防止反编译技术第三篇-加密

    上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...

  6. 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

    原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...

  7. WEB项目(B/S系统)打包安装(总结篇)

    原文:WEB项目(B/S系统)打包安装(总结篇) 打包安装程序的制作选择性还很多的,有installshield,wise installer,inno setup这几个做打包安装项目都是很强大的,要 ...

  8. Oracle JOB的建立,定时执行任务

    Oracle JOB的建立,定时执行任务 oracle job的相关设置 next date: 2010-12-28 18:05:00 interval: to_date(to_char(sysdat ...

  9. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

随机推荐

  1. Windows OS添加USB3.0驱动!

    原因:现在的win7.win2008等一些早期的系统在安装时无法使USB鼠标和键盘... 1.  素材(dism64工具.UltraISO工具.U盘一个) 2.  先使用UltrISO工具制作一个wi ...

  2. python爬取新浪股票数据—绘图【原创分享】

    目标:不做蜡烛图,只用折线图绘图,绘出四条线之间的关系. 注:未使用接口,仅爬虫学习,不做任何违法操作. """ 新浪财经,爬取历史股票数据 ""&q ...

  3. python 3.5学习笔记(第五章)

    本章内容 1.什么是模块 2.模块的导入方法 3.搜索路径 4.重要标准库 一.什么是模块 1.模块本质上是一个以.py 结尾的python文件,包含了python对象定义和python语句. 2.模 ...

  4. c++小游戏——职业战争

    #include<iostream> #include<cstdlib> #include<ctime> #include<cstring> #incl ...

  5. HTTPS协议学习笔记

    在前一段时间准备面试的时候,面试官反复提到了HTTPS这个协议.我只是单纯的知道,HTTPS是安全的应用层协议 是HTTP更安全的版本,通过对称密钥加密.但是具体的其他的,可能我不太了解.今天就专门抽 ...

  6. maven install时跳过测试

    xl_echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! - ...

  7. 《VR入门系列教程》之9---谷歌纸盒

    谷歌纸盒---基于智能手机的廉价VR眼镜     如果用汽车来做类比,Oculus Rift和GearVR就是特斯拉和兰博基尼,它们物美但是价不廉.要是主机性能不好,那么几百美元的Oculus眼镜就是 ...

  8. java练习---2

    //程序员:罗元昊 2017.9.6public class My{       public static void main(String[] args){              int a= ...

  9. IBM RAD中集成Websphere启动后无法debug解决办法

    问题描述: IBM Rational Application Developer for WebSphere软件在启动WebSphere的时候无法以debug模式启动,debug启动后显示为start ...

  10. JSP使用分层实现业务处理

    在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Connection co ...