[转] Android 编译命令
转自: https://segmentfault.com/a/1190000021742841
基于 Android 9.0。
许多命令时间一长就记不清了,记录一下。
Android 环境引入的命令
在shell中执行"source build/envsetup.sh"后,Android将增加一些命令到当前环境中。
- lunch:选择编译的产品类型,并存储在当前环境中。
lunch <product_name>-<build_variant>
- tapas:与 'lunch' 类似,可以指定编译的应用。
tapas [<App1> <App2> ...] [arm|x86|mips|arm64|x86_64|mips64] [eng|userdebug|user]
- printconfig:打印当前配置。
- croot:切换到顶层目录
- m:从顶层目录开始编译。
-
mm:编译当前目录中的所有模块,但不包含依赖的模块。
- mmm:编译指定目录的所有模块,但不包含依赖的模块。可以使用下述方式限制编译的模块。
mmm dir/:target1,target2.
- mma:编译当前目录中的所有模块,包含依赖的模块。
- mmma:编译指定目录的所有模块,包含依赖的模块
- provision:对设备进行固件升级,选项将被传递到 fastboot 中。
- cgrep:在当前目录的所有 C/C++ 文件中查找。
- ggrep:在当前目录的所有 Gradle 文件中查找。
- jgrep:在当前目录的所有 Java 文件中查找。
- resgrep:在当前目录的所有 res/*.xml 文件中查找。
- mangrep:在当前目录的所有 AndroidManifest.xml 文件中查找。
- mgrep:在当前目录的所有 Makefiles 文件中查找。
- sepgrep:在当前目录的所有 sepolicy 文件中查找。
- sgrep:在当前目录的所有文件中查找。
- godir:切换到包含指定文件的目录。
make相关命令
make 或 m 后面可以跟随不同的参数来指定编译目标。
- droid:默认的 make 编译目标。
- all:编译所有内容,包括不含droid标记的内容。编译服务器会运行此命令,以确保项目中包含Android.mk文件的所有元素都会编译。
- checkbuild:编译所有的模块。
- showcommands:显示编译步骤中实际的编译指令。
- PRODUCT-xxx-yyy:编译指定的产品。
-
dump-products:显示产品的编译信息。
- LOCAL_MODULE:编译指定的模块。例如,
make runtime
- nothing:不编译任何事情,只是解析和验证编译框架。
- java:编译项目中的所有java代码。
- native:编译项目中的所有native代码。
- host:编译host端代码。
- target:编译target端代码。
- (java|native)-(host|target):按组合编译限定代码。
- (host|target)-(java|native):按组合编译限定代码。
- snod:快速重新编译system镜像。
- vnod:快速重新编译vendor镜像。
- pnod:快速重新编译product镜像。
- update-api:更新SDK API。
- otapackage:生成OTA升级包。
- updatepackage:生成zip升级包。
- docs:编译文档。
- ndk-docs:生成ndk文档。
- sdk:编译生成SDK。
- ndk:编译生成NDK。
- ramdisk:编译生成ramdisk。
- systemtarball:生成system的tar包。
- boottarball:生成boot的tar包。
- userdatatarball:生成data的tar包。
- systemimage:生成system.img镜像。
- bootimage:生成boot.img镜像。
- vbmetaimage:生成vbmeta.img镜像。
- userdateimage:生成userdata.img镜像。
- cacheimage:生成cache.img镜像。
- bptimage:生成partition-table.img镜像。
- vendorimage:生成vendor.img镜像。
- productimage:生成product.img镜像。
- apps_only:编译不包含 user,userdebug,eng 标签的应用程序。
- dist:拷贝输出到dist目录。
- dist_files:仅仅拷贝库文件到dist目录。
- libandroid_runtime:编译JNI相关内容。
- framework:编译java framework相关内容。
- services:编译系统服务相关内容。
- cts:编译CTS测试套件。
- vts:编译VTS测试套件。
make clean 相关命令
- clean:清除当前配置编译的所有文件,等同于rm -rf out/
/。 - **clean-$(LOCAL_MODULE):清理指定模块的编译结果。
- clean-$(LOCAL_PACKAGE_NAME):清理指定包的编译结果。
- clobber:清除所有输出,等同于rm -rf out/。
- dataclean:删除当前配置上data目录的所有文件。
- clean-sdk:清理SDK编译输出。
- installclean:清除与编译类型相关的文件。在切换编译目标是使用该命令可以加快编译。