Jenkins实现AndroidStudio工程自动化打包(基于Gitee)

目录

 一、下载安装Jenkins

二、安装Gitee插件

三、配置Jenkins

3.1 全局工具配置

3.2 环境配置

四、新建任务并配置

4.1 General

4.2 源码管理

4.3 构建触发器

--在Gitee中配置WebHook

4.4 构建

4.5 在jenkins中查看构建结果

五、参数化构建(重点!)

六、常见报错

6.1 构建时配置的gradle版本要与Android Studio中项目使用的版本一致。

6.2 AAPT2报错

6.3 安装包位置


 一、下载安装Jenkins

Jenkins 官网下载地址:https://jenkins.io/download/

选择对应操作系统的版本进行下载(最好选LTS(Long-term Support ) 长期支持即稳定版)

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第1张图片

下载完成之后安装,直接点击下一步即可。

安装完成之后浏览器会自动弹出窗口链接:http://localhost:8080

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第2张图片

如图,找到对应路径里的文件把里面的密码复制粘贴上去。

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第3张图片

可以安装推荐的插件(需要等待比较长的时间),也可以选择插件安装。

这里懒得选择直接安装了推荐插件,某些插件安装失败可以重试,如果重试了一两次之后还是失败就不用管了直接进入下一步创建用户,也可以使用admin,不过还是推荐自己创建用户,后期权限管理方便一些。

二、安装Gitee插件

我们要用Gitee拉取代码,所以安装一下Gitee插件(系统管理->插件管理->可选插件->筛选Gitee->选中直接安装,安装成功之后重启jenkins服务)

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第4张图片

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第5张图片

三、配置Jenkins

3.1 全局工具配置

系统管理(ManageJenkins)>全局工具配置(Global Tool Configuration)

1.JDK

别名可以随意,地址就是你的jdk绝对路径

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第6张图片

2.Gradle

命名可以随意,建议使用版本号命名

默认路径在C:\Users(用户名).gradle\wrapper\dists\下

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第7张图片

也可以直接选择版本自动下载,建议根据安卓项目需要配置多个版本的Gradle

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第8张图片

3.Git(不确定是否必须,先配置一下)

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第9张图片

4.Maven(不确定是否必须,先配置一下)

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第10张图片

3.2 环境配置

系统管理(ManageJenkins)>系统设置(Configure System)

1.Android SDK环境变量

键为“ANDROID_HOME”,值指向本地SDK目录

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第11张图片

注意:这里的键需要和本机环境变量内的Android SDK目录的键一致

2.Gitee环境

链接名自定义,Gitee域名:https://gitee.com

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第12张图片

点击添加,新增凭据,选择Gitee API 令牌,到对应地址去获取私人令牌

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第13张图片

点击测试链接,出现“成功”,配置完成。

若出现 ERROR ,可能是缺少插件:Jersey 2 API

四、新建任务并配置

新建一个freestyle的项目

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第14张图片

4.1 General

会自动填入上面配置的Gitee链接

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第15张图片

4.2 源码管理

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第16张图片

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第17张图片

4.3 构建触发器

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第18张图片

记住这个Gitee WebHook的URL,同时在这里生成Gitee WebHook的密码。

其他步骤不重要,看着勾选。

--在Gitee中配置WebHook

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第19张图片

Gitee中只能访问公有ip,无法访问本地的jenkins服务器,因此需要将内网转成外网域名

(推荐用内网穿透工具:ngrok)

然后填入Jenkins中生成的WebHook密码,点击测试,请求结果为........accepted 说明配置成功

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第20张图片

4.4 构建

注意这里GradleVersion要跟安卓项目中使用的Gradle版本一致,否则编译可能会出错。

构建命令一般是先clean,然后assembleRelease-打Release版本的包,或者assembleDebug-打Debug版本的包。

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第21张图片

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第22张图片

${JENKINS_HOME}/workspace/替换为为你的任务名称
${JENKINS_HOME}/workspace/替换为你的任务名称/替换为你的安卓工程名称/build.gradle

4.5 在jenkins中查看构建结果

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第23张图片

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第24张图片

五、参数化构建(重点!)

构建时可以设置参数,这样就可以打出不同参数的包。

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第25张图片

主要用到的是Choice Parameter 可选参数

项目中可能需要配置的参数:版本(Release 或 Debug),版本号,渠道名~等等

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第26张图片

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第27张图片

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第28张图片配置完参数还不算完,我们要在下方构建时候引用,首先找到构建标签处,将Tasks属性值修改为:

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第29张图片

其中${PRODUCT_FLAVORS}&{BUILD_TYPE}分别对应上面的参数名。

参数化构建配置上了,还需要在构建时将参数映射到代码中,如下图:

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第30张图片

以上, Jenkins 上的参数化构建配置完成。我们还需要在代码中接收该参数。
参数会映射到gradle.properties文件中的对应参数名,所以我们要在该文件中定义一个同名参数并赋默认值:

......
APP_VERSION = 1.0.1
BUILD_TYPE = debug
PRODUCT_FLAVORS = qudao
......

然后可以在build.gradle中获取到参数并添加到BuildConfig.java中:

--APP_VERSION映射到versionName

--Jenkins中可选渠道productFlavors中的选项必须是在build.gradle中添加过的渠道

......
android {
	......
      defaultConfig {
        minSdkVersion 19
        targetSdkVersion 30
        applicationId 'com.xxxx.xxxxxxxx'
        ndk {
            abiFilters 'armeabi-v7a'
        }
        versionCode 1
        versionName APP_VERSION

        flavorDimensions "default"
    }
    
    //渠道Flavors
    productFlavors{
        xxxxx_360{
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xxxxx_360"]
        }
        xiaomi{
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
        }
    }
    
	......
}
......

这样,Jenkins打包时就可以通过选择版本、渠道等打出对应的包。

六、常见报错

6.1 构建时配置的gradle版本要与Android Studio中项目使用的版本一致。

6.2 AAPT2报错

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第31张图片

如上图AAPT2报错导致编译失败,百度的解决方案有三种,一是说在gradle.properties中加入代码android.enableAapt2=false,二是说统一各module的compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion等,三就是更不相干的东西了。

但是代码在本地肯定是跑过的,编译打包都正常,只是上了 Jenkins 才报了这个错,所以这三个解决方案都站不住脚。折腾了好久,最后在某不存在的搜索引擎找到个说法,Gradle路径太长了导致编译错误balabala……

项目设置里的构建处,点击右下角高级,找到下方此选项打勾。再重新编译,成功!

Jenkins实现AndroidStudio工程自动化打包(基于Gitee)_第32张图片

6.3 安装包位置

打包之后安装包默认位置:

C:\ProgramData\Jenkins\.jenkins\workspace\项目名\安卓工程名称\build\outputs\apk\release

也可以在build.gradle修改输出的apk文件名及安装路径:

android {
...... 
    
//修改生成的apk文件的名字和路径
    android.applicationVariants.all { variant ->
        variant.outputs.all {
            if ("true".equals(IS_JENKINS)) {
                //Jenkins打包输出路径
                variant.getPackageApplication().outputDirectory = new File("D:\\JenkinsProject")
            } else {
                //本机打包输出在本机路径
                variant.getPackageApplication().outputDirectory = new File("D:\\AndroidStudioProject")
            }
            //apk名
            outputFileName = variant.flavorName +
                    "_" + variant.buildType.name +
                    "_" + variant.versionName +
                    "_" + new Date().format('yyyy-MM-dd') + ".apk"
        }
    }
......
    
}

你可能感兴趣的:(Android,Studio,jenkins,自动化,android,studio)