Android编译环境构建(二)(可用于物理机、虚拟机、容器化Jenkins环境)

文章目录

  • 需求
  • 环境要求
  • 文件下载
    • Gradle Version:7.5
    • cmdline-tools
    • 至此普通物理环境的Android编译环境已部署完毕
  • 部署maven(可选)
  • Jenkins配置Android构建环境

说明:
物理环境:物理机、虚拟机等
容器化环境:docker等

需求

Gradle Version:7.5 # 必需项,用于开源构建自动化工具
cmdline-tools # 必需项,SDK 管理器,用于下载SDK、Build-Tools
Android SDK 35 # 必需项,Software Development Kit,软件开发工具包
Build-Tools 35 # 必需项,Android项目构建工具
platform-tools # 必需项,SDK 平台工具
ndkVersion:21.4.7075529 # 非必需项,Native Development Kit,本地开发工具包
apache-maven-3.9.9 # 非必需项,此次为Android编译环境构建

环境要求

JDK17:由于新版SDK只能够使用cmdline-tools下载,而官网提供最版的cmdline-tools又需要JDK17的环境
这里默认已经准备好了JDK17环境

文件下载

Gradle Version:7.5

可参考:https://developer.aliyun.com/article/1377971
所有版本下载地址:https://gradle.org/releases/

  1. 下载
  • 下载方法一(推荐):
    Windows内下载完后上传到Linux服务器中,以7.5版本为例
    打开下载地址后,找到你需要的版本,点击对应版本中Download: binary-only or complete (checksums)中的"complete",即可开始下载
    若Linux服务器中没有解压程序,建议在Windows中解压出来后再将整个文件夹上传至Linux服务器指定的目录中

  • 下载方法二:
    Linux内下载并解压
    将下载方法一中的下载地址复制粘贴
    注意:需要已安装unzip,否则无法解压

# 使用curl下载
curl -o /tmp/ https://github.com/gradle/gradle-distributions/releases/download/v7.5.0/gradle-7.5-all.zip
# 使用wegt下载
wget -P /tmp/gradle-7.5-all.zip https://github.com/gradle/gradle-distributions/releases/download/v7.5.0/gradle-7.5-all.zip

#将下载好的压缩包解压至 /opt/ 目录中
unzip /tmp/gradle-7.5-all.zip -d /opt/
  1. 准备文件
    我这边已将Gradle-7.5文件夹上传到了Linux服务器中的 /opt/ 目录下
  • 对于容器化环境部署的Jenkins,需要多执行一步,物理环境则不需要执行该步骤
    将gradle-7.5从Linux服务器中,复制粘贴到容器中
# docker cp Gradle目录路径 Jenkins所在容器名称(或ID):容器内存放Gradle的目录路径
docker cp /opt/gradle-7.5/ jenkins_new:/opt/ 

Gradle-7.5目录构成如下:

root@bdf796726e0a:/# ls -l /opt/gradle-7.5/
total 60
-rw-r--r--  1 root root 23606 Jan 31  1980 LICENSE
-rw-r--r--  1 root root   868 Jan 31  1980 NOTICE
-rw-r--r--  1 root root   976 Jan 31  1980 README
drwxr-xr-x  2 root root  4096 Jan 31  1980 bin
drwxr-xr-x  5 root root  4096 Jan 31  1980 docs
drwxr-xr-x  2 root root  4096 Jan 31  1980 init.d
drwxr-xr-x  3 root root 12288 Jan 31  1980 lib
drwxr-xr-x 93 root root  4096 Jan 31  1980 src
  1. 配置环境变量,物理环境执行,容器化环境无需执行
vi /etc/profile

# 在文件末尾添加
export GRADLE_HOME=/opt/gradle-7.5
export PATH=$GRADLE_HOME/bin:$PATH

# 刷新环境变量
source /etc/profile

# 测试是否安装成功,有版本输出则为成功
gradle -v

cmdline-tools

sdkmanager
打开网页后,在最下方找到仅限命令行工具,点击下载Linux版的
下载页面:https://developer.android.com/studio?hl=zh-cn
使用文档页面:https://developer.android.com/tools/sdkmanager?hl=zh-cn

若下方命令下载失败,可进入platform-tools下载页面单独下载platform-tools:
https://developer.android.com/tools/releases/platform-tools?hl=zh-cn#downloads.html

  1. 目录准备
# Linux 服务器新建android-sdk目录
mkdir -P /opt/android-sdk

在Windows中解压出来后再将整个cmdline-tools文件夹上传至Linux服务器的 /opt/android-sdk/ 目录中

# 在Linux服务的cmdline-tools目录中新建latest目录,并将目录内容移动到新建的latest目录中
mkdir -P /opt/android-sdk/cmdline-tools/latest # 创建latest目录
cd /opt/android-sdk/cmdline-tools/ # 进入cmdline-tools目录
mv bin/ lib/ NOTICE.txt source.properties -t latest/ # 将原始 cmdline-tools 目录内容(包括 lib 目录、bin 目录、NOTICE.txt 文件和 source.properties 文件)移动到新创建的 latest 目录中
  1. 下载程序
