Android开发-Android项目Jenkins自动化打包流程搭建与配置

news2025/1/8 12:31:44

Android 项目 Jenkins 自动化打包流程搭建与配置

  • 1. 前言
  • 2. Jenkins 下载
  • 3. 配置电脑的 JDK 环境
  • 4. Jenkins 安装和设置
  • 5. Jenkins 设置 Android 项目自动打包流程

1. 前言

由于之前公司的 Android 项目需要 APK 自动打包的功能,所以需要搭建 Jenkins 自动化打包的工作。

Jenkins 是一个用于自动化构建、测试和部署软件项目的开源持续集成和持续交付(CI/CD)工具。它提供了一个可扩展的平台,可以帮助开发团队更快地构建、测试和交付他们的应用程序。

Jenkins 可以自动化执行打包操作,使开发团队能够在代码更改后立即构建软件,并生成可部署的软件包。Jenkins 的构建任务可以配置为在特定触发条件下运行,例如代码提交到版本控制仓库或定期计划。

Jenkins 提供了大量的插件,可以扩展其功能,以满足各种项目的需求。你可以使用插件来集成不同的构建工具、部署到不同的目标平台,或执行各种自定义任务。

Jenkins 通常与持续集成和持续交付(CI/CD)工作流程一起使用。它可以作为 CI/CD 管道的一部分,在软件开发周期中自动化构建和部署代码。

总之,Jenkins 的打包功能是其持续集成和持续交付工作流程的关键组成部分之一,它可以帮助开发团队更轻松地构建、测试和交付高质量的软件。通过配置适当的构建任务,你可以根据项目的需求自定义打包过程。

2. Jenkins 下载

下载 Jenkins 的安装包,不建议使用 war 包安装,直接去官网下载 msi 安装包,这样的话不需要本地配置 Tomcat,直接将 Jenkins 当作 Windows 的服务启动,每次开启会自动运行。 下载地址:https://www.jenkins.io/download/ 如果你喜欢自己都动手的话也可以选择 war 包安装,前提是自己本地下载启动 Tomcat。

3. 配置电脑的 JDK 环境

由于最新的 Android Studio 要求项目构建的 JDK 版本必须是 Java 11 以上的版本,所以电脑配置的 JDK 版本必须是 JDK 11 以上的版本。

4. Jenkins 安装和设置

通过 msi 包安装完成之后,在本地默认通过 localhost:8080 能够访问到 Jenkins,然后按照提示找到对应的密钥串(按照界面提示到指定的文件目录找到对应的文件,将对应的密钥串拷贝粘贴即可)

在这里插入图片描述

接下来就是设置 Jenkins 的账号和密码,都是常规操作。然后的安装插件步骤将推荐的插件全部默认安装即可!安装完成通过自己设置的账号密码即可登录 Jenkins。

安装 Android Studio 软件,目的是不需要自己单独的查找 Android SDK 和 NDK,直接通过 AS 来下载,这个过程做开发的基本知道,也不在说明,贴上下载地址:https://www.androiddevtools.cn/

在这里插入图片描述

选择插件管理(Plugin Manager)页面的搜索功能即可搜索下载相关的插件。

选中 Manage Jenkins->Configure System 配置全局的配置,配置 Android 的 Gradle 的路径,ndk 的路径,sdk 的路径,变量名按照图片里面的,不要做修改,这和默认配置有关,默认沿用了 Android Studio 的配置。

在这里插入图片描述

在全局工具配置(Global Tool Configuration)设置 JDK 的环境(打包 Android 项目必须)。注意:此处建议 JDK 不要用自己安装的 JDK 的版本,最好使用 Android Studio 软件的 jre 环境,这样确保配置的成功率。而设置最低的 JDK 版本要求必须是 JDK 11 以上。

在这里插入图片描述

在全局工具配置(Global Tool Configuration)设置 Gradle 的构建环境,Gradle 版本最低要求 6.0 以上。

