使用Jenkins自动打包android

服务器是Centos系统,使用Jenkins部署android项目时遇到一些坑,特此记录一下。

环境准备

Jenkins的安装在这就不多说了,百度文档挺多的。

android环境准备

建议服务器建个 android 目录来存放相关的文件。

首先拷贝一份本地开发环境的 android sdk 到服务器中,其中的 build-toolsplatform-tools 文件夹中的文件是跟平台有关,需要另外单独去镜像网站上下载,Jenkins 打包只需要单独下载对应的 build-tools 。

东软信息学院的开源镜像网站 下载对应的 build-tools 文件,我项目中使用的是 25.0.2 版本,选择 build-tools_r25.0.2-linux.zip 下载,下载完成后解压出来的文件放到android sdk 中的 build-tools 文件夹中(注意文件夹名字改为 25.0.2)。

Jenkins 内置的 gradle 和 android 使用的 gradle 可能有不匹配的情况,建议直接拷贝一份本地开发环境到服务器。

Jenkins环境准备

点击系统管理 -> 系统设置 -> 找到全局属性那一栏,点击增加,键名 ANDROID_HOME 值为 sdk 在服务器的绝对路径

《使用Jenkins自动打包android》 系统管理

《使用Jenkins自动打包android》 系统设置
《使用Jenkins自动打包android》 全局属性

在系统管理页面点击 Global Tool Configuration,找到 Gradle 安装,
新增一个 Gradle ,name 为 android_gradle,GRADLE_HOME 为 gradle 在服务器的绝对路径。

《使用Jenkins自动打包android》 Global Tool Configuration
《使用Jenkins自动打包android》 gradle 安装
《使用Jenkins自动打包android》 新增 gradle

环境已准备完毕,接下来就是配置 Jenkins 任务了。

Jenkins 配置任务

在 Jenkins 首页点击新建,填写任务名称,选择构建一个自由风格的软件项目,点击 OK。

《使用Jenkins自动打包android》 新建任务

进去点击源码管理,Repository URL 填写 git 地址,Credentials 选择 git 账号(没有就点击 Add 添加一个),Branch Specifier 填写需要编译的分支(例如:*/master )。

《使用Jenkins自动打包android》 源码管理

再点击构建,增加构建步骤,选择 Invoke Gradle script ,点击 Invoke Gradle 选择 Gradle Versionandroid_gradle ,然后 Tasks 填写 assembleDebug (该 task 是平时 android studio 点击 build 时执行的 task,打出的 Debug 包),注意将 Force GRADLE_USER_HOME to use workspace 勾选上。

《使用Jenkins自动打包android》 Invoke Gradle script
《使用Jenkins自动打包android》 构建

点击保存就可以运行任务了。

下载 apk

正常打包后都会在 app/build/outputs/apk/ 目录下看到生成的 debug apk,但总不能每次都 cd 进去找吧。针对这个问题,我通过 Nginx 的文件目录浏览功能做了下载页面。Nginx 的安装问题文中就不再诉说了,直接说怎么做下载页面吧。

《使用Jenkins自动打包android》 Execute shell

在上面选择
Invoke Gradle script 后再增加一个构建步骤,选择
Execute shell 。预先在服务器中创建了存放 apk 的目录(例如
/root/android/apk

《使用Jenkins自动打包android》 shell 命令

cd /root/android/apk
#按打包完成的时间生成文件夹 如17_07_14_12_00_00_debug
dirName=`date +%y_%m_%d_%H_%M_%S`_debug 
mkdir $dirName
cd $dirName
#apk生成的路径
cp /root/.jenkins/workspace/android_build/app/build/outputs/apk/debug.apk debug.apk 

shell 命令写后可以运行任务,看看是否在 /root/android/apk 下生成对应的文件夹和文件。
接下来就要修改 Nginx 的配置了,找到 nginx.conf,进入vim。

location /download {
    autoindex on;
    autoindex_exact_size on;
    autoindex_localtime on;
    alias /root/android/apk;
}

添加以上内容,然后 Nginx 重启下,就可以在服务器 /download (例如:我服务器地址为 http://192.168.0.100/download)下能看到生成 apk 文件夹及文件,点击文件就可以下载。

遇到的坑

在打包过程中 aapt 运行提示 libc.so.6: version `GLIBC_2.14′ not found,原因是系统的 glibc 版本太低,软件编译时使用了较高版本的glibc 引起的,没法只能去 google 了。在一国外网站找到了解决方法

You cannot update glibc on Centos 6 safely. However you can install 2.14 alongside 2.12 easily, then use it to compile projects etc.

大意是说不能直接在服务器上升级 glibc ,需自己去下载重新编译。以下给出 shell 命令

mkdir ~/glibc_install
cd ~/glibc_install 
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make -j4
sudo make install
export LD_LIBRARY_PATH=/opt/glibc-2.14/lib

经过漫长的编译后,再次运行任务后编译成功。

    原文作者:ThinkNuo
    原文地址: https://www.jianshu.com/p/1ecb93222757
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