# 查询可用sdk build-tools等工具列表,--channel=0 代表Stable 稳定版
/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager  --list --channel=0

# 下载Android SDK 35 Build-Tools 35
/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager --sdk_root=/opt/android-sdk "platform-tools" "platforms;android-35" "build-tools;35.0.0" "ndk;21.4.7075529"

# 核对文件,下载完成后应该会有以下目录
ls -l /opt/android-sdk/
total 32
drwxr-xr-x 4 root root 4096 Oct 29 09:59 build-tools
drwxr-xr-x 3 root root 4096 Oct 28 06:52 cmdline-tools
drwxr-xr-x 8 root root 4096 Oct 29 09:59 emulator
drwxr-xr-x 2 root root 4096 Oct 28 07:46 licenses
drwxr-xr-x 3 root root 4096 Oct 28 07:49 ndk
drwxr-xr-x 3 root root 4096 Oct 28 08:03 platform-tools
drwxr-xr-x 5 root root 4096 Oct 29 10:00 platforms
drwxr-xr-x 6 root root 4096 Oct 29 09:59 tools
  1. 配置环境变量,物理环境执行,容器化环境无需执行
vi /etc/profile

# 在文件末尾添加
export ANDROID_HOME=/opt/android-sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export NDK=/opt/android/ndk/21.4.7075529/
export PATH=${PATH}:$NDK

# 刷新环境变量
source /etc/profile

# 测试是否安装成功,有版本输出则为成功
adb --version

至此普通物理环境的Android编译环境已部署完毕

4 拷贝程序到容器中,物理环境无需执行,容器化环境执行
将android-sdk从Linux服务器中,复制粘贴到容器中

# docker cp android-sdk目录路径 Jenkins所在容器名称(或ID):容器内存放android-sdk的目录路径
docker cp /opt/android-sdk/ jenkins_new:/opt/ 

部署maven(可选)

  1. 下载
    官网地址:https://maven.apache.org/download.cgi
    下载 apache-maven-3.9.9-bin.zip
    按照上面安装gradle的方法,将压缩包上传到Linux服务器 /opt/ 目录中

  2. 配置环境变量,物理环境执行,容器化环境无需执行

vi /etc/profile

# 在文件末尾添加
export M2_HOME=/opt/apache-maven-3.9.9
export PATH=$PATH:$M2_HOME/bin

# 刷新环境变量
source /etc/profile

# 测试是否安装成功,有版本输出则为成功
mvn -version
  1. 拷贝程序到容器中,物理环境无需执行,容器化环境执行
    将apache-maven-3.9.9从Linux服务器中,复制粘贴到容器中
# docker cp maven目录路径 Jenkins所在容器名称(或ID):容器内存放maven的目录路径
docker cp /opt/apache-maven-3.9.9/ jenkins_new:/opt/ 

Jenkins配置Android构建环境

  1. 配置JDK
    路径:系统管理 > 全局工具配置 > JDK 安装
    配置完成后,点击保存
    配置如图:
    请添加图片描述
  2. 配置Gradle
    路径:系统管理 > 全局工具配置 > Gradle 安装
    配置完成后,点击保存
    配置如图:
    请添加图片描述
  3. 配置android SDK、NDK
    路径:系统管理 > System > 全局属性
    勾选环境变量,配置完成后,点击保存
    配置如图:
    请添加图片描述
  4. 配置Maven(可选)
    路径:系统管理 > 全局工具配置 > Maven 安装
    配置完成后,点击保存
    请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Django安装

在终端创建django项目 1.查看自己的python版本 输入对应自己本机python的版本,列如我的是3.11.8 先再全局安装django依赖包 2.在控制窗口输入安装命令: pip3.11 install django 看到Successflully 说明我们就安装成功了 python的Scripts文件用于存…

【免费】跟网型逆变器小干扰稳定性分析与控制策略优化

目录 主要内容 模型研究 数学模型 2.小信号控制结构 3.仿真模型 结果一览 下载链接 主要内容 弱电网往往具有阻抗较大和短路比较小等特点,易导致系统不稳定,限制了功率传输能力。该仿真建立了弱电网下跟网型逆变器的小信号扰动状态空间模…

aws(学习笔记第十课) 对AWS的EBS如何备份(snapshot)以及使用snapshot恢复数据,AWS实例存储

aws(学习笔记第十课) 对AWS的EBS如何备份(snapshot)以及使用snapshot,AWS实例存储 学习内容: 对AWS的EBS如何备份AWS实例存储EBS和实例存储的不足 1. 对AWS的EBS如何备份(snapshot)以及使用snapshot恢复数…

开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序中积分使用价值的拓展策略

摘要:本文围绕开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序,深入探讨其积分使用价值的丰富策略。详细分析积分兑换礼品、会员升级、积分抵现等方式在该特定商城小程序环境下的应用特点、存在问题及对用户和商城的影响,旨在为商城的优化运…

async函数和await表达式