在这里插入图片描述

5. Jenkins 设置 Android 项目自动打包流程

创建项目名称,配置打包项目,选择:新建 item ->在界面输入打包项目名称,并且选择项目为 free style Code,点击确定即可进入项目具体配置:

在这里插入图片描述

设置 Android 项目打包动态配置,配合安卓项目的 gradle.properties 来实现参数动态化构建,这样就可以在 Jenkins 中动态话选择环境和其他的配置了,选择 General 中的 This project is parameterized,表示当前项目是基于参数话构建,如下配置打包的环境动态化参数 BUILD_TYPE。

在这里插入图片描述

设置远程仓库项目地址和拉取指定仓库代码分支,以及设置远程仓库登录的账号和密码。

在这里插入图片描述

选择构建,配置构建脚本,设置 Gradle 构建坏境和构建指令。

在这里插入图片描述

此时其实已经可以打包,但是,我们此时还可以进行打包完成后的配置,将打好的 APK 包上传到蒲公英,让测试方便下载。
选择构建后操作,然后按照下图中的选项将需要的服务添加到对应的构建后操作选项。

在这里插入图片描述

使用 Jenkins 插件上传应用到蒲公英请看蒲公英的开发文档,开发文档如下: https://www.pgyer.com/doc/view/jenkins_plugin

回到项目首页,选择使用参数构建(Build with Parameters),选择构建类型(BUILD_TYPE),最后点击“开始构建”的就自动打包了。

在这里插入图片描述


———————— The end ————————

码字不易,如果您觉得这篇博客写的比较好的话,可以赞赏一杯咖啡吧~~
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TikTok创意大赛:如何制作病毒性视频

随着社交媒体的崛起,TikTok已成为年轻一代最受欢迎的平台之一。这个以短视频为主要内容的应用程序不仅改变了人们的娱乐方式,还为创作者提供了一个展示创意的舞台。 其中,TikTok创意大赛成为吸引创作者的一个独特机会。在本文中,…

SAP-MM-委外订单合并有什么不同?

计划下了两个委外采购申请,用ME59N合并时会有哪些不同? 1、采购申请2个都是委外采购申请,有BOM组件 因为两个采购申请的条件一致,所以在转采购订单ME59时,会被合并 但是合并之后,BOM组件却不显示了

孩子用台灯哪种好用?热门好用的全新护眼台灯推荐

目前大多数的孩子因为学习的各大压力,每天学习到很晚,导致眼睛视力受到了影响,经常出现眼睛酸痛、眯眼睛第问题,作为一名专业的养生师,我非常建议入手近年爆火的护眼台灯能够解决学习是的光线问题。但是护眼台灯行业这…

【Python】语言学习

之前总觉得python简单,不当回事,直到自己动手连输出都写不出来。。于是开一篇专门练python的博客。 输出 Python初相识 (educoder.net) 常规输出 print("向上:%.2f,向下:%.2f" %(pow(1.001, 365),pow(0.999, 365))) …

matlab数学建模方法与实践 笔记汇总

matlab数学建模方法与实践 笔记汇总 写在最前面笔记1:快速入门1.导入数据2.数据探索3.多项式拟合4.发布功能5.数据类型6、全部代码 笔记2:数据的准备1.数据的读取与写入excel、txt读图读视频 2.数据预处理缺失值噪声过滤数据归约数据变换 3.数据统计4.数…

智能化物流管理:全国快递物流查询API的角色与优势

前言 当今社会,物流行业已经成为了国民经济的重要组成部分,而快递物流则是物流行业中的一个重要分支。随着信息技术的不断发展,智能化物流管理正逐渐成为快递物流领域的趋势,而全国快递物流查询API作为其中的一部分,在…

8月份,誉天79名学员通过HCIE认证!

八月份,誉天又有79名学员顺利通过了HCIE认证,其中:云计算46人、Datacom14人、云服务8人、存储7人、安全3人、大数据1人。一起祝贺他们吧~

