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

简介: 我们的思路是每天下班后团队各成员在指定的时间(例如下午18:30)之前把各自的代码上传到SVN,然后服务器在指定的时间(例如下午18:30)更新代码、执行ant 打包命令、最后将apk包存放在指定目录(或者上传指定ftp目录)、其他部门或者同事可以访问指定的地址来下载最新的APK包。

我们的思路是每天下班后团队各成员在指定的时间(例如下午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 执行打包命令了。

 

目录
相关文章
|
3月前
|
IDE 网络安全 开发工具
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
|
7天前
|
JavaScript C++ 容器
【Azure Bot Service】部署NodeJS ChatBot代码到App Service中无法自动启动
2024-11-12T12:22:40.366223350Z Error: Cannot find module 'dotenv' 2024-11-12T12:40:12.538120729Z Error: Cannot find module 'restify' 2024-11-12T12:48:13.348529900Z Error: Cannot find module 'lodash'
31 11
|
14天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
21天前
|
机器人 Shell Linux
【Azure Bot Service】部署Python ChatBot代码到App Service中
本文介绍了使用Python编写的ChatBot在部署到Azure App Service时遇到的问题及解决方案。主要问题是应用启动失败,错误信息为“Failed to find attribute 'app' in 'app'”。解决步骤包括:1) 修改`app.py`文件,添加`init_func`函数;2) 配置`config.py`,添加与Azure Bot Service认证相关的配置项;3) 设置App Service的启动命令为`python3 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func`。
|
11天前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
2月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
2月前
|
Linux Android开发 iOS开发
使用Kivy创建“Hello World”应用并打包成APK
使用Kivy创建“Hello World”应用并打包成APK
|
3月前
|
JSON 数据格式
【Azure App Service】当App Service中使用系统标识无法获取Access Token时
【Azure App Service】当App Service中使用系统标识无法获取Access Token时
|
3月前
|
缓存
【Azure Function】Function App代码中使用Managed Identity认证获取Blob数据时遇见400报错
【Azure Function】Function App代码中使用Managed Identity认证获取Blob数据时遇见400报错
【Azure Function】Function App代码中使用Managed Identity认证获取Blob数据时遇见400报错
|
3月前
|
存储 Linux 网络安全
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)

热门文章

最新文章