安卓命令行编译是Android开发中的一项核心技能,尤其适用于自动化构建、CI/CD流程集成或没有图形界面的开发环境,通过命令行工具(如Android SDK中的adb、aapt、javac及构建工具链),开发者可以直接操控编译流程,生成APK或AAB安装包,以下是详细步骤和关键要点:

环境准备
- 安装JDK:确保安装Java Development Kit(JDK)8或11(根据Android Studio要求),并配置
JAVA_HOME环境变量。 - 安装Android SDK:通过Android Studio下载SDK Platform-Tools、Build-Tools及特定Android版本的API SDK。
- 配置环境变量:将
adb、aapt、zipalign等工具路径添加到系统PATH中。- Linux/macOS:
export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/版本号/ - Windows:在系统变量
Path中添加对应路径。
- Linux/macOS:
编译流程详解
创建或获取项目源码
若为新项目,可通过android create project命令(旧版)或手动创建目录结构,现代项目通常使用Gradle构建,需确保项目包含build.gradle文件。
配置本地属性文件
在项目根目录创建local.properties,指定SDK路径:
sdk.dir=/path/to/android-sdk
使用Gradle编译
Gradle是Android官方推荐构建工具,命令行编译需先安装Gradle(或通过Android Studio自带),进入项目目录后执行:
# 清理之前的构建文件 ./gradlew clean # 构建Debug版APK ./gradlew assembleDebug # 构建Release版APK(需签名配置) ./gradlew assembleRelease
构建产物位于app/build/outputs/apk/目录下。

手动编译(不推荐,但适用于理解底层)
对于非Gradle项目,可使用以下工具链:
- 资源编译:
aapt package -f -M AndroidManifest.xml -S res/ -I android.jar -o resources.ap_ - Java源码编译:
javac -d out -classpath android.jar -sourcepath src/ src/**/*.java - 打包DEX:
dx --dex --output=classes.dex out/ - 生成APK:
apkbuilder app.apk -u -z resources.ap_ -f classes.dex - 对齐优化:
zipalign -v 4 app.apk aligned_app.apk
签名APK
Release版APK必须签名,通过jarsigner或apksigner工具:
# 生成密钥库(首次) keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 # 签名 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore app.apk alias_name
常见问题与解决方案
-
问题1:
adb: command not found
解决:检查PATH变量是否包含platform-tools路径,或直接使用绝对路径调用。 -
问题2:
Gradle download failed
解决:配置Gradle镜像(如阿里云),在gradle/wrapper/gradle-wrapper.properties中修改distributionUrl。
相关问答FAQs
Q1: 如何在命令行中查看已连接的设备?
A1: 使用adb devices命令,若设备未识别,需确保开启USB调试模式并驱动正常,输出示例:
List of devices attached
emulator-5554 device
Q2: 如何在编译时指定输出路径?
A2: 在Gradle命令中添加-P参数,
./gradlew assembleDebug -Pandroid.buildOutputDir=/custom/path
或在build.gradle中配置android.applicationVariants.all修改输出路径。
