jenkins+gitlab实现Android自动打包填坑之旅
一.背景
1.首先你需要知道你想要实现的Android自动打包的Android项目的一些环境配置及需要使用的一些开发版本。
声明:本文 Android项目基于:1.jdk11 2.SDK无要求 3.gradle无要求(同Manven一样为项目自动化构建开源工具)
注:本文适用于 任何版本 jdk SDK Gradle。
了解Android项目使用到的东西就可以开始干活了.......... xixi
----------------------------------------------------------------------------------------------------------------------------
二.基本软件安装
软件安装网上有大量教程这里不再赘述。
1.gitlab
2.jenkins
3.Android Studio(为啥要下这个?当然是为了更方便的安装SDK)
3.1 简要概述如何使用Android Studio下载SDK
本人非Android开发程序员,若有表述不当,嘿嘿。。
打开Android Studio你会看到Preference这个选项

有人可能要问为啥下这么多SDK?这我又哪知道一个Android项目里面要用不同版本的SDK。总之,你Android项目中涉及到哪些就下啥吧。
4.本地gradle安装(温馨提示:看看后面Android自动打包的不同方式再决定是否安装,有一种方式不需要下载gradle,可以让gekins帮你安装)
本文不详细阐述安装过程,具体可以看看网上其他资源。注意红色字体,可能会是你的坑...heihei
1.下载好需要使用的gradle的安装包,并解压
2.配置好环境变量(就是把你的gradle解压后的文件目录配置/bin 到$PATH这个全局变量里)
3.使用gradle -v检查是否能显示版本信息(确保解压后的bin目录下的gradle可执行文件,在当前用户下具有可执行权限)
5.本地git安装
三.正题---新建任务开启Android打包自动化。
言归正传 下面我们讨论实现Android自动化打包的几种方式。
3.1 gekins 插件安装
安装要使用到的一些插件像git gitlab gradle这些的插件就是基本的。这里就不在赘述(如果你看见你的与我的jenkins相比少了一些选项就是插件不全导致的)
3.2 系统管理 -》系统配置
主目录:

Jenkins访问路径:一般为 电脑ip+端口

环境变量配置:ANDROID_HOME
3.3 系统管理 -》全局工具配置
1.jdk

2.git
3.gradle

3.4 新建任务





该我说话了:你还要把生成的公钥放大gitlab上。不知道的推荐看看下面这篇
https://www.cnblogs.com/dotnet261010/p/12393917.html
存在坑:可能按照要求添加凭据后仍然无法连接到gitlab
1.首先你要确保git在本地安装好了 git --version
2.参考这篇文章或许对你有帮助 jenkins 配置git 提示“无法连接仓库:Command “git ls-remote -h -- gitxxxxxxxxx status code 128”_jekins 无法访问仓库地址-CSDN博客
3.5 最终一步:build Step
gradle和gradlew打包方式的区别:开胃甜品 heihei~
八、Mac 配置 gradle和 ./gradlew 命令 - 简书
gradle:打包的方式:你可理解为需要借助你本地的gradle


建议:可以先在本地配好一个gradle,然后通过终端命令行的方式输入命令看看是否能打包。只有你通过终端命令行的方式打包成功,你上面配置才会可能。
gradlew打包的方式:你可以理解为使用项目内的gradle(注:这里他会自动的去下载gradle )
可能出现的问题:Downloading https://services.gradle.org/distributions/gradle-5.1.1-bin.zip Exception in thread "main" java.net.ConnectException: Operation timed out
因为这玩意儿是在github.com上的,慢的很,所以会出现超时的情况。
所以建议选择使用gradle命令打包的方式,使用自己已经安装好的gradle

迫不得已,逼上绝境
上面两种方式都是借助jenkins中的gradle环境,虽然第一种下载了gradle在本地,但是第一二种方法都不需要在本地配置gradle环境 。
那么如果你能在本地配置好gradle后,可以通过终端命令进行打包的话,那么方案三来了。
方案三: 通过执行shell脚本,来打包(需要配好本地环境)
这里我们不再选择Invoke Gradle script而是执行shell


