Jenkins 自动打包过程(Android)

1. 安装jenkins 环境(跳过)

2. Android studio 配置参数

1. gradle.properties 添加全局参数 用于jenkins 调用
VERSION_NAME = 1.5.1
VERSION_CODE = 1510
Channel =
BuildType = 
2. build.gradle 使用参数替换

版本号替换:

android {
    defaultConfig {
        applicationId "com.flushao.demo"
        // 往 jenkins 中传递版本,项目需要本地打包的话修改gradle.properties的默认参数
        versionCode Integer.parseInt(project.VERSION_CODE)
        versionName project.VERSION_NAME
    }
}

打包路径替换:

applicationVariants.all { variant ->
        def buildType = variant.buildType.name
        def fileName
        def createTime = new Date().format("YYYY-MM-dd-HHmmss", TimeZone.getTimeZone("GMT+08:00"))
        if (IS_JENKINS){
            variant.getPackageApplicationProvider().get().outputDirectory = new File("/Users/jenkins/demo/"+VERSION_NAME+"/debug")
            if (buildType == "release") {
                variant.getPackageApplicationProvider().get().outputDirectory = new File("/Users/jenkins/demo/"+VERSION_NAME+"/release")
            }
        }
        variant.outputs.each {
            if (buildType == "release") {
                fileName = "Demo_${variant.productFlavors[0].name}_"+VERSION_NAME+"_"+VERSION_CODE+"_${createTime}_${buildType}.apk"
                it.outputFileName = fileName
            }
        }
    }

2. Jenkins 配置

1. 参数配置

配置参数

需要传递的参数名一定要和上面 gradle.properties 配置的几个参数一样
渠道和代码分支等固定的参数 最好要用 Choice Paramter 来管理
jenkins自身引用这些变量的方式为: $+名称

如 $branch

2.配置远端代码

这里以 gitlab 为例,如果前面配置了代码分支的变量

配置 git 地址

3.Build

在Build里面添加一个 Invoke Gradle script

Gradle 命令

这两行语句是 gradle 执行打包的命令,其中${Channel}${BuildType} 是我们前面配置的渠道和构建类型
如 app:assembleOppoRelease 是在多渠道打包的时候打出一个 productFlavors 为 oppo 的 release 包。如果${Channel}穿的是空的,则会把 productFlavors 配置的全部渠道的包都打出来

app:clean
app:assemble${Channel}${BuildType} --stacktrace
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容