使用Jenkins搭建Android自动打包环境

概述

Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目;监控外部调用执行的工作。 对于我们开发工程师来说,我们只管写代码,至于怎么打包,测试,我们是不需要过多关注的。而现在比较流行的方案是:使用Jenkins搭建Android自动打包。

Jenkins环境搭建

软件环境: windows7 64bit; jdk1.8 android sdk gradle2.10

配置Tomcat环境变量

找到path加上;%CATALINA_HOME%\lib启动tomcat。tomcat的下载地址:http://tomcat.apache.org/,如:

E:\pack\apache-tomcat-8.5.12

搭建Jenkins环境

下载地址:https://jenkins.io/index.html,将下载的jenkins.war包直接放到tomcat下的webapps目录下,然后启动tomcat即可安装完成。接下来使用http://localhost:8080/jenkins登录。 第一次使用的时候,需要配置一下用户。

用户权限配置

点击“系统管理” –> “Configure Global Security”。

插件安装,添加git,gradle

进入系统管理,管理插件。选择插件,及安装插件,完成后重启Tomcat,再次进入jenkins。

创建项目

对于Jenkins,每一个任务都是job,所以我们需要把自己的job映射到jenkins上.

选择Git为项目管理工具,并配置相关信息.

Build选项,选择Gradle方式,设置Gradle命令,一般为clean build.

在Task命令中输入:

clean build --stacktrace --info

Build File选项输入:

build.gradle

设置Build后,生成apk的位置;有错误等信息时,发邮件通知。

Build构建项目

构建中遇到的常见问题

1,编码问题:当你进入jenkins系统管理页面,会出现如图提示,可修改tomcat的server.xml配置,在Connector 标签添加上URIEncoding=”UTF-8”。

2,在Jenkins中利用Gradle编译项目时,可能会出现以下错误:

java.lang.ClassNotFoundException: org.apache.juli.ClassLoaderLogManager  
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)  
at java.security.AccessController.doPrivileged(Native Method)  
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)

解决:打开Tomcat bin目录下catalina.bat,注销下面代码。

rem set"JAVA_OPTS=%JAVA_OPTS%%LOGGING_MANAGER%"
rem set"JAVA_OPTS=%JAVA_OPTS%%LOGGING_CONFIG%"

3,环境变量配置问题

Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
java.lang.RuntimeException: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

解决办法:

Go to Jenkins > Manage Jenkins > Configure System
Check “Environment variables”
add name: ANDROID_HOME, value -> your android sdk dir
click “add”
SCROLL DOWN CLICK SAVE

4,Android系统的环境变量不能被jenkins调用导致编译失败,需要在jenkins里面配置环境变量,报错信息如下:

* What went wrong:
A problem occurred configuring root project 'BloodGlucose'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

解决方法:在系统管理->环境变量里面新增一个全局环境变量。

5,Gradle版本不对,导致编译失败。报错信息:

* What went wrong:
A problem occurred evaluating root project 'BloodGlucose'.
> Failed to apply plugin [id 'android']
   > Gradle version 2.1 is required. Current version is 2.6. If using the gradle wrapper, try editing the distributionUrl in D:\CI\jenkins-1.620\workspace\Build_HBGMS_BloodGlucose\BloodGlucose\gradle\wrapper\gradle-wrapper.properties to gradle-2.1-all.zip

解决方法:在服务器上安装2.2.1版本的gradle,并在jenkins里面配置gradle。在系统管理->环境变量里面新增一个全局环境变量,在job里面选择gradle版本。

6,build.gradle文件路径配置错误,导致失败。报错信息如下:

* What went wrong:
Build file 'D:\CI\jenkins-1.620\workspace\Build_HBGMS_BloodGlucose\build.gradle' does not exist.

解决方法:根据实际情况配置build.gradle文件的路径及名称。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

腾讯Bugly Unity3D Plugin使用指南

概述 Bugly Unity Plugin是专为基于Unity引擎开发的跨移动平台(iOS/Android)游戏APP而开发的异常监控插件,它能够自动捕...

5275
来自专栏屈定‘s Blog

Alfred插件开发--了解Alfred的数据流动

最近发现要记住的长命令太多了,因此打算开发一款Alfred插件帮助自己记录. 先展示下成品,大概就是输入关键词->搜索展示->复制到指定位置这一流程,借此开分析...

1783
来自专栏冷冷

SpringMVC 文件下载时 浏览器不能正确显示另存的文件名

问题:通过打印输出流的方式把文件下载到本地,但是在firebox 中 下载的文件不显示文件的文件名,造成文件不能直接打开,其他浏览器可以直接打开. 原因: 主要...

2095
来自专栏青玉伏案

JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎

上篇博客我们聊了《JavaEE开发之SpringBoot工程的创建、运行与配置》,从上篇博客的内容我们不难看出SpringBoot的便捷。本篇博客我们继续在上篇...

2475
来自专栏云计算教程系列

​如何使用Nginx反向代理配置SSL加密的Jenkins

默认情况下,Jenkins自带内置的Winstone网络服务器,可以通过8080端口进行监听,方便入门。但是,只要您认真使用Jenkins,就应该使用SSL保护...

2724
来自专栏python3

Centos7 安装python虚拟环境+Django

鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和...

2602
来自专栏张伟博客

CentOS 7下搭建配置SVN服务器

subversion默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置。

2252
来自专栏世界第一语言是java

springboot2新版springcloud微服务全家桶实战

本篇文章是springboot2.x升级后的升级springcloud专贴,因为之前版本更新已经好久了,好多人评论可不可以出个新版本,大家一定要注意,这是spr...

4K2
来自专栏漫漫全栈路

Ubuntu下配置JavaWeb开发环境

还是JSP环境,最近上了两节JSP的课了,基本上对于JavWeb的基础介绍也说的差不多了,按照课程安排应该是要进入到页面基础内容的阶段了,所以差不多也要把JSP...

4108
来自专栏王肖的UT

Assimp Android 编译

3224

扫码关注云+社区

领取腾讯云代金券