【汇总】Android源码核心变量、函数

一、变量开头解释:

(1)LOCAL_------这些变量在每个模块中都被设置。他们被命令include $(CLEAR_VARS)清理,所以你可以在包含include $(CLEAR_VARS)命令后,相信他们是空的。
在你会使用的大多数的模块中的大多数变量都是LOCAL_变量。

(2)PRIVATE_------这些变量是编译指定目标的变量。那意味着他们只在特定模块的命令当中是有用的。
这也意味着他们不太可能在你所包含的模块结束后发生改变。这个链接与编译的文档(http://www.gnu.org/software/make/manual/make.html#Target_002dspecific)描述了更多的指定目标的变量。
请记住有些源码树中的私有变量没有以PRIVATE_作为前缀。
这是安全的,并且他们会在他们被发现的时候被修复。对于造成的疑惑道歉。

(3)INTERNAL_------这些变量是对编译系统的功能至关重要的,所以你不应该创建以这个作为前缀的变量,并且你也许也并不应该在你的makefile文件中弄乱这些变量。

(4)HOST_和TARGET_------这些变量包含了明确指向主机以及目标的目录以及定义。不要在你的makefile文件当中设置以HOST_或者TARGET开始的变量。

(5)BUILD_和CLEAR_VARS------这些变量包含了需要包含的定义好的模板makefile文件。一些例子是CLEAR_VARS和BUILD_HOST_PACKAGE。

(6)任何在你的Android.mk文件当中的其他名称的使用都是公平的。然而,记住这是一个不可回归的编译系统,
所以你的变量可能会被另一个更晚包含的Android.mk文件修改,并且在你的规则或者模块的命令执行时变得不一样。

 

  

二、变量、命令、参数

排序 变量 英文说明 中文说明 备注、示例
A        
  ANDROID_PRODUCT_OUT_BIN   示例:ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin  
  ANDROID_PRODUCT_OUT   指定IMG路径fastboot 能找到要加载的路径,文件不用给Android虚拟机里一条调设置。示例:export ANDROID_PRODUCT_OUT='out/target/product/blueline'  
  ANDROID_VENDOR_KEYS      
B        
  BUILD_HOST_JAVA_LIBRARY   主机上的JAVA库  
  BUILD_HOST_STATIC_LIBRARY   主机上的静态库  
  BUILD_HOST_SHARED_LIBRARY   主机上的动态库  
  BUILD_HOST_EXECUTABLE   主机上的可执行文件  
  BUILD_OUT      
  BUILD_STATIC_LIBRARY   目标设备上的静态库  
  BUILD_SHARED_LIBRARY   目标设备上的动态库  
  BUILD_STATIC_JAVA_LIBRARY   BUILD_STATIC_JAVA_LIBRARY  
  BUILD_EXECUTABLE   目标设备上的可执行文件  
  BUILD_ENV_SEQUENCE_NUMBER      
  BUILD_ID   通常用于说明分支branch的,默认的是OPENMASTER,用户应该配置这个参数。默认UNKNOWN ? build/make/core/build_id.mk
  BUILD_JAVA_LIBRARY   JAVA库  
  BUILD_NUMBER   默认eng.$(USER).$(shell date +%Y%m%d.%H%M%S)的形式。 build/make/core/build_id.mk
  BUILD_PACKAGE   APK程序。include $(BUILD_PACKAGE) 表示生成一个 apk,它可以多多种类型  
  BUILD_SYSTEM   代表:build/core/ build/core/main.mk
C        
  CLEAR_VARS   是一个编译模块的开始,它会清空除LOCAL_PATH之外的所有LOCA_XXX变量,由include $(BUILD_XXX) 结束 build/core/config.mk
  CORRECT_BUILD_ENV_SEQUENCE_NUMBER   这个数字用于buildspec.mk更新时的提醒,应该同buildspec.mk中的或环境变量中的BUILD_ENV_SEQUENCE_NUMBER相等 build/make/core/version_defaults.mk
  COMMON_ANDROID_PACKAGE_SUFFIX   指定和系统对应的包名。示例;LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)  
  COMMON_LUNCH_CHOICES      
D        
  DISPLAY_BUILD_NUMBER      
  UT_DIR   指定编译输出目录。默认:out。示例:export OUT_DIR=out_mytarget  
  DEBUG_OUT_DIR      
  DEFAULT_APP_TARGET_SDK   ,默认AOSP build/make/core/build_id.mk
  DISABLE_ARTIFACT_PATH_REQUIREMENTS   编译到system/下面要做白名单的声明。如果没有声明,那就会报错。build/envsetup.sh 加上export DISABLE_ARTIFACT_PATH_REQUIREMENTS="true"就可以顺利编译通过不再报artifact_path_requirements错误.另:PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += /system/bin/helloworld加到自己模块mk下也一样  
  DEVICE_PACKAGE_OVERLAYS   overlays层 覆盖package文件  
E        
F        
G        
H        
  HOST_OS      
  HOST_ARCH      
  HOST_OUT_INTERMEDIATES     build/core/envsetup.mk
  HOST_OUT     build/core/envsetup.mk
  HOST_BUILD_TYPE     build/core/envsetup.mk
  HOST_ARCH     build/core/envsetup.mk