async函数 函数的返回值为promise对象 promise对象的结果由async函数执行的返回值决定 async函数的返回值 和then方法的返回值以及返回类型的判断办法一致 如果返回值是一个非promise类型的数据 返回的promise的类型为fulfilled或者resolved 如果返回的是一个promise对象 …

软件测试--BUG篇

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 目录 1. 软件测试的⽣命周期 2. BUG 1. BUG 的概念 2. 描述bug的要素 3.bug级别 4.bug的⽣命周期 5 与开发产⽣争执怎…

Linux云计算 |【第五阶段】CLOUD-DAY8

主要内容: 掌握DaemonSet控制器、污点策略(NoSchedule、Noexecute)、Job / CronJob资源对象、掌握Service服务、服务名解析CluterIP(服务名自动发现)、(Nodeport、Headless)、Ingress控制器 一…

基于java+SpringBoot+Vue的新闻推荐系统设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

我主编的电子技术实验手册(22)——RC并联电路

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…

设备树基本语法

文章目录 设备树基本语法跟节点子节点reg属性address-cells 和 size-cells 属性model 属性status 属性compatible 属性aliases 节点chosen 节点device_type 节点自定义属性 当描述设备树(Device Tree) 时, 通常会涉及到以下几个关键术语&…

【环境搭建】Apache Kylin 各个版本Docker搭建汇总

前言 最近需要做一些Web漏洞复现的研究,所以需要搭建不同版本的Apache Kylin,在这里汇总一下。 用Docker来搭建环境是最简单的方式,因为无需在本地构建镜像,只需执行以下命令直接从 Docker Hub 拉取镜像,当容器启动时…

linux操作系统进程

linux操作系统是对下的软硬件进行管理,为了能够对上提供稳定,快速,安全的服务而诞生的软件。 广义上的操作系统是包含搭载在操作系统上的软件和函数库等文件的。 狭义上的操作系统就是操作系统内核,进行进程管理,文件…

CentOS9 Stream 支持输入中文

CentOS9 Stream 支持输入中文 方法一:确保 gnome-control-center 和相关组件已更新方法二:手动添加输入法源配置方法三:配置 .xinputrc 文件方法四:检查语言包 进入centos9 stream后,点击右上角电源键,点击…

Linux权限管理和文件属性

目录 1. 权限的概念 2. 权限管理 2.1 文件访问者的分类 2.2 文件类型和访问权限(事物属性) 2.2.1 文件类型 2.2.2 file指令 2.2.3 基本权限 3. 文件访问权限的相关设置方法 3.1 chmod 3.2 chown 和 chgrp 3.3 umask 4. 粘滞位 1. 权限的…

某些保护措施如反接保护漏电保护为什么用可控硅而不用MOS管

现在很多人了解到MOS的饱和导通时电阻很小。 不过MOS的导通有条件,就是GS电压要求比较高。 在保护方面,我们需要 1,简单可靠,务必不要太复杂 2,触发电压要低,电流要求要小,否则灵敏度达不到…

【力扣专题栏】字母异词分组,如何利用强大的容器(unordered_map)解决该问题?

题解目录 1、题目描述解释2、算法原理解析3、代码编写 1、题目描述解释 2、算法原理解析 3、代码编写 class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {//创建哈希表unordered_map<string,vector<string&g…

debian11安装最新rabbitmq

1、使用官网提供系统对应的安装脚本 安装 版本说明&#xff1a; Debian Buster代表Debian 10 Debian Bullseye代表Debian 11 Debian Bookworm代表Debian 12 ‌Debian Trixie代表Debian 13 Debian Sid代表Debian unstable版本 2、新建脚本文件 vim rabbitMq.sh将脚本内容复制到…

K 临近算法

机器学习中的 K 临近算法&#xff0c;计算输入数据与训练集中数据的距离&#xff0c;选取 k 个最近的数据&#xff0c;选中的数据中&#xff0c;那个分类多&#xff0c;那个分类就是最终结果。特征空间的距离有多重测量方法&#xff0c;最常用的就是欧氏距离&#xff0c;公式如…

2025上海市公务员考试报名流程详细教程

2025年上海市公务员考试报名马上就要开始了&#xff0c;有想要参加上海公务员考试的姐妹们&#xff0c;可以提前了解一下考试报名流程&#xff0c;和报名照制作尺寸要求 报名时间&#xff1a;11月2日0:00至11月8日12:00 南核时间&#xff1a;11月2日0:00至11月8日14:00 缴费…

GPT原理;ChatGPT 等类似的问答系统工作流程如下;当用户向 ChatGPT 输入一个问题后:举例说明;ChatGPT不是通过索引搜索的传统知识库

目录 GPT原理 GPT架构 GPT 主要基于 Transformer 的解码器部分 ChatGPT 等类似的问答系统工作流程如下: 用户输入 文本预处理 模型处理 答案生成 输出回答 当用户向 ChatGPT 输入一个问题后:举例说明 文本预处理: ChatGPT不是通过索引搜索的传统知识库 GPT GPT…