【汇总】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 目录的路径列表,以便在编译所有源文件(C、C++ 和 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://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://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)