建立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数据库 ...
随机推荐
- GPS常识-B版(简)
第一章 绪论 1.简述GPS系统的特点有哪些? 在测绘工程中有如下优点:(1)定位精度高(2)观测时间短(3)测站间无需通视(4)可提供地心坐标(5)操作简便(6)全天候作业(7)功能多.应用广 GP ...
- Kubernetes1.15 部署 coredns
coredns.yaml文件如下所示 # __MACHINE_GENERATED_WARNING__ apiVersion: v1 kind: ServiceAccount metadata: nam ...
- 使用R语言预测产品销量
使用R语言预测产品销量 通过不同的广告投入,预测产品的销量.因为响应变量销量是一个连续的值,所以这个问题是一个回归问题.数据集共有200个观测值,每一组观测值对应一种市场情况. 数据特征 TV:对于一 ...
- 单元测试jest部署
引入jest需安装的基础插件: 基础插件 @babel/core 编译工具核心模块包 @babel/preset-env 编译工具,支持es2015特性的编译打包工具包 babel-jest 对.js ...
- 个人永久性免费-Excel催化剂功能第51波-聚光灯功能,长宽工作表不看错位使用
Excel的聚光灯功能,笔者是有点看不上,也曾经写文吐槽过这些类似的功能的实用性,但现实可能真的很多小白很需要,大家Excel水平参差不齐,大量的不规范做表习惯,致使此功能使用场景仍然非常广阔.很怀疑 ...
- vue教程(一)-html使用vue
前后端分离.微服务框架是当下比较流行的词汇,而vue就是前端框架的佼佼者.下面重点介绍一下vue的用法: vue起步:1.引包 2.启动new Vue({el:目的地,template:模板内容 ...
- Python基础总结之第一天(新手可相互督促)
我是大刘啊~ 坚持每周更新最少一次,为年薪20万迈进! 我为什么要学Python? 答:我想要涨工资...家里有矿我就不会来烧脑了...... 先写点什么呢? 新手,hhh,激动无比,无从下爪.... ...
- 第二章: Java总结
第二章笔记 什么是变量:变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样.#在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据.说白了,变量就是代表程序运行时存放 ...
- 私有网络(VPC)概述
1 什么是私有网络(VPC) 私有网络是一块可用户自定义的网络空间,您可以在私有网络内部署云主机.负载均衡.数据库.Nosql快存储等云服务资源.您可自由划分网段.制定路由策略.私有网络可以配置公网网 ...
- Cordova-iOS SDK封装
源码编译与制作静态库 下载cordova-ios源码,下载地址为:cordova-ios 解压后使用Xcode进行编译,编译选定模拟器和Generic iOS Device,cmd+B,编译成功(Dy ...