jenkins+gitlab实现Android自动打包填坑之旅

news2024/11/12 2:00:26

一.背景

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/bash

cd /Users/lilei/.jenkins/workspace/MTS_Client/MTS_Client
sleep 1
gradle clean
sleep 1
gradle assembleRelease

最后若有疑问可在评论区讨论。     滴滴  heihei~

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

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

相关文章

【安卓版】网页转应用v1.2,生成属于你的专属应用

网页转应用可以将网址转换成可安装的APP应用。无论是新闻、博客、论坛、游戏,还是在线购物网站或者社交媒体平台,只要你有个希望转换的网址,这款应用都能为你实现,应用永久免费使用,并且无需联网,即可生成你…

【JavaWeb】会话管理 cookie session 三大域对象总结

文章目录 会话管理一、Cookie1.1 Cookie的使用1.2 Cookie的时效性1.3 Cookie的提交路径 二、Session2.1 HttpSession的使用2.2 HttpSession时效性 三、三大域对象3.1 域对象概述3.2 域对象的使用 总结 会话管理 HTTP是无状态协议 无状态就是不保存状态,即无状态协议(stateless)…

GIt同时存在传入和传出更改修改,无法合并

前言 Git是常用的版本管理工具,之前面试被问到过一次——Git有无遇到过使用错误情况?当时卡壳了没答上来,所以这次遇到,特此记录学习。 问题概述 前一天提交了代码,mt进行了修改。但我忘记拉取最新,就进…

1.19号网络

超时检测 概念 1> 在网络通信中,有很多函数是阻塞函数,会导致进程的阻塞,例如:accept、recv、recvfrom、等等 2> 为了避免进程在阻塞函数处,无休止的等待,我们可以设置一个超时时间,当…

【云原生】Docker的端口映射、数据卷、数据卷容器、容器互联

目录 一、端口映射(相当于添加iptables的DANT) 二、数据卷创建(宿主机目录或文件挂载到容器中) 三、数据卷容器(多个容器通过同一个数据卷容器为基点,实现所有容器数据共享) 四、容器互联&am…

尝试给docker ubuntu22.04镜像添加远程访问桌面

实在时不愿折腾,但是ubuntu 镜像没有桌面,有些操作实在太难受了,效率也不高。硬着头皮上吧。幸亏这是个docker的镜像。要是个虚拟机,这折腾来去,直接崩溃了。docker的好处就是立马就能从头来过,秒级的删除安…

Hive常见问题汇总

Hive和Hadoop的关系 Hive 构建在 Hadoop 之上, HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成的 所有的数据都是存储在 Hadoop 中 查询计划被转化为 MapReduce 任务,在 Hadoop 中执行(有些查询没有 MR 任务,如&…

07 队列

目录 1.队列 2.实现 3.OJ题 1. 队列 只允许在一段进行插入数据操作,在另一端进行数据删除操作的特殊线性表,队列具有先进先出FIFO(First In Firtst Out),插入操作的叫队尾,删除操作的叫队头 2. 实现 队列…

PWM调光 降压恒流LED芯片FP7127:为照明系统注入新能量(台灯、GBR、调光电源、汽车大灯)

目录 一、降压恒流LED芯片FP7127 二、降压恒流LED芯片FP7127具有以下特点: 三、降压恒流LED芯片FP7127应用领域: LED照明和调光的新纪元随着LED照明技术的不断发展,人们对于照明调光的需求也越来越高。PWM调光技术作为一种常用的调光方法&…

微软 AD 介绍 | 安全建议 | 防护

介绍: 什么是Active Directory(AD)? Active Directory 是由 微软开发的目录服务,用于存储和管理网络中的资源,如计算机、用户、组和其他网络对象。允许组织管理员轻松地管理和验证网络中的用户和计算机。 …

解决Sublime Text V3.2.2中文乱码问题

目录 中文乱码出现情形通过安装插件来解决乱码问题 中文乱码出现情形 打开一个中文txt文件,显示乱码,在File->Reopen With Encoding里面找不到支持简体中文正常显示的编码选项。 通过安装插件来解决乱码问题 安装Package Control插件 打开Tool->…

[IO复用] IO复用问答

记录一下IO复用相关的基础知识。 文章目录 阻塞和非阻塞同步和异步为什么使用IO复用什么是IO复用IO复用有哪些方式select IO复用poll IO复用epoll IO复用什么时候用select 或者 epoll? select、poll、epoll的区别Windows中的IO复用Reactor模式C10K问题C10M问题 面试…

【时间序列篇】基于LSTM的序列分类-Pytorch实现 part3 化为己用

系列文章目录 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part1 案例复现 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part2 自有数据集构建 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part3 化为己用 在一个人体姿态估计的任务中,需要用深度学习模型…

【Vue3】组件通信

Vue3组件通信和Vue2的区别: 移出事件总线,使用mitt代替。vuex换成了pinia。把.sync优化到了v-model里面了。把$listeners所有的东西,合并到$attrs中了。$children被砍掉了。 1. props 若 父传子:属性值是非函数。若 子传父&…

【解决】IntelliJ IDEA 重命名 Shift + F6 失效

IntelliJ IDEA 重命名 Shift F6 失效 问题解决 问题 Idea 重命名 Shift F6 ,一直没反应 解决 调查发现原因是微软新版的输入法冲突了。需要设置【使用以前版本的微软拼音输入法】解决兼容性。 设置 -> 时间和语言 -> 区域 -> 语言选项 -> 键盘选项…

ELK之使用Grafana读取ES集群的Nginx日志进行分析展示

一、前提: 直通车 ------------>↓↓↓↓↓↓ 需要ES集群 https://blog.csdn.net/wdy_2099/article/details/125441436需要filebeat https://blog.csdn.net/wdy_2099/article/details/125445893需要logstash https://blog.csdn.net/wdy_2099/article/details/1…

技术变革下职业危机

方向一:技术变革 1.人工智能(AI):AI技术的快速发展正在改变各个行业。AI在医疗诊断、金融分析、客户服务以及物流管理等方面都有广泛应用,提高了效率和准确性。但同时也引发了一些道德和道德问题,比如隐私…

Redis的五种常用数据类型详解及相关面试问题

目录 Redis的五种常用数据类型详解 简述 Redis五种基本数据类型 String字符串 常用命令 应用场景 Hash散列表 常用命令 使用场景 List链表 常用命令 应用场景 Set( 集合) 常用命令 应用场景 SortedSet( 有序集合) zset 常用命令介绍 应用场景 面试题常问的数…

【MySQL】打开科技创新的第一生产力

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-EtRkflNU19AGWAkT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

景联文科技大模型数据集更新!教育题库新增高质量数学题、逻辑推理题及英文题

苏格拉底曾以“点燃火焰”的理念来诠释教育。随着大语言模型在教育中的不断应用,教育与AI的深度融合,让我们看到了“点燃火焰”的理念的更多可能性。 大语言模型可以通过与学生的互动,为他们提供个性化的学习体验,更好地满足学习需…