集成 Jenkins 自动化打包 Android Apk

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/f409031mn/article/details/81193920

在最近的 Android 开发中,每次发布版本都要手动打包,深感到不便,为了让测试的人员也可以感受到 Android 打包的乐趣,参考了网上很多 Jenkins 进行 Android 自动打包的文章后,花了一些时间把这个环境搭建起来了。

Jenkins 安装

Jenkins 的可以单独运行也可以在 Tomcat 服务器中运行,不过我这里是单独运行的,首先就要到 https://jenkins.io/download/ 下载一个适合自己的电脑环境版本的 Jenkins

这里写图片描述

由于我的电脑就是 Windows ,所以就下载图片红色选中的,下载并安装完成后,就会出现下面的界面,要求你填写 Jenkins 超级管理员密码,不过它上面已经提示了密码存放在什么地方:

这里写图片描述

填写完密码后,将会看到插件安装界面:

这里写图片描述

这里我选择了第一项,安装默认的插件,熟悉后再做修改:

这里写图片描述

等全部插件都下载完成后,就可以看到下面的用户名设置页面了:

这里写图片描述

上面每一项设置完成并点击 保存并完成 后,就是设置进入 Jenkins 管理页面的 url 了,继续点击右下角的保存:
这里写图片描述

现在一切都准备就绪,可以开始运行 Jenkins 了:

这里写图片描述

然后就可以看到下面的页面了:

这里写图片描述

配置 Jenkins 的环境变量

首先进行系统设置:

这里写图片描述

系统设置 的全局属性里面添加 ANDROID_HOME,也就是本地的 SDK 的路径:

这里写图片描述

然后点击下发的应用保存

这里写图片描述

注意:这里必须先点击应用再去进行保存,如果不点应用的话,保存可能会无效

然后就是 全局工具配置 了:

这里写图片描述

要在这里配置 JDK 目录和 Gradle 目录:

这里写图片描述

这里就不要使用自动安装了,直接依赖本地的就可以了,因为 JDK 的自动安装需要一个 Oracle 账号,而 Gradle 的下载网速是出了名的慢。

现在就轮到最后的 项目的 gradle 脚本配置了,这里就只需要简单配置一些打包相关的东西即可:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 1
    buildToolsVersion 1.0.0

    defaultConfig {
        applicationId "xxx.xxxx.xxxxx"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName 1.0
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    //这个是必须有的
    signingConfigs {
        config {
            keyAlias 'fritz'
            keyPassword '123456'
            storeFile file('keystores\\fritz.jks')
            storePassword '123456'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            //去掉没有使用过的资源文件,请慎重使用
            //因为图片资源如果在代码里面没有id引用,一样会移除
            //无法确保全部图片资源都有id引用的话,不要使用这个属性
            shrinkResources = true
            signingConfig signingConfigs.config
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //这里修改apk文件名
            android.applicationVariants.all {
                variant ->
                    variant.outputs.all {
                        outputFileName = "fritz.apk"
                    }
            }
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    implementation "com.android.support:appcompat-v7:27.1.1"
    implementation "com.android.support:support-v4:27.1.1"
    implementation "com.android.support:design:27.1.1"
    implementation "com.android.support.constraint:constraint-layout:1.1.2"
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}

创建打包任务

现在就来创建我们的打包任务吧:

这里写图片描述

给我们的打包任务一个名字,按照下图中去配置即可:

这里写图片描述

点击确认后就可以看到下面的六个配置:

这里写图片描述

这些配置全部都有作用,不过这里我先针对一部分来讲解。

源码管理

这里我使用了 Git 来进行源码的管理:

这里写图片描述

Repository URL 中添加项目的 Git 路径,然后在下面的 add 按钮里面添加 Git 的用户凭证:

这里写图片描述

我们可以在 Branch Specifier 切换到我们想打包的分支,由于这个是刚创建的测试项目,暂时就只有 master 而已。

构建

这里写图片描述

这里选中第一个 Invoke GradleGradle Version 就用我们之前配置的 GRADLE_HOME 就可以了,而需要执行的 Task 则就是:

app:clean     
app:assembleRelease

接着我们点开右下角的 高级配置按钮 ,把下面的两个选择给勾上:

这里写图片描述

这个是用来传递一些自定义参数到 gradle 脚本里面的,暂时用不上,不过可以先开启。

这里写图片描述

这个就比较重要了,它是项目依赖的support包或第三方库源码下载到 Jenkins 的服务器中,以便顺利完成打包,因此这个是必须开启的。

这样子,基本配置就已经完成,这时候点击下面的应用并保存吧:

这里写图片描述

执行构建任务

在点击保存之后,就会看到下面的界面,点击立即构建就会开始执行打包任务了:

这里写图片描述

这时候就会看到下面的构建过程了:

这里写图片描述

蓝色表示成功,红色表示失败,我们点击构建任务来看控制台的输出:

这里写图片描述

而且从控制台的输出,可以看到它下载了不少第三方库到本地 Jenkins 服务器上面:

这里写图片描述

我们到安装 Jenkins 的文件夹里面的 workspace ,可以看到下载到本地的项目文件多了几个新的文件夹,其中就有下面的缓存文件夹:

这里写图片描述

这里点击进去 caches 进去到 caches\transforms-1\files-1.1 里面,就可以看到相关的依赖下载了:

这里写图片描述

因此这里再提醒一次,请务必任务配置里面把下面这勾给勾上了

这里写图片描述

而任务打包出来的 apk 所在路径为 app\build\outputs\apk\release

这里写图片描述

上传 apk 到 fir.im

目前已经顺利把 apk 打包出来了,但是目前打包出来是存放在 Jenkins 的本地服务器上面,还是不太方便提供给测试人员,因此最好就是把服务器打包出来的 apk 上传到一个托管发布测试的平台,这里我就选择了 fir.im 作为测试 apk 发布平台。

在登录后 fir 官网的个人资料中有一个 API token

这里写图片描述

这里写图片描述

先把这个记下来,然后到 http://blog.fir.im/jenkins/ 下载 Jenkins 的 fir.im的插件,下载完成后就到 系统管理 -> 插件管理->高级 里面来安装这个本地插件:

这里写图片描述

选中刚才下载的插件后,上传即可。

这里写图片描述

安装完成后,再一次打开我们刚才构建的任务的配置,到 构建后操作 里面,这时可以看到新的元素了:

这里写图片描述

选中后,填好下面配置即可:

这里写图片描述

然后点击 应用并保存 。然后再一次构建项目,构建成功后我们会在控制台输出看到下面的打印:

这里写图片描述

说明已经上传到 fir.im 了,现在到 fir.im 里面可以看到下面的信息:

这里写图片描述

这时候,测试人员就只需要通过 fir.im 下载链接即可下载最新的测试 apk 了。

从此开发人员就只需要上传代码,然后帮测试人员那边安装好环境,以后就可以让测试人员慢慢享受打包的乐趣了。

猜你喜欢

转载自blog.csdn.net/f409031mn/article/details/81193920