建立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 执行打包命令了。

时间: 2024-08-27 12:58:49

建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统的相关文章

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

在<建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期>这篇文章中介绍多渠道打包的流程.很多时候我们需要将打包好的apk上传到ftp中,这时候我可以修改custom_rules.xml这个文件就可以实现这个需求了. 1.下载 common-net-3.3.jar 并将其放在ant安装目录下的lib文件夹中. 2.修改ant.properties文件 key.store=./test.keystore key.alias=test.keystore key.store.

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

?团队开发时,每天都需要输出一个apk包给其它部门的同事测试验证.打包几乎是每天必须完成的功课.如果用IDE来输出apk,那速度是非常慢的,如果还需要有不同渠道的apk包,那程序猿都要疯了.当然也有用ant工具的,这个工具可以很快的打包apk,但还是需要自己在命令行中输出,那也不是特别完美.所以建立一个定时打包系统来解救苦逼的程序猿吧. 本篇的主要目的是建立一个可以打多渠道包的环境. 原文地址:http://angrycode.net/article/484.html

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

经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术和运行时修改字节码,如果有不明白的可以查看我的博客的前两篇中关于这两种技术的介绍.接下来我们将介绍另一种简单适用的防止apk反编译的技术-伪加密. 一.伪加密技术原理 我们知道android apk本质上是zip格式的压缩包,我们将android应用程序的后缀.apk改为.zip就可以用解压软件轻松的将android应用程序解压缩.在日常生活或者工作中,我们通常为了保护

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

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

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

原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo,酒店logo等) 如何在标注上显示信息窗口,以及添加文字标签等其他覆盖物: 最后,介绍一个获取坐标的给力工具. ---------------------------------------------------------------------------------------------------

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

原文:WEB项目(B/S系统)打包安装(总结篇) 打包安装程序的制作选择性还很多的,有installshield,wise installer,inno setup这几个做打包安装项目都是很强大的,要搞出界面大气个性化的安装,还是得用这几个才行,我这篇说的是.NET自带的安装项目打包WEB系统的,.NET打包安装项目虽然傻傻的,也比较丑,但是搭建安装项目快速也能满足总体的要求,如果没有足够的时间研究重量级的安装工具,短时间内用.NET自带的安装项目也是一个良好的选择.网上有很多关于用.NET打包

垃圾回收GC:.Net自动内存管理 上(三)终结器

垃圾回收GC:.Net自动内存管理 上(三)终结器 垃圾回收GC:.Net自动内存管理 上(一)内存分配 垃圾回收GC:.Net自动内存管理 上(二)内存算法 垃圾回收GC:.Net自动内存管理 上(三)终结器 前言 .Net下的GC完全解决了开发者跟踪内存使用以及控制释放内存的窘态.然而,你或午想要理解GC是怎么工作的.此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包含非常详细的内在算法描述.同时,还将讨论GC的内存清理流程及什么时清理,怎么样强制清理. 终结器 GC提供了另外一个能

统一认证系统(三)

程序员在为某个应用系统编写接入其它应用系统的程序代码的时候,常常为了用户认证大伤脑筋:1) 让最终用户频繁登录? 似乎是一个让用户很难接受的解决方案.2) 在代码中内置用户名和密码? 代码需要随用户和密码的变化经常维护,同时在很多场合下,用户名和密码对于程序员来说可能是不可见的. 如何解决这一问题呢?经过讨论,决定开发一个统一身份认证服务,以解决这一应用集成中碰到的用户认证的问题.这个服务需要达到以下功能和目标: 支持Web Services技术框架,使得在对各个应用系统实施基于Web Serv

蓝缘系统第三版本即将开源;基于springMVC+Apache shiro? 1.2.3+Mybai

蓝缘系统第三版本即将开源:基于springMVC+Apache shiro 1.2.3+Mybaits3.x的权限系统,,开放源码,支持开源 1.0版和2.0版的源码已经开源1.0版本:http://blog.csdn.net/mmm333zzz/article/details/16863543 2.0版本:http://blog.csdn.net/mmm333zzz/article/details/37773589 关于3.0新版本的说明: 一大亮点: 采用最新的技术流行框架:springMV