菜鸟科技网

安卓命令行编译如何操作?

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

安卓命令行编译如何操作?-图1
(图片来源网络,侵删)

环境准备

  1. 安装JDK:确保安装Java Development Kit(JDK)8或11(根据Android Studio要求),并配置JAVA_HOME环境变量。
  2. 安装Android SDK:通过Android Studio下载SDK Platform-Tools、Build-Tools及特定Android版本的API SDK。
  3. 配置环境变量:将adbaaptzipalign等工具路径添加到系统PATH中。
    • Linux/macOS:export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/版本号/
    • Windows:在系统变量Path中添加对应路径。

编译流程详解

创建或获取项目源码

若为新项目,可通过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/目录下。

安卓命令行编译如何操作?-图2
(图片来源网络,侵删)

手动编译(不推荐,但适用于理解底层)

对于非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
  • 打包DEXdx --dex --output=classes.dex out/
  • 生成APKapkbuilder app.apk -u -z resources.ap_ -f classes.dex
  • 对齐优化zipalign -v 4 app.apk aligned_app.apk

签名APK

Release版APK必须签名,通过jarsignerapksigner工具:

# 生成密钥库(首次)
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

常见问题与解决方案

  • 问题1adb: command not found
    解决:检查PATH变量是否包含platform-tools路径,或直接使用绝对路径调用。

  • 问题2Gradle 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修改输出路径。

分享:
扫描分享到社交APP
上一篇
下一篇