TCP VS UDP

程序员写网络程序,主要编写的应用层代码! 真正要发这个数据,需要上层协议调用下层协议,应用层要调用传输层,则传输层给应用层提供一组api,统称为:soket api 基于UDP的api 基于TCP的api 这两个协…

基于电容电流前馈与电网电压全前馈的三相LCL并网逆变器谐波抑制Simulink仿真

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

java Spring Boot RequestHeader设置请求头,当请求头中没有Authorization 直接400问题解决

我在接口中 写了一个接收请求头参数 Authorization 但是目前代理一个问题 那就是 当请求时 请求头中没有这个Authorization 就会直接因为参数不匹配 找不到指向 这里其实很简单 我们设置 value 为我们需要的字段内容 required 是否必填 我们设置为 false 就可以了 这样 没有也…

网友咨询:网上申请的流量卡为什么营业厅买不到,原因你知道吗?

在网上买过流量卡的朋友应该都清楚,很多便宜的套餐只能够在网上购买,营业厅里是无法办理的,那么您知道这是为什么吗? 作为一个专业从事的流量卡行业的小编,今天就告诉你,为什么网上的流量卡在营业厅里买不到…

C++ - 右值引用 和 移动拷贝

右值引用 我们先来了解什么是左值,什么是右值: 左值 和 有值 区分 首先,左值 和 右值 并不是完全意味着 在 "" 左边的就是 左值 ; 在 "" 右边的就是右值。这是不一定的。只能说,在左边的大概率是…

苹果怎么设置铃声?个性化铃声设置教程来了!

朋友们!苹果系统自带的铃声听腻了,有什么方法能将喜欢的歌曲设为铃声吗? 苹果手机系统的铃声一般都是通用的,虽然种类很多但是会让大家感觉比较单调。为了使铃声更加有趣,更加有个性化,很多用户选择将自己喜…

谷粒商城错误总结

1. P10:老师的mysql配置文件为my.cnf,我的改成my.conf 2. P16: 前端用npm install 命令报错(Error: Integrity checksum failed when using sha512: wanted sha512-o;我的解决方案:重启VSCode,重新npm install,问题解决…

重构我们的代码_遵循DRY原则

在JavaScript中,DRY原则是指"Don’t Repeat Yourself",即不要重复自己的代码。它是一种编程原则,强调避免在代码中出现重复的逻辑、功能和结构。 遵循DRY原则有以下几个好处: 代码重用:通过将重复的代码抽象…

IDEA工具之debug第三方jar包源码顺序错乱

IDEA工具之debug第三方jar包源码顺序错乱 场景描述原因分析解决方案 场景描述 概述 使用IDEA排查问题时,经常需要debug源码,当F7跟进依赖jar包时,总是出现Decompiled.class file, bytecode version:51.0 (Java 7),提示Source code…

Go-Python-Java-C-LeetCode高分解法-第九周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏,每日一题,和博主一起进步 LeetCode专栏 我搜集到了50道精选题,适合速成概览大部分常用算法 突…

双机并联逆变器自适应虚拟阻抗下垂控制(Droop)策略Simulink仿真模型

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

深挖 Python 元组 pt.1

哈喽大家好,我是咸鱼 好久不见甚是想念,2023 年最后一次法定节假日已经结束了,不知道各位小伙伴是不是跟咸鱼一样今天就开始“搬砖”了呢? 我们知道元组(tuple)是 Python 的内置数据类型,tupl…

案例解读【淘宝API接口的运用:抓取用户数据从而驱动精准营销

我国网络购物用户规模8.12亿占网民整体80.3%(来源:中商产业研究院)。由此可见,网络购物逐渐成为人们普遍选择的一种消费方式。作为连接买卖双方的服务方,电商平台掌握了海量的用户数据,用户数据作为一种宝贵…