MTS_Clien.sh脚本
# !bin/bashcd /Users/lilei/.jenkins/workspace/MTS_Client/MTS_Client
sleep 1
gradle clean
sleep 1
gradle assembleRelease
最后若有疑问可在评论区讨论。 滴滴 heihei~
相关文章:
jenkins+gitlab实现Android自动打包填坑之旅
一.背景 1.首先你需要知道你想要实现的Android自动打包的Android项目的一些环境配置及需要使用的一些开发版本。 声明:本文 Android项目基于:1.jdk11 2.SDK无要求 3.gradle无要求(同Manven一样为项目自动化构建开源工具) 注&am…...
洛谷B3625迷宫寻路
迷宫寻路 题目描述 机器猫被困在一个矩形迷宫里。 迷宫可以视为一个 n m n\times m nm 矩阵,每个位置要么是空地,要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。 机器猫初始时位于 ( 1 , 1 ) (1, 1) (1,1) 的位置,问能否…...
GPT-SoVITS 测试
开箱直用版(使用 AutoDL) step1 打开地址 https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official 选择 AutoDL创建实例,选择 3080ti 机器 step2 创建好实例之后,进入命令行,输入命令 echo {}>…...
人工智能:更多有用的 Python 库
目录 前言 推荐 JupyterLab 入门 复杂的矩阵运算 其它人工智能和机器学习的 Python 库 前言 在这篇文章中,我们将了解更多的矩阵操作,同时再介绍几个人工智能 Python 库。 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&#x…...
Linux BIO如何下发到HDD?
在Linux操作系统中,当创建一个Block I/O请求(BIO)时,它会被封装成适合硬件交互的数据结构,并通过内核存储子系统传递到对应的硬件控制器上,如SAS(Serial Attached SCSI)HBAÿ…...
《动手学深度学习(PyTorch版)》笔记4.6
注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过。…...
Hadoop-MapReduce-源码跟读-客户端篇
一、源码下载 下面是hadoop官方源码下载地址,我下载的是hadoop-3.2.4,那就一起来看下吧 Index of /dist/hadoop/core 二、从WordCount进入源码 用idea将源码加载进来后,找到org.apache.hadoop.examples.WordCount类(快捷方法&…...
《游戏-03_3D-开发》之—新输入系统人物移动攻击连击
本次修改unity的新输入输出系统。本次修改unity需要重启,请先保存项目, 点击加号起名为MyCtrl, 点击加号设置为一轴的, 继续设置W键, 保存 生成自动脚本, 修改MyPlayer代码: using UnityEngine;…...
滴水逆向三期笔记与作业——02C语言——10 Switch语句反汇编
滴水逆向三期笔记与作业——02C语言——10 Switch语句反汇编 一、Switch语句1、switch语句 是if语句的简写2、break加与不加有什么特点?default语句可以省略吗?3、游戏中的switch语句(示例)4、添加case后面的值,一个一个增加&…...
燃烧的指针(三)
🌈个人主页:小田爱学编程 🔥 系列专栏:c语言从基础到进阶 🏆🏆关注博主,随时获取更多关于c语言的优质内容!🏆🏆 😀欢迎来到小田代码世界~ &#x…...
微服务架构实施攻略:如何选择合适的微服务通信机制?
随着业务的快速发展和系统的日益复杂,传统的单体应用逐渐显露出瓶颈,已无法满足现代软件研发的需求。微服务架构作为一种灵活、可扩展的解决方案,通过将复杂系统拆分为一系列小型服务来提高系统的可伸缩性、灵活性和可维护性。在实施微服务架…...
【jetson笔记】解决vscode远程调试qt.qpa.xcb: could not connect to display报错
配置x11转发 jetson远程安装x11转发 安装Xming Xming下载 安装完成后打开安装目录C:\Program Files (x86)\Xming 用记事本打开X0.hosts文件,添加jetson IP地址 后续IP改变需要重新修改配置文件 localhost 192.168.107.57打开Xlaunch Win菜单搜索Xlaundch打开 一…...
网络安全产品之认识安全隔离网闸
文章目录 一、什么是安全隔离网闸二、安全隔离网闸的主要功能三、安全隔离网闸的工作原理四、安全隔离网闸的分类五、安全隔离网闸与防火墙的区别四、安全隔离网闸的应用场景 随着互联网的发展,网络攻击和病毒传播的方式越来越复杂,对网络安全的要求也越…...
Java通过模板替换实现excel的传参填写
以模板为例子 将上面$转义的内容替换即可 package com.gxuwz.zjh.util;import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.*; import java.util.HashMap; import java.util.Map; import java.io.IOException; impor…...
眼底增强型疾病感知蒸馏模型 FDDM:无需配对,fundus 指导 OCT 分类
眼底增强型疾病感知蒸馏模型 FDDM:fundus 指导 OCT 分类 核心思想设计思路训练和推理 效果总结子问题: 疾病特定特征的提取与蒸馏子问题: 类间关系的理解与建模 核心思想 论文:https://arxiv.org/pdf/2308.00291.pdf 代码:https://github.c…...
代码随想录算法刷题训练营day17
代码随想录算法刷题训练营day17:LeetCode(110)平衡二叉树 LeetCode(110)平衡二叉树 题目 代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(…...
Java集合如何选择
为什么使用集合 当需要存储一组类型相同的数据时,数组是最常用且最基本的容器之一。但是,使用数组存储对象存在一些不足之处,因为在实际开发中,存储的数据类型多种多样且数量不确定。这时,Java 集合就派上用场了。与数…...
简单介绍----微服务和Spring Cloud
微服务和SpringCloud 1.什么是微服务? 微服务是将一个大型的、单一的应用程序拆分成多个小型服务,每个服务负责实现特定的业务功能,并且可以通过网络通信与其他服务通信。微服务的优点是开发更灵活(不同的微服务可以使用不同的开…...
Jenkins邮件推送配置
目录 涉及Jenkins插件: 邮箱配置 什么是授权码 在第三方客户端/服务怎么设置 IMAP/SMTP 设置方法 POP3/SMTP 设置方法 获取授权码: Jenkins配置 从Jenkins主面板System configuration>System进入邮箱配置 在Email Extension Plugin 邮箱插件…...
硬件知识(1) 手机的长焦镜头
#灵感# 手机总是配备好几个镜头,研究一下 目录 手机常配备的摄像头,及效果举例 长焦的焦距 焦距的定义和示图: IPC的焦距和适用场景: 手机常配备的摄像头,及效果举例 以下是小米某个手机的摄像头介绍:…...
从零开始!DeepSeek-R1-Distill-Qwen-1.5B完整部署流程详解
从零开始!DeepSeek-R1-Distill-Qwen-1.5B完整部署流程详解 1. 模型简介与核心优势 1.1 什么是DeepSeek-R1-Distill-Qwen-1.5B? DeepSeek-R1-Distill-Qwen-1.5B是一款经过知识蒸馏优化的轻量级语言模型,由DeepSeek团队基于Qwen-1.5B架构开发…...
超轻量级OpenClaw与LaTeX结合:学术文档自动化处理
超轻量级OpenClaw与LaTeX结合:学术文档自动化处理 科研工作者每天需要处理大量的文献整理、公式编辑和文档排版工作,传统手动方式耗时且容易出错。本文将展示如何用超轻量级OpenClaw实现学术文档的自动化处理,让LaTeX文档编写变得轻松高效。 …...
如何用自然语言开发Godot游戏:3大突破性功能解析
如何用自然语言开发Godot游戏:3大突破性功能解析 【免费下载链接】Godot-MCP An MCP for Godot that lets you create and edit games in the Godot game engine with tools like Claude 项目地址: https://gitcode.com/gh_mirrors/god/Godot-MCP 你是否想过…...
Easypoi导出Excel时,如何优雅地处理‘未知’或‘空值’?一个replace动态替换的实战技巧
Easypoi动态替换Excel导出中的未知值与空值:实战技巧与最佳实践 在数据导出场景中,我们经常遇到数据库枚举值与Excel展示不匹配的问题。比如性别字段,除了标准的"男"、"女"外,还可能存在空值或超出预设范围的…...
京东开放平台应用申请实战:从零到一,避开那些“看不见”的坑
1. 为什么你需要这份京东开放平台避坑指南? 第一次申请京东开放平台应用时,我踩遍了所有能踩的坑。记得当时为了赶项目进度,直接跳过了官方文档的"不重要章节",结果在云鼎环境配置环节卡了整整三天。后来才发现…...
共享图书借阅系统 Java 源码 + 数据库设计完整方案
以下是一个共享图书借阅系统的Java源码与数据库设计的完整方案,涵盖系统架构、核心功能实现、数据库设计以及安全防护措施等方面:一、系统架构技术栈:后端:Spring Boot 2.x MyBatis-Plus(简化数据库操作)前…...
QwQ-32B多模态应用实践:文本与图像联合处理
QwQ-32B多模态应用实践:文本与图像联合处理 最近在折腾AI模型的时候,发现很多朋友对多模态应用特别感兴趣。所谓多模态,简单说就是让AI能同时理解文字和图片,甚至还能把两者结合起来处理。这听起来挺酷的,但实际操作起…...
**实时内核中的任务调度机制:从理论到C++实现的深度探索**在嵌入式系统和高实时性应用中,**实时内核(Real-
实时内核中的任务调度机制:从理论到C实现的深度探索 在嵌入式系统和高实时性应用中,实时内核(Real-Time Kernel) 是整个系统稳定运行的核心。它不仅负责资源分配,还承担着任务调度、中断响应、同步机制等关键职责。本文…...
二叉树面试送分题|力扣101对称+226翻转(递归极简写法,手写无压力)
兄弟们!二叉树面试中,有两道“送分题”必须拿捏——力扣101.对称二叉树和力扣226.翻转二叉树。这两道题难度不高,核心都能用递归轻松解决,代码简洁、逻辑直观,新手练一遍就能记住,面试手写直接加分…...
为什么我的Flowbite样式不生效?Tailwind CSS配置避坑与Svelte项目优化技巧
为什么我的Flowbite样式不生效?Tailwind CSS配置避坑与Svelte项目优化技巧 在Svelte项目中集成Flowbite组件库时,开发者常会遇到样式不生效的问题。这通常不是Flowbite本身的缺陷,而是配置环节的疏漏或构建工具的特定行为导致的。本文将深入剖…...
