基于 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/<configuration>/
  • **clean-$(LOCAL_MODULE):清理指定模块的编译结果。
  • clean-$(LOCAL_PACKAGE_NAME):清理指定包的编译结果。
  • clobber:清除所有输出,等同于rm -rf out/
  • dataclean:删除当前配置上data目录的所有文件。
  • clean-sdk:清理SDK编译输出。
  • installclean:清除与编译类型相关的文件。在切换编译目标是使用该命令可以加快编译。

戈壁老王
143 声望64 粉丝

做为一个不称职的老年码农,一直疏忽整理笔记,开博记录一下,用来丰富老年生活,