在服务器端或个人工作站上使用 CentOS 系统进行 Android 应用开发,是一种高效且灵活的选择,特别适用于构建持续集成/持续部署 (CI/CD) 流水线或进行无图形界面的自动化构建,本文将详细介绍如何在 CentOS 环境下配置一个完整的 Android 开发与编译环境,并重点讨论其中涉及的 编码 规范问题。
环境准备与基础依赖
确保您的 CentOS 系统已更新至最新状态,并安装了一些必要的工具,打开终端,执行以下命令:
# 对于 CentOS 7 sudo yum update -y sudo yum install -y wget unzip git # 对于 CentOS 8 / Stream sudo dnf update -y sudo dnf install -y wget unzip git
这些基础工具将用于下载软件包、解压缩文件以及管理代码仓库。
安装 Java 开发工具包 (JDK)
Android 开发离不开 Java 环境,CentOS 可以很方便地通过其软件包管理器安装 OpenJDK,这是一个开源且免费的 Java 实现,推荐安装 JDK 11 或 17,它们是当前 Android 开发的主流支持版本。
# 安装 OpenJDK 11 sudo yum install java-11-openjdk java-11-openjdk-devel -y
安装完成后,通过以下命令验证 Java 是否已正确安装:
java -version javac -version
如果终端能够正确显示 Java 版本信息,说明 JDK 安装成功。
下载与配置 Android SDK
Android SDK (Software Development Kit) 是 Android 开发的核心工具集,由于我们不依赖图形界面,因此只需下载 “Command line tools only” 版本。
创建 SDK 目录并下载工具:
我们将 SDK 安装在/usr/local/android-sdk
目录下。sudo mkdir /usr/local/android-sdk cd /usr/local/android-sdk sudo wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
解压并整理目录结构:
下载完成后,解压文件并将其移动到一个标准的cmdline-tools
目录中,这是 Android 官方推荐的做法。sudo unzip commandlinetools-linux-9477386_latest.zip sudo mkdir cmdline-tools sudo mv cmdline-tools cmdline-tools/latest
配置环境变量:
为了让系统能够在任何位置找到 Android SDK 的工具,需要配置环境变量,编辑/etc/profile.d/android-sdk.sh
文件(推荐此方式,对所有用户生效):sudo vi /etc/profile.d/android-sdk.sh
在文件中添加以下内容:
export ANDROID_HOME=/usr/local/android-sdk export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin export PATH=$PATH:$ANDROID_HOME/platform-tools
保存并退出后,执行
source /etc/profile.d/android-sdk.sh
或重新登录终端使配置生效。
下表小编总结了关键的环境变量:
变量名 | 值示例 | 说明 |
---|---|---|
ANDROID_HOME | /usr/local/android-sdk | 指向 Android SDK 的根目录,许多工具依赖此变量 |
PATH | $PATH:$ANDROID_HOME/... | 将 SDK 的工具目录(如 cmdline-tools 和 platform-tools )加入系统可执行路径 |
安装 SDK 组件与统一编码
环境配置好后,使用 sdkmanager
来安装必要的 Android 平台和构建工具。
# 接受许可协议 yes | sdkmanager --licenses # 安装最新版的平台和构建工具 sdkmanager "platforms;android-33" "build-tools;33.0.0"
在跨平台开发中,编码 问题是一个常见的陷阱,为了避免源代码文件(特别是包含中文注释的文件)在编译时出现乱码或错误,强烈建议在整个开发过程中统一使用 UTF-8 编码。
在你的 Android 项目根目录下的 gradle.properties
文件中,添加或修改以下行,以确保 Gradle 构建过程使用 UTF-8 编码:
org.gradle.jvmargs=-Dfile.encoding=UTF-8
这一设置能强制 Gradle 在编译 Java/Kotlin 源码和读取资源文件时使用 UTF-8 编码,从而有效避免绝大多数与字符集相关的编译问题。
验证环境与构建项目
通过构建一个简单的 Android 项目来验证整个环境是否工作正常,你可以从 Git 克隆一个现有项目,或使用 sdkmanager
创建一个基础项目,进入项目目录后,执行以下命令进行编译:
# 使用 Gradle Wrapper 编译 Debug 版本 ./gradlew assembleDebug
如果编译成功,你将在 app/build/outputs/apk/debug/
目录下找到生成的 APK 文件,这证明你的 CentOS 系统已经具备了完整的 Android 项目编译能力。
相关问答 (FAQs)
Q1: 在 CentOS 上编译 Android 项目时,遇到 GBK
或 UTF-8
相关的编码错误怎么办?
A1: 这个错误通常是因为源代码文件的保存编码与 Gradle 构建工具默认使用的编码不一致导致的,解决方法是:确保你的代码编辑器(如 VS Code, IntelliJ IDEA)已将所有源文件(.java
, .kt
, .xml
等)设置为 UTF-8 编码并保存,在项目根目录的 gradle.properties
文件中,明确添加 org.gradle.jvmargs=-Dfile.encoding=UTF-8
,强制 Gradle 使用 UTF-8 编码进行编译,这可以彻底解决绝大多数编码问题。
Q2: 我的 CentOS 服务器没有图形界面,可以进行 Android 开发吗?
A2: 完全可以,虽然完整的 Android Studio IDE 需要图形界面,但 Android 应用的核心开发流程——包括代码编写、编译、打包、签名和测试——都可以通过命令行完成,在无图形界面的 CentOS 服务器上,你可以使用 Git 进行代码版本管理,利用 Vim 或 Nano 等编辑器修改代码,然后通过 sdkmanager
管理 SDK,并最终使用 ./gradlew
命令执行编译和打包,这正是自动化构建和 CI/CD(如 Jenkins, GitLab CI)服务器的工作模式。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复