I        
  intermediates      
J        
K        
L        
  LOCAL_AAPT_FLAGS   添加引用的 aar 包里面的资源  
  LOCAL_ADDITIONAL_JAVA_DIR      
  LOCAL_AIDL_INCLUDES      
  LOCAL_ASFLAGS      
  LOCAL_ASSET_DIR      
  LOCAL_ASSET_FILES   在Android.mk文件中编译应用程序(BUILD_PACKAGE)时设置此变量,表示资源文件, 通常会定义成LOCAL_ASSET_FILES += $(call find-subdir-assets)  
  LOCAL_BUILT_MODULE_STEM      
  LOCAL_CC   指定C编译器  
  LOCAL_CXX   指定C++编译器  
  LOCAL_CXXFLAGS   指定C++编译器附加参数  
  LOCAL_CERTIFICATE   签名认证。LOCAL_CERTIFICATE:= presigned 指用软件自带的签名。对应的LOCAL_CERTIFICATE:= platforms 是指用android源码中的platform对其进行签名  
  LOCAL_CLASSPATH      
  LOCAL_COMPRESS_MODULE_SYMBOLS      
  LOCAL_COPY_HEADERS      
  LOCAL_COPY_HEADERS_TO   install应用程序时复制头文件的目的路径  
  LOCAL_CPP_EXTENSION   如果你的C++文件不是以cpp为文件后缀,你可以通过LOCAL_CPP_EXTENSION指定C++文件后缀名。如:LOCAL_CPP_EXTENSION := .cc  注意统一模块中C++文件后缀必须保持一致。  
  LOCAL_DX_FLAGS      
  LOCAL_DEX_PREOPT      
  LOCAL_EXPORT_PACKAGE_RESOURCES      
  LOCAL_FORCE_STATIC_EXECUTABLE   如果编译的可执行程序要进行静态链接(执行时不依赖于任何动态库),则设置LOCAL_FORCE_STATIC_EXECUTABLE:=true 

目前只有libc有静态库形式,这个只有文件系统中/sbin目录下的应用程序会用到,这个目录下的应用程序在运行时通常

文件系统的其它部分还没有加载,所以必须进行静态链接。

 
  LOCAL_GENERATED_SOURCES      
  LOCAL_INSTRUMENTATION_FOR      
  LOCAL_INSTRUMENTATION_FOR_PACKAGE_NAME      
  LOCAL_INTERMEDIATE_SOURCES      
  LOCAL_INTERMEDIATE_TARGETS      
  LOCAL_IS_HOST_MODULE      
  LOCAL_JAR_MANIFEST      
  LOCAL_JARJAR_RULES      
  LOCAL_JAVACFLAGS   额外的编译java用的flags。示例: LOCAL_JAVACFLAGS += -Xlint:deprecation  
  LOCAL_JAVA_LIBRARIES   编译java应用程序和库的时候指定包含的java类库,目前有core和framework两种;多数情况下定义成:LOCAL_JAVA_LIBRARIES := core framework;注意LOCAL_JAVA_LIBRARIES不是必须的,而且编译APK时不允许定义(系统会自动添加)  
  LOCAL_JAVA_RESOURCE_DIRS      
  LOCAL_JAVA_RESOURCE_FILES      
  LOCAL_JNI_SHARED_LIBRARIES   引用我们的 so 库  
  LOCAL_NO_DEFAULT_COMPILER_FLAGS    通常为C或者C++源代码文件的编译提供了默认的头文件目录和flag  
  LOCAL_NO_EMMA_COMPILE      
  LOCAL_NO_EMMA_INSTRUMENT      
  LOCAL_NO_MANIFEST   如果你的packege没有manifest,可以设置LOCAL_NO_MANIFEST:=true 一般资源包会这么做  
  LOCAL_NO_STANDARD_LIBRARIES      
  LOCAL_OVERRIDES_PACKAGES   指定模块不参与编译.  
  LOCAL_PACKAGE_NAME   APK应用程序的名称  
  LOCAL_POST_PROCESS_COMMAND  

在编译host相关的模块时,可以用此变量定义一条或多条命令在一个模块被链接(link)完成后要执行的命令,可以是运行某个程序或执行shell命令。同一mk中可以多次使用。注意: 遇到错误时不会提示,如:复制文件,没有目录。 示例:

执行shell命令:LOCAL_POST_PROCESS_COMMAND := $(shell mkdir $(TARGET_OUT)/lib/ -p; cp -r $(LOCAL_PATH)/*.apk $(TARGET_OUT)/app/)

运行某个程序:

LOCAL_POST_PROCESS_COMMAND := /Developer/Tools/Rez   -d __DARWIN__ -t APPL\

       -d __WXMAC__ -o $(module) Carbon.r

 
  LOCAL_PREBUILT_EXECUTABLES   预编译including $(BUILD_PREBUILT)或者$(BUILD_HOST_PREBUILT)时所用,指定需要复制的可执行文件  
  LOCAL_PREBUILT_JAVA_LIBRARIES      
  LOCAL_PREBUILT_LIBS   预编译including $(BUILD_PREBUILT)或者$(BUILD_HOST_PREBUILT)时所用, 指定需要复制的库.  
  LOCAL_PREBUILT_OBJ_FILES      
  LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES   声明我们 jar 包所在的目录,LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := CommonUtil:/libs/CommonUtil.jar 这行代码的意思大概可以理解成这样,声明一个变量 CommonUtil,它的 value 是 /libs/CommonUtil.jar  
  LOCAL_STATIC_JAVA_AAR_LIBRARIES   引用我们声明的 aar 变量  
  LOCAL_PRELINK_MODULE   是否需要预连接处理(默认需要,用来做动态库优化)  
  LOCAL_REQUIRED_MODULES   指定模块运行所依赖的模块(模块安装时将会同步安装它所依赖的模块)  
  LOCAL_RESOURCE_DIR      
  LOCAL_SDK_VERSION      
  LOCAL_SHARED_LIBRARIES   可链接动态库  
  LOCAL_SRC_FILES   编译源文件  
  LOCAL_STATIC_JAVA_LIBRARIES   引用我们声明的变量。用LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := CommonUtil:/libs/CommonUtil.jar申明 CommonUtil 变量,然后用LOCAL_STATIC_JAVA_LIBRARIES引用CommonUtil变量  
  LOCAL_UNINSTALLABLE_MODULE      
  LOCAL_UNSTRIPPED_PATH      
  LOCAL_WHOLE_STATIC_LIBRARIES   指定模块所需要载入的完整静态库(这些精通库在链接是不允许链接器删除其中无用的代码)  
  LOCAL_YACCFLAGS      
  OVERRIDE_BUILT_MODULE_PATH      
  LOCAL_ALLOW_UNDEFINED_SYMBOLS   忽略链接错误,但是在运行中可能会出现错误,因为库文件找不到依赖的文件就会报错。  
  LOCAL_ARM_MODE   默认情况下,构建系统会以 thumb 模式生成 ARM 目标二进制文件,其中每条指令都是 16 位宽,并与 thumb/ 目录中的 STL 库链接。  
  LOCAL_ACP_UNAVAILABLE   表示是否支持acp,如果支持acp,则使用acp进行拷贝,否则使用linux cp拷贝  
  LOCAL_CPPFLAGS   只构建 C++ 源文件时将传递的一组可选编译器标记。  
  LOCAL_CFLAGS   此可选变量用于设置在构建 C 和 C++ 源文件时构建系统要传递的编译器标记。这样,您就可以指定额外的宏定义或编译选项。可以使用 LOCAL_CPPFLAGS 仅为 C++ 指定标记。  
  LOCAL_C_INCLUDES   表示了本模块需要引用的include文件。您可使用此可选变量指定相对于 NDK root 目录的路径列表,以便在编译所有源文件(CC++ 和 Assembly)时添加到 include 搜索路径中。  
  LOCAL_CPP_FEATURES   您可使用此可选变量指明您的代码依赖于特定 C++ 功能。  
  LOCAL_CPP_EXTENSION   可以使用此可选变量为 C++ 源文件指定 .cpp 以外的文件扩展名。  
  LOCAL_LDLIBS   此变量列出了在构建共享库或可执行文件时使用的额外链接器标记。为可执行程序或者库的编译指定额外的库,指定库以"-lxxx"格式,举例:LOCAL_LDLIBS += -lcurses -lpthread;LOCAL_LDLIBS += -Wl,-z,origin  
  LOCAL_LDFLAGS   表示链接时用的参数,此变量列出了构建系统在构建共享库或可执行文件时使用的其他链接器标记。传递额外的参数给连接器(务必注意参数的顺序)  
  LOCAL_MODULE   此变量用于存储模块名称。LOCAL_MODULE将在每个模块的makefile里定义,如果未定义,编译系统会报错。生成的模块的名称(注意应用程序名称用LOCAL_PACKAGE_NAME而不是LOCAL_MODULE)  
  LOCAL_MODULE_CLASS   定义模块类型和预置路径.将用于决定编译时的中间文件存放的位置。APPS(apk文件)、JAVA_LIBRARIES(jar包类型)、STATIC_LIBRARIES(静态库类型,预置于/system/lib)、SHARED_LIBRARIES (lib预置于/system/lib)、EXECUTABLES(bin)、ETC(其他文件,预置于/system/etc)  
  LOCAL_MODULE_FILENAME   此可选变量使您能够替换构建系统为其生成的文件默认使用的名称。  
  LOCAL_MODULE_PATH   表示模块生成的目标将最终存放的目录,也即目标的安装路径。LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) 放在/data/app目录下的apk可以卸载,卸载后,恢复出厂设置时,应用不会恢复。在5.0 6.0之后的系统中即可实现这个功能。LOCAL_MODULE_PATH := $(TARGET_OUT)/priv-app/ 放在该目录下的apk可以获得系统权限,系统核心apk,不可卸载(或者加入一句: LOCAL_CERTIFICATE:= PRESIGNED)。 $(TARGET_OUT) 代表 /system。  
  LOCAL_MODULE_RELATIVE_PATH   指定动态库的相对路径,以各自编译对象放置的目录为参考。LOCAL_MODULE_RELATIVE_PATH := hw,可以分别在lib和lib64下分别生成32位和64位的so文件  
  LOCAL_MODULE_OWNER      
  LOCAL_MODULE_STEM      
  LOCAL_MODULE_TAGS   模块的tag,为debug eng tests optional samples shell_ash shell_mksh等tag的组合,一个模块可有多个Tag。user: 指该模块只在user版本下才编译;eng: 指该模块只在eng版本下才编译; tests: 指该模块只在tests版本下才编译; optional:指该模块在所有版本下都编译  
  LOCAL_MODULE_TARGET_ARCHS   示例:LOCAL_MODULE_TARGET_ARCHS:= arm arm64  
  LOCAL_PROPRIETARY_MODULE   是否是Vendor专有模块。  
  LOCAL_PRIVILEGED_MODULE   如果不设置或者设置为false,安装位置为system/app;如果设置为true,安装位置为system/priv-app;同LOCAL_MODULE_PATH := $(TARGET_OUT)/priv-app 用法:LOCAL_PRIVILEGED_MODULE := true  
  LOCAL_MULTILIB   可以指定特定模块编译32bit或64bit或都编译。示例:LOCAL_MULTILIB := both  
  LOCAL_PATH   定义了当前模块的相对路径,必须出现在所有的编译模块之前。  
  LOCAL_PROPRIETARY_MODULE    是否是Vendor专有模块。  
  LOCAL_SRC_FILES   此变量包含构建系统生成模块时所用的源文件列表。 build/core/binary.mk
  LOCAL_SRC_FILES_arm   此变量包含构建系统生成模块时所用的源文件列表。想要打包的文件列表,比如:so文件 build/core/binary.mk
  LOCAL_SRC_FILES_arm64   此变量包含构建系统生成模块时所用的源文件列表。 build/core/binary.mk
  LOCAL_STATIC_LIBRARIES   表示编译本模块时需要链接的静态库 build/core/binary.mk
  LOCAL_SHARED_LIBRARIES   此变量会列出此模块在运行时依赖的共享库模块。  
  LOCAL_WHOLE_STATIC_LIBRARIES   此变量是 LOCAL_STATIC_LIBRARIES 的变体,表示链接器应将相关的库模块视为完整归档  
         
M        
  MAKECMDGOALS      
N        
O        
  OUT_DIR   OUT_DIR是存放中间文件和最终结果的地方。若没有定义,则取默认值。 OUT_DIR := $(TOPDIR)out  
  ONE_SHOT_MAKEFILE   环境变量ONE_SHOT_MAKEFILE中存放要编译模块的Android.mk的文件路径,如果环境变量值为空,表示执行的是m或者make命令,会对Android源代码中的所有模块进行编译。  
  OUT_DIR_COMMON_BASE   指向将存储输出目录的位置。示例:export OUT_DIR_COMMON_BASE=  
P        
  PLATFORM_SDK_VERSION   版本相关的变量,默认8 build/make/core/build_id.mk
  PLATFORM_VERSION   版本相关的变量,默认AOSP build/make/core/build_id.mk
  PLATFORM_VERSION_CODENAME   版本相关的变量,默认AOSP build/make/core/build_id.mk
  PRODUCT_AAPT_CONFIG   创建程序包时使用的 aapt 配置  
  PRODUCT_BRAND   对软件进行自定义所针对的品牌(如果有),例如运营商  
  PRODUCT_CHARACTERISTICS   aapt 特性,用于允许向程序包添加变体特定资源。 tablet、nosdcard
  PRODUCT_COPY_FILES   复制文件到系统里,来源和目标用冒号分割PRODUCT_COPY_FILES += \ vendor/9tripod/apps/app/itms/lib/libbsdiffjni.so:system/lib/libbsdiffjni.so字词列表,例如 source_path:destination_path。在编译相应产品时,应将源路径下的文件复制到目标路径。config/Makefile 中定义了针对复制步骤的规则  
  PRODUCT_CUSTOM_IMAGE_MAKEFILES   系统属性分配(采用“key=value”格式)列表  
  PRODUCT_DEVICE   工业设计的名称。这也是板名称,编译系统会使用该名称查找 BoardConfig.mk. tuna
  PRODUCT_DEL_PACKAGES   不想编译的模块列表 tuna
  PRODUCT_LOCALES   以空格分隔的列表,用于列出由双字母语言代码和双字母国家/地区代码组成的代码对,以便说明针对用户的一些设置,例如界面语言和时间、日期以及货币格式。PRODUCT_LOCALES 中列出的第一个语言区域会被用作产品的默认语言区域。aapt (Android 资源打包工具) 配置 参考 https://developer.android.com/tools/aapt2?hl=zh-cn 例如 := normal ldpi en_GB de_DE es_ES fr_CA
  PRODUCT_MANUFACTURER   制造商的名称 acme
  PRODUCT_MODEL   最终产品的最终用户可见名称  
  PRODUCT_NAME   总体产品的最终用户可见名称,将显示在“设置”>“关于”屏幕中。  
  PRODUCT_OUT      
  PRODUCT_OTA_PUBLIC_KEYS   产品的无线下载 (OTA) 公钥列表  
  PRODUCT_PACKAGES   添加自己的包。指定了要包含在系统镜像中的模块列表。PRODUCT_PACKAGES优先级大于 LOCAL_MODULE_TAGS。也就是哪怕模块Android.mk指定的TAGS与lunch type不一致,但是 PRODUCT_PACKAGES 指定要编译该模块,最终也会生成。PRODUCT_PACKAGES := my_module  
  PRODUCT_PACKAGE_OVERLAYS   指明是使用默认资源还是添加任何产品特定叠加层 vendor/acme/overlay
  PRODUCT_PROPERTY_OVERRIDES   系统属性分配(采用“key=value”格式)列表  
  PRODUCT_PRODUCT_VNDK_VERSION   ndk版本。如需启用原生接口强制执行,请将 PRODUCT_PRODUCT_VNDK_VERSION 设置为 current  
  _product_single_value_vars   单个值的列表  
  PRODUCT_SYSTEM_NAME   定义产品名称和系统名称  
  PRODUCT_SYSTEM_MODEL   定义产品名称和系统名称  
  PRODUCT_SYSTEM_DEVICE   定义产品名称和系统名称  
  PRODUCT_SYSTEM_BRAND   定义产品名称和系统名称  
  PRODUCT_SYSTEM_MANUFACTURER   定义产品名称和系统名称  
  PRODUCT_AAPT_PREF_CONFIG   aapt资源打包工具选项  
  PRODUCT_DEFAULT_DEV_CERTIFICATE   系统证书  
  PRODUCT_SUPPORTS_BOOT_SIGNER   系统支持的vboot选项 也就是常说的解锁bl锁  
  PRODUCT_SUPPORTS_VBOOT      
  PRODUCT_SUPPORTS_VERITY      
  PRODUCT_SUPPORTS_VERITY_FEC      
  PRODUCT_VBOOT_SIGNING_KEY      
  PRODUCT_VBOOT_SIGNING_SUBKEY      
  PRODUCT_VERITY_SIGNING_KEY      
  PRODUCT_BROKEN_SUBOPTIMAL_ORDER_OF_SYSTEM_SERVER_JARS   system jar选项  
  PRODUCT_BROKEN_DEPRECATED_MK_SYSTEM_SERVER_JARS   强制允许system jar  
  PRODUCT_SYSTEM_VERITY_PARTITION   顾名思义就是一大堆验证分区选项  
  PRODUCT_VENDOR_VERITY_PARTITION      
  PRODUCT_PRODUCT_VERITY_PARTITION      
  PRODUCT_SYSTEM_EXT_VERITY_PARTITION      
  PRODUCT_ODM_VERITY_PARTITION      
  PRODUCT_VENDOR_DLKM_VERITY_PARTITION      
  PRODUCT_ODM_DLKM_VERITY_PARTITION      
  PRODUCT_SYSTEM_DLKM_VERITY_PARTITION      
  PRODUCT_SYSTEM_SERVER_DEBUG_INFO   debug选项  
  PRODUCT_OTHER_JAVA_DEBUG_INFO      
  PRODUCT_MINIMIZE_JAVA_DEBUG_INFO      
  PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER   dex优化选项  
  PRODUCT_DEX_PREOPT_BOOT_FLAGS      
  PRODUCT_DEX_PREOPT_PROFILE_DIR      
  PRODUCT_DEX_PREOPT_GENERATE_DM_FILES      
  PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING      
  PRODUCT_DEX_PREOPT_RESOLVE_STARTUP_STRINGS      
  PRODUCT_EXPORT_BOOT_IMAGE_TO_DIST   boot镜像选项  
  PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE      
  PRODUCT_USES_DEFAULT_ART_CONFIG      
  PRODUCT_SYSTEM_SERVER_COMPILER_FILTER      
  PRODUCT_SYSTEM_BASE_FS_PATH   文件系统选项  
  PRODUCT_VENDOR_BASE_FS_PATH      
  PRODUCT_PRODUCT_BASE_FS_PATH      
  PRODUCT_SYSTEM_EXT_BASE_FS_PATH      
  PRODUCT_ODM_BASE_FS_PATH      
  PRODUCT_VENDOR_DLKM_BASE_FS_PATH      
  PRODUCT_ODM_DLKM_BASE_FS_PATH      
  PRODUCT_SYSTEM_DLKM_BASE_FS_PATH      
  PRODUCT_SHIPPING_API_LEVEL   系统支持的安卓 api lever  
  PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD    art 选项 (是一个dex运行技术)  
  PRODUCT_ART_USE_READ_BARRIER      
  PRODUCT_SYSTEM_HEADROOM   设置系统镜像预留空间  
  PRODUCT_ADB_KEYS   adb key  
  PRODUCT_DISABLE_SCUDO   一个内存分配器 参考 https://source.android.com/docs/security/test/scudo?hl=zh-cn  
  PRODUCT_COMPRESSED_APEX   apex压缩设置 参考 https://source.android.com/docs/core/ota/apex?hl=zh-cn  
  PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS   编译路径设置  
  PRODUCT_ENFORCE_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT    必须签名  
  PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE   分区API接口限制 简单来说就是 system分区允许使用内部api userdata分区不允许  
  PRODUCT_ENFORCE_INTER_PARTITION_JAVA_SDK_LIBRARY   必须执行分区sdk要求  
  PRODUCT_INSTALL_EXTRA_FLATTENED_APEXES   额外下载的apex包  
  PRODUCT_RETROFIT_DYNAMIC_PARTITIONS   动态分区  
  PRODUCT_SET_DEBUGFS_RESTRICTIONS      
  PRODUCT_USE_DYNAMIC_PARTITIONS      
  PRODUCT_USE_DYNAMIC_PARTITION_SIZE      
  PRODUCT_BUILD_SUPER_PARTITION   编译镜像设置  
  PRODUCT_BUILD_GENERIC_OTA_PACKAGE      
  PRODUCT_BUILD_SYSTEM_IMAGE      
  PRODUCT_BUILD_SYSTEM_OTHER_IMAGE      
  PRODUCT_BUILD_VENDOR_IMAGE      
  PRODUCT_BUILD_PRODUCT_IMAGE      
  PRODUCT_BUILD_SYSTEM_EXT_IMAGE      
  PRODUCT_BUILD_ODM_IMAGE      
  PRODUCT_BUILD_VENDOR_DLKM_IMAGE      
  PRODUCT_BUILD_ODM_DLKM_IMAGE      
  PRODUCT_BUILD_SYSTEM_DLKM_IMAGE      
  PRODUCT_BUILD_CACHE_IMAGE      
  PRODUCT_BUILD_RAMDISK_IMAGE      
  PRODUCT_BUILD_USERDATA_IMAGE      
  PRODUCT_BUILD_RECOVERY_IMAGE      
  PRODUCT_BUILD_BOOT_IMAGE      
  PRODUCT_BUILD_INIT_BOOT_IMAGE      
  PRODUCT_BUILD_DEBUG_BOOT_IMAGE      
  PRODUCT_BUILD_VENDOR_BOOT_IMAGE      
  PRODUCT_BUILD_VENDOR_KERNEL_BOOT_IMAGE      
  PRODUCT_BUILD_DEBUG_VENDOR_BOOT_IMAGE      
  PRODUCT_BUILD_VBMETA_IMAGE      
  PRODUCT_BUILD_SUPER_EMPTY_IMAGE      
  PRODUCT_BUILD_PVMFW_IMAGE      
  PRODUCT_VIRTUAL_AB_OTA   AB分区设置  
  PRODUCT_VIRTUAL_AB_COMPRESSION      
  PRODUCT_VIRTUAL_AB_OTA_RETROFIT      
  PRODUCT_OTA_FORCE_NON_AB_PACKAGE      
  PRODUCT_INSTALL_DEBUG_POLICY_TO_SYSTEM_EXT   调试策略  
  PRODUCT_SYSTEM_FSVERITY_GENERATE_METADATA   文件系统完整性设置  
  PRODUCT_MODULE_BUILD_FROM_SOURCE   建造模块时从源码建造  
  PRODUCT_MAKEFILES      
  _product_list_vars   列表值的列表  
  PRODUCT_AAPT_PREBUILT_DPI   aapt 预编译的dpi  
  PRODUCT_HOST_PACKAGES   产品自带的各种packages name  
  PRODUCT_PACKAGES_DEBUG      
  PRODUCT_PACKAGES_DEBUG_ASAN      
  PRODUCT_PACKAGES_DEBUG_JAVA_COVERAGE      
  PRODUCT_PACKAGES_ENG      
  PRODUCT_PACKAGES_TESTS      
  PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES   覆盖包名  
  PRODUCT_PACKAGE_NAME_OVERRIDES   强制指定包名 (默认是模块名)  
  PRODUCT_CERTIFICATE_OVERRIDES      
  PRODUCT_SYSTEM_PROPERTIES   properties文件设置.例如PRODUCT_SYSTEM_PROPERTIES += ro.bluebird = 0  
  PRODUCT_SYSTEM_EXT_PROPERTIES      
  PRODUCT_VENDOR_PROPERTIES      
  PRODUCT_ODM_PROPERTIES      
  PRODUCT_PRODUCT_PROPERTIES      
  PRODUCT_SYSTEM_DEFAULT_PROPERTIES   类似上面 但是弃用了  
  PRODUCT_DEFAULT_PROPERTY_OVERRIDES   覆盖之前的写入  
  PRODUCT_SYSTEM_PROPERTY_BLACKLIST   删除之前的写入  
  PRODUCT_VENDOR_PROPERTY_BLACKLIST   删除之前的写入  
  PRODUCT_EXTRA_OTA_KEYS   OTA密钥  
  PRODUCT_EXTRA_RECOVERY_KEYS      
  PRODUCT_MAINLINE_SEPOLICY_DEV_CERTIFICATES   主线分区开发证书  
  PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS   资源替换选项  
  PRODUCT_ENFORCE_RRO_TARGETS      
  PRODUCT_SDK_ATREE_FILES   sdk设置  
  PRODUCT_SDK_ADDON_NAME      
  PRODUCT_SDK_ADDON_COPY_FILES      
  PRODUCT_SDK_ADDON_COPY_MODULES      
  PRODUCT_SDK_ADDON_DOC_MODULES      
  PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP      
  PRODUCT_DEFAULT_WIFI_CHANNELS   默认wifi  
  PRODUCT_SOONG_NAMESPACES   sonng空间空间  
  PRODUCT_RESTRICT_VENDOR_FILES   限制访问供应商文件  
  PRODUCT_VENDOR_KERNEL_HEADERS   供应商内核头文件  
  PRODUCT_BOOT_JARS   boot jar列表  
  PRODUCT_BOOT_JARS_EXTRA   boot jar列表  
  PRODUCT_APEX_BOOT_JARS   apex格式的  
  PRODUCT_SYSTEM_SERVER_APPS   系统服务设置  
  PRODUCT_SYSTEM_SERVER_JARS      
  PRODUCT_STANDALONE_SYSTEM_SERVER_JARS      
  PRODUCT_SYSTEM_SERVER_JARS_EXTRA      
  PRODUCT_APEX_SYSTEM_SERVER_JARS    apex格式的  
  PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS      
  PRODUCT_DEXPREOPT_SPEED_APPS   dex优化设置  
  PRODUCT_DEX_PREOPT_MODULE_CONFIGS      
  PRODUCT_DEX_PREOPT_DEFAULT_FLAGS      
  PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION   dex 优化boot选项  
  PRODUCT_BROKEN_VERIFY_USES_LIBRARIES   库编译验证选项  
  PRODUCT_SANITIZER_MODULE_CONFIGS   编译时使用的代码污点库 参考 https://source.android.com/docs/security/test/sanitizers?hl=zh-cn  
  PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS   例外情况  
  PRODUCT_CFI_INCLUDE_PATHS   CFI选项 参考 https://source.android.com/docs/security/test/cfi?hl=zh-cn  
  PRODUCT_CFI_EXCLUDE_PATHS      
  PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK   需要预编译的系统apk文件  
  PRODUCT_LOADED_BY_PRIVILEGED_MODULES   特权模块加载  
  PRODUCT_EXTRA_VNDK_VERSIONS   vndk选项  
  PRODUCT_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT_ALLOW_LIST   系统证书白名单.都与sing_var变量是否开启有关  
  PRODUCT_ARTIFACT_PATH_REQUIREMENT_HINT   路径白名单  
  PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST      
  PRODUCT_FORCE_PRODUCT_MODULES_TO_SYSTEM_PARTITION   强制放入系统分区  
  PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS   强制vintf分区  
  PRODUCT_INCLUDE_TAGS   tag列表 被bp文件使用  
  PRODUCT_INTER_PARTITION_JAVA_LIBRARY_ALLOWLIST   初始化分区的lib白名单  
  PRODUCT_SYSTEM_PROPERTIES   修改prop的  
  PRODUCT_SYSTEM_SERVER_APPS   添加系统服务  
Q        
R        
         
S        
  SRC_HEADERS   头文件路径  
  SRC_HOST_HEADERS   宿主头文件路径 $(TOPDIR)tools/include
  STARLARK_OPT_IN_PRODUCTS   选择使用starlark配置 可以无视  
T        
  TOPDIR   TOPDIR默认是空值 main.mk脚本
  TARGET_BUILD_APPS      
  TARGET_BUILD_TYPE   若没有定义,则取默认值: TARGET_BUILD_TYPE := release  
  TARGET_BUILD_VARIANT   产品的类型。若为空,则置eng。TARGET_BUILD_VARIANT应当在buildspec.mk或环境变量中已经定义好。取值范围是eng user userdebug tests;在TARGET_BUILD_VARIANT=user的版本中,build.prop中是ro.build.id是显示成$(BUILD_ID).$(BUILD_NUMBER),还是显示成$(BUILD_ID)形式。设成true,则显示前者。  
  TARGET_COMMON_OUT_ROOT      
  TARGET_OUT   表示system文件系统。 路径:out/target/product/xxx/system  
  TARGET_OUT_DATA   表示data文件系统。 路径:out/target/product/data/  
  TARGET_OUT_ROOT      
  TARGET_OUT_ROOT_debug      
  TARGET_OUT_ROOT_release      
  TARGET_OUT_SHARED_LIBRARIES   $(TARGET_OUT)/lib  
  TARGET_OUT_INTERMEDIATE_LIBRARIES   中间库文件存放路径的宏定义。文件通常位于 out/target/product/<product_name>/obj/ 目录下  
  TARGET_PREFER_32_BIT   构建给 32 位的可执行文件和应用。示例:TARGET_PREFER_32_BIT := true  
  TARGET_PRODUCT   若为空,则置generic。TARGET_PRODUCT应当在buildspec.mk或环境变量中已经定义好  
  TARGET_PREBUILD_KERNEL    
  TARGET_ROOT_OUT   表示根文件系统。 路径:out/target/product/root/  
U        
V        
  VENDOR_PRODUCT_RESTRICT_VENDOR_FILES      
  VENDOR_EXCEPTION_MODULES   上述的例外  
  VENDOR_EXCEPTION_PATHS      
W        
X        
Y        
Z        

 

 

 

 


来源,参考:

https://deepinout.com/android-mk-explanation/android-mk-module-description-variable/android-mk-local_module.html

https://www.cnblogs.com/biglucky/p/4226225.html

https://blog.csdn.net/wclhappy/article/details/8089482

https://zhidao.baidu.com/question/525228144.html

https://www.iteye.com/blog/nfer-zhuang-1752368 

https://blog.csdn.net/mynameislinduan/article/details/102707280 (原文链接:https://blog.csdn.net/pan0755/article/details/53183600 原文链接:https://blog.csdn.net/qwaszx523/article/details/52862924)

https://blog.csdn.net/LRAA30/article/details/125906337

https://blog.csdn.net/petib_wangwei/article/details/72843663

https://blog.csdn.net/averl2012/article/details/14222429

https://www.iteye.com/blog/kouriba-1632760

https://wenku.baidu.com/view/72fd67f19a8fcc22bcd126fff705cc1755275fab.html?_wkts_=1735451727283&bdQuery=LOCAL_POST_PROCESS_COMMAND

https://blog.51cto.com/u_847102/5269207 (LOCAL_POST_PROCESS_COMMAND 命令执行失败,不报错)

https://blog.csdn.net/nwpushuai/article/details/79380683

https://www.cnblogs.com/tang-skillhunter/p/9133947.html  (表格  Android.mk 中常用“LOCAL_” 变量

https://www.jianshu.com/p/31e61e1a668e

https://blog.51cto.com/u_16248677/7387223

https://blog.csdn.net/qq_40340448/article/details/124502496

https://blog.csdn.net/hongbochen1223/article/details/47753099

https://blog.csdn.net/zxc024000/article/details/105623034 (LOCAL_MODULE_CLASS)

https://www.cnblogs.com/cengjingnianshao/p/9326232.html (安卓系统预置应用apk的几种方式 LOCAL_DEX_PREOPT)

https://blog.csdn.net/xct841990555/article/details/90217065 (LOCAL_MODULE_TAGS 值)

https://www.jianshu.com/p/bc3fd6a55f6c (LOCAL_PRIVILEGED_MODULE := true)

https://www.cnblogs.com/onelikeone/p/9309238.html (ONE_SHOT_MAKEFILE)

https://www.cnblogs.com/ArsenalfanInECNU/p/18520933 (PRODUCT_PACKAGES)

https://source.android.google.cn/source/add-device?hl=zh-cn (设置产品定义变量)

https://blog.csdn.net/w8u/article/details/60574255 (PRODUCT_PACKAGES)

https://blog.csdn.net/supernova_TOP/article/details/126708316 (LOCAL_OVERRIDES_PACKAGES)

https://www.jianshu.com/p/160619346bfd/ (dexpreopt-remove-classes.dex)

https://www.cnblogs.com/bhlsheji/p/5318149.html ($(call dexpreopt-remove-classes.dex,$@))

https://0xforee.top/2015/12/22/android-build-system-keypoint-first/ (TARGET_BUILD_APPS)

https://blog.51cto.com/u_16099249/12147814 (all-subdir-java-files  android 编译静态库、共享库、动态库方法)

https://blog.csdn.net/u014401044/article/details/133235407 (DISABLE_ARTIFACT_PATH_REQUIREMENTS)

https://blog.csdn.net/learnframework/article/details/123547033 (DISABLE_ARTIFACT_PATH_REQUIREMENTS)

https://source.android.google.cn/docs/core/architecture/bootloader/partitions/product-interfaces?hl=zh-cn (PRODUCT_PRODUCT_VNDK_VERSION)

https://source.android.google.cn/docs/setup/start/initializing?hl=zh-cn (OUT_DIR) 无侧边栏

http://doc.yonyoucloud.com/doc/wiki/project/android-source/bit64-build-instructions.html (TARGET_PREFER_32_BIT )

https://source.android.google.cn/docs/setup/create/64-bit-builds?hl=zh-cn  (TARGET_PREFER_32_BIT、LOCAL_MODULE_TARGET_ARCH  )

http://doc.yonyoucloud.com/doc/wiki/project/android-source/build-kernels.html   (TARGET_PREBUILD_KERNEL)

https://blog.csdn.net/ldswfun/article/details/119783255  (PRODUCT_DEL_PACKAGES、添加自定义变量)

https://blue-bird1.github.io/posts/aosp-4/ (教学习新东西方法:在学习修改一样东西时, 最好的方法之一就是搞懂他到底可以干什么. 而不是跟一个教程学一个选项,再跟另一个教程再学一个选项, 结果问到可以做XX么, 还是无法回答.)

https://www.jianshu.com/p/160619346bfd/

https://blog.51cto.com/u_16248677/7387223 

https://blog.csdn.net/whbsdu/article/details/8083610

https://blog.csdn.net/gzzaigcnforever/article/details/47302579 

https://www.cnblogs.com/suxiaoqi/p/10388250.html

https://blog.csdn.net/honghua_bai/article/details/122159169 (TARGET_ARCH)

https://blog.csdn.net/qq_27672101/article/details/144224249 (platform)

https://blog.csdn.net/qingqiuziyan/article/details/12109161  (ANDROID_BUILD_SHELL)

https://www.jianshu.com/p/bb5325760506 (DEFAULT_SYSTEM_DEV_CERTIFICATEs)

 

posted @ 2024-12-25 18:59  悟透  阅读(14)  评论(0编辑  收藏  举报