在CentOS系统上搭建Android开发环境或配置自动化构建流水线(CI/CD)时,安装Android SDK是核心步骤之一,与图形化界面不同,在服务器版的CentOS上,我们通常通过命令行工具来完成下载与管理,本文将详细介绍如何在CentOS环境中干净、高效地下载和配置Android SDK。
准备工作:安装必要依赖
在开始之前,确保系统已安装Java开发工具包(JDK)和一些基础工具,Android SDK的运行依赖于JDK,通常建议使用JDK 8或11版本,我们需要wget
来下载文件和unzip
来解压。
可以通过以下命令安装(以CentOS 7为例,CentOS 8/Stream使用dnf
替代yum
):
sudo yum install -y java-1.8.0-openjdk-devel wget unzip
安装完成后,通过java -version
命令验证JDK是否安装成功。
下载与安装SDK命令行工具
Google官方并未提供适用于Linux的yum或dnf仓库,标准做法是下载“Command Line Tools Only”包,然后通过这个工具来管理其他SDK组件。
创建安装目录:选择一个合适的目录存放SDK,例如
/opt/android-sdk
。sudo mkdir -p /opt/android-sdk sudo chown $USER:$USER /opt/android-sdk cd /opt/android-sdk
下载工具包:访问Android Studio官方下载页面,找到“Command line tools only”部分,复制适用于Linux的下载链接,然后使用
wget
下载。wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
(注意:链接中的版本号会随时间更新,请以官方页面为准。)
解压与重命名:将下载的zip包解压,并为了方便使用,将其移动到一个规范的路径下。
unzip commandlinetools-linux-9477386_latest.zip mkdir cmdline-tools/latest mv cmdline-tools/* cmdline-tools/latest/
最终会形成
/opt/android-sdk/cmdline-tools/latest/
这样的目录结构,这是sdkmanager
所期望的路径。
配置环境变量
为了让系统能够识别SDK工具和命令,必须配置环境变量,编辑用户目录下的.bashrc
文件:
vi ~/.bashrc
在文件末尾添加以下内容:
export ANDROID_HOME=/opt/android-sdk export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin export PATH=$PATH:$ANDROID_HOME/platform-tools
保存并退出后,执行以下命令使配置立即生效:
source ~/.bashrc
为了清晰展示,关键环境变量说明如下表:
变量名 | 示例值 | 描述 |
---|---|---|
ANDROID_HOME | /opt/android-sdk | SDK的根目录,许多工具会依赖此变量寻找SDK组件。 |
PATH | ...:$ANDROID_HOME/... | 将sdkmanager 和adb 等常用工具的路径加入系统命令搜索路径。 |
安装必要的SDK组件
我们可以使用sdkmanager
来安装其他必需的组件,如特定版本的Android平台、构建工具和平台工具(其中包含adb
)。
查看可用包:
sdkmanager --list
安装常用组件:安装API 33平台、最新的构建工具和平台工具。
sdkmanager "platforms;android-33" "build-tools;33.0.0" "platform-tools"
在首次安装时,系统可能会提示您接受许可协议,输入
y
并回车即可。
验证安装
通过检查关键工具的版本来验证安装是否成功。
adb version sdkmanager --version
如果两条命令都能正常输出版本信息,说明Android SDK已在您的CentOS系统上成功安装和配置。
相关问答 (FAQs)
解答:这个问题几乎总是由环境变量PATH
配置错误或未生效导致的,请检查您在~/.bashrc
中添加的$ANDROID_HOME/cmdline-tools/latest/bin
路径是否正确,确认您已经执行了source ~/.bashrc
命令来重新加载配置文件,或者干脆重新打开一个终端窗口再试。
问题2:在自动化脚本中,如何非交互式地接受所有SDK组件的许可证?
解答:在持续集成(CI)等自动化场景中,手动输入y
是不可行的,您可以使用yes
命令结合管道(pipe)来自动完成这个过程,执行以下命令即可一次性接受所有未接受的许可证:
yes | sdkmanager --licenses
这个命令会自动对每一个许可提示输入y
,非常适合在脚本中使用。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复