[系统集成] Android 自动构建系统
一、简介
android app 自动构建服务器用于自动下载app代码、自动打包、发布,要建立这样的服务器,关键要解决以下几个问题:
1. android app 自动化打包
android 的打包一般是人工通过eclipse或者studio的ui界面打包的,如果要让系统自动打包,必须在控制台环境下;
只要按照 google 的文档,把 eclipse 或者 studio 工程转化为 ant 或者 gradle 工程,就可以在控制台环境下打包了;
这里,我们选择 ant,主要是它容错好,遇到图片格式等问题不会中断整个进程,而我们在打包 gradle 工程的时候,它无论遇到什么错误都会中断整个进程(由于时间紧,我们没有仔细寻找改变 gradle 中断的方法,如果有网友知道可以告诉我)。
2. 任务提交方式简单
既然是自动化构建服务器,就应该有一个界面友好、配置方便的任务提交 UI。在不知道 jenkins 前,我们自己编写 UI 系统,有了 jenkins 后就方便多了,只需要简单配置就可以把构建服务器与 jenkins 集成起来,利用 jenkins 功能强大的可视化工具管理构建服务。
注:
android app 构建系统需要开启 ssh 服务,并且编写一个能传入参数、传出结果,而且能完成下载代码、打包、发布到 ftp 的构建脚本,通过 ssh 服务和构建脚本,构建服务器就能与 jenkins 集成了;
二、下面是我建立的Android APP自动构建服务器详细介绍
任务提交界面:

SVN:

FTP:

1)系统架构
操作系统:Ubuntu Server 14
应用环境:android sdk, ant, jdk
2)构建过程
1. 提交打包任务
在CI上点击 kxd_android_01_svn,开始检测代码是否有更新,之后触发android 构建服务器打包
2. android 构建服务器打包
2.1 检测SVN上的kxd android产品是否存在
2.2 将当前代码拷贝到tag上
2.3 export当前代码到/home/autobuild/kxd_android/build下
2.4 生成 ant build.xml文件
2.5 运行 ant clean
2.6 运行 ant release
2.7 copy apk和log到ftp上
2.8 传出params到/home/autobuild/kxd_android/params.txt
三、安全问题:
自动构建完成后,在正式发布前,必须加壳防止反编译;如果加壳程序支持linux控制台运行,可以加入到构建脚本里。
[系统集成] Android 自动构建系统的更多相关文章
- 基于Jenkins自动构建系统开发
1 绪论 1.1 课题的研究背景 随着IT行业的不断发展,软件开发的复杂度也随着不断提高.与此同时,软件的开发团队也越来越庞大,而如何更好地协同整个团队进行高效准确的工作,从而确保软件开发的质量已经 ...
- Android Studio构建系统基础
基础知识 项目创建成功后会自动下载Gradle,这个过程特别慢,建议FQ.下载的Gradle在Windows平台会默认在 C:\Documents and Settings\<用户名>.g ...
- .net 基于Jenkins的自动构建系统开发
先让我给描述一下怎么叫一个自动构建或者说是持续集成 : 就拿一个B/S系统的合作开发来说,在用SVN版本控制的情况下,每个人完成自己代码的编写,阶段性提交代码,然后测试-修改,最后到所有代码完工,进行 ...
- Android Studio的构建系统:Gradle
原文作者:youxiachai <用Gradle 构建你的android程序> 前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android st ...
- Android Studio添加原生库并自动构建
[时间:2017-09] [状态:Open] [关键词:Android,Android Studio,gradle,native,c,c++,cmake,原生开发,ndk-build] 0 引言 最近 ...
- 利用ant脚本 自动构建svn增量/全量 系统程序升级包【转】
引文:我们公司是做自己使用产品,迭代更新周期短,每次都花费较多时间和精力打包做增量更新,发现了一篇文章用于 自动构建svn增量/全量 系统程序升级包,收藏之,希望可以通过学习,更加简化我们的工作. 文 ...
- 打造一个全命令行的Android构建系统
IDE都是给小白程序员的,大牛级别的程序员一定是命令行控,终端控,你看大牛都是使用vim,emacs 就一切搞定” 这话说的虽然有些绝对,但是也不无道理,做开发这行要想效率高,自动化还真是缺少不了命令 ...
- 利用ant脚本 自动构建svn增量/全量 系统程序升级包
首先请允许我这样说,作为开发或测试,你一定要具备这种 本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方式.开发人员提交了代码后,可以自动构建.打包.部署到测试环境. ...
- 项目管理及自动构建工具Maven
项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/down ...
随机推荐
- 课堂所讲整理:super和转型(修改版)
创建父类: package org.hanqi.pn0120; public class Father { private String name; private int age; public S ...
- lightoj1074 最短路
题意:有n个城市,每个城市有拥挤值,有一些单向道路,从某个城市到另一个城市的花费是拥挤值差的三次方,当然可能是负的值.问从1点到某点最少的花费,若小于3或不能到达输出“?” 建图的边权是拥挤值差的三次 ...
- java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板
写锁降级为读锁,但读锁不可升级或降级为写锁. 锁降级是为了让当前线程感知到数据的变化. //读写锁 private ReentrantReadWriteLock lock=new ReentrantR ...
- 论文笔记之: Recurrent Models of Visual Attention
Recurrent Models of Visual Attention Google DeepMind 模拟人类看东西的方式,我们并非将目光放在整张图像上,尽管有时候会从总体上对目标进行把握,但是也 ...
- windows API
Process and Thread Functions https://msdn.microsoft.com/en-us/library/windows/desktop/ms684847(v=vs. ...
- 用max-width来防止图片溢出---不兼容ie6-----将max-width设置成父元素的宽度,当图片过大时会换行,以及限制图片的宽度。但是如果使用table,仍然可能超出限制。
img{ max-width:100%; height:auto; } 如题.
- 网络-数据包在路由转发过程中MAC地址和IP地址,变与不变
关于MAC地址和IP地址在传输过程中变与不变的问题: 结论:MAC地址在同一个广播域传输过程中是不变的,在跨越广播域的时候会发生改变的:而IP地址在传输过程中是不会改变的(除NAT的时候),总结为 路 ...
- APACHE 多站点配置方法
例如你的主机IP:192.168.1.8 而你有三个站点,域名为:www.111.com,www.222.com,www.333.com 相应的网站文件放在主机的:\website\111;D:\we ...
- 怎么给ABBYY FineReader Mac导入图像
ABBYY FineReader Pro for Mac作为ABBYY旗下重要的OCR文字识别软件之一,专为Mac用户定制,为各种各样的任务提供了单一.全面的解决方案,它是所有需要扫描和处理数字纸质文 ...
- JS 阻止浏览器默认行为和冒泡事件
JS 冒泡事件 首先讲解一下js中preventDefault和stopPropagation两个方法的区别: preventDefault方法的起什么作用呢?我们知道比如<a href=& ...