cc_api_headers

 name string, The name of the module. Must be unique across all modules.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

cc_api_library

 name string, The name of the module. Must be unique across all modules.
 src string
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 variants list of string
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

cc_api_variant

 name string, The name of the module. Must be unique across all modules.
 src string
 arch interface
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 export_headers_as_system bool, Export all headers as system include
 export_include_dirs list of string, Header directory to export
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 variant string
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 version string
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

cc_benchmark

cc_benchmark compiles an executable binary that performs benchmark testing of a specific component in a device. Additional files such as test suites and test configuration are installed on the side of the compiled executed binary.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
 auto_gen_config bool, Flag to indicate whether or not to create test config automatically. If AndroidTest.xml doesn't exist next to the Android.bp, this attribute doesn't need to be set to true explicitly.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
 data list of string, list of files or filegroup modules that provide data that should be installed alongside the test
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 require_root bool, Add RootTargetPreparer to auto generated test config. This guarantees the test to run with root permission.
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_config string, the name of the test configuration (for example "AndroidTest.xml") that should be installed with the module.
 test_config_template string, the name of the test configuration template (for example "AndroidTestTemplate.xml") that should be installed with the module.
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 test_suites list of string, list of compatibility suites (for example "cts", "vts") that the module should be installed into.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_benchmark_host

cc_benchmark_host compiles an executable binary that performs benchmark testing of a specific component in the host. Additional files such as test suites and test configuration are installed on the side of the compiled executed binary.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
 auto_gen_config bool, Flag to indicate whether or not to create test config automatically. If AndroidTest.xml doesn't exist next to the Android.bp, this attribute doesn't need to be set to true explicitly.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
 data list of string, list of files or filegroup modules that provide data that should be installed alongside the test
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 require_root bool, Add RootTargetPreparer to auto generated test config. This guarantees the test to run with root permission.
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
target.vendor
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_config string, the name of the test configuration (for example "AndroidTest.xml") that should be installed with the module.
 test_config_template string, the name of the test configuration template (for example "AndroidTestTemplate.xml") that should be installed with the module.
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 test_suites list of string, list of compatibility suites (for example "cts", "vts") that the module should be installed into.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_binary

cc_binary produces a binary that is runnable on a device.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.vendor_ramdisk
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_binary_host

cc_binary_host produces a binary that is runnable on a host.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_defaults

cc_defaults provides a set of properties that can be inherited by other cc modules. A module can use the properties from a cc_defaults using `defaults: ["<:default_module_name>"]`. Properties of both modules are merged (when possible) by prepending the default module's values to the depending module's values.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
 auto_gen_config bool, Flag to indicate whether or not to create test config automatically. If AndroidTest.xml doesn't exist next to the Android.bp, this attribute doesn't need to be set to true explicitly.
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default). If this is set, the file extension will be ignored and this will be used as the std version value. Setting this to "default" will use the build system default version. This cannot be set at the same time as cpp_std.
 cflags list of string, list of clang flags required to correctly interpret the headers.
 check_elf_files bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined symbols, etc), default true.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 corpus list of string, Optional list of seed files to be installed to the fuzz target's output directory.
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
 crt bool, Indicates that this module is a CRT object. CRT objects will be split into a variant per-API level between min_sdk_version and current.
 data list of string, Optional list of data files to be installed to the fuzz target's output directory. Directory structure relative to the module is preserved.
 data_bins list of string, list of binary modules that should be installed alongside the test
 data_libs list of string, list of shared library modules that should be installed alongside the test
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 defaults_visibility list of string, Controls the visibility of the defaults module itself.
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
 dictionary string, Optional dictionary to be installed to the fuzz target's output directory.
 disable_framework bool, Add RunCommandTargetPreparer to stop framework before the test and start it after the test.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_ndk_sysroot bool, Indicates that this module should not be included in the NDK sysroot. Only applies to CRT objects. Defaults to false.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 fuzz_config FuzzConfig, Config for running the target on fuzzing infrastructure.
 fuzzing_frameworks FuzzFrameworks, Define the fuzzing frameworks this fuzz target can be built for. If empty then the fuzz target will be available to be built for all fuzz frameworks available
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 gtest bool, if set, build against the gtest library. Defaults to true.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 isolated bool, if set, use the isolated gtest runner. Defaults to true if gtest is also true and the arch is Windows, false otherwise.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_script string, if set, the path to a linker script to pass to ld -r when combining multiple object files.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 no_named_install_directory bool, Disables the creation of a test-specific directory when used with relative_install_path. Useful if several tests need to be in the same directory, but test_per_src doesn't work.
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 objs list of string, names of other cc_object modules to link into this module using partial linking
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
 per_testcase_directory bool, Install the test into a folder named for the module in all test suites.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 require_root bool, Add RootTargetPreparer to auto generated test config. This guarantees the test to run with root permission.
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
sanitized.address
 srcs list of string
sanitized.hwaddress
 srcs list of string
sanitized.none
 srcs list of string
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of shared libraries that provide headers for this binding.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of default libraries that will provide headers for this module. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent using headers from the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
target.product
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_config string, the name of the test configuration (for example "AndroidTest.xml") that should be installed with the module.
 test_config_template string, the name of the test configuration template (for example "AndroidTestTemplate.xml") that should be installed with the module.
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 test_mainline_modules list of string, Add parameterized mainline modules to auto generated test config. The options will be handled by TradeFed to download and install the specified modules on the device.
test_options TestOptions
Test options.
 run_test_as string, The UID that you want to run the test as on a device.
 test_suite_tag list of string, A list of free-formed strings without spaces that categorize the test.
 extra_test_configs list of string, a list of extra test configuration files that should be installed with the module.
 min_shipping_api_level int64, Add ShippingApiLevelModuleController to auto generated test config. If the device properties for the shipping api level is less than the min_shipping_api_level, skip this module.
 vsr_min_shipping_api_level int64, Add ShippingApiLevelModuleController to auto generated test config. If any of the device shipping api level and vendor api level properties are less than the vsr_min_shipping_api_level, skip this module. As this includes the shipping api level check, it is not allowed to define min_shipping_api_level at the same time with this property.
 min_vndk_version int64, Add MinApiLevelModuleController with ro.vndk.version property. If ro.vndk.version has an integer value and the value is less than the min_vndk_version, skip this module.
 unit_test bool, If the test is a hostside (no device required) unittest that shall be run during presubmit check.
 tags list of string, Tags provide additional metadata to customize test execution by downstream test runners. The tags have no special meaning to Soong.
 test_per_src bool, Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.
 test_suites list of string, list of compatibility suites (for example "cts", "vts") that the module should be installed into.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 windows_import_lib string, Optionally provide an import library if this is a Windows PE DLL prebuilt. This is needed only if this library is linked by other modules in build time. Only makes sense for the Windows target.
 yacc YaccProperties

cc_fuzz

cc_fuzz creates a host/device fuzzer binary. Host binaries can be found at $ANDROID_HOST_OUT/fuzz/, and device binaries can be found at /data/fuzz on your device, or $ANDROID_PRODUCT_OUT/data/fuzz in your build tree.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 corpus list of string, Optional list of seed files to be installed to the fuzz target's output directory.
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
 data list of string, Optional list of data files to be installed to the fuzz target's output directory. Directory structure relative to the module is preserved.
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
 dictionary string, Optional dictionary to be installed to the fuzz target's output directory.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 fuzz_config FuzzConfig, Config for running the target on fuzzing infrastructure.
 fuzzing_frameworks FuzzFrameworks, Define the fuzzing frameworks this fuzz target can be built for. If empty then the fuzz target will be available to be built for all fuzz frameworks available
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.vendor_ramdisk
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_genrule

cc_genrule is a genrule that can depend on other cc_* objects. The cmd may be run multiple times, once for each of the different arch/etc variations. The following environment variables will be set when the command execute:

	CC_ARCH           the name of the architecture the command is being executed for

	CC_MULTILIB       "lib32" if the architecture the command is being executed for is 32-bit,
	                  "lib64" if it is 64-bit.

	CC_NATIVE_BRIDGE  the name of the subdirectory that native bridge libraries are stored in if
	                  the architecture has native bridge enabled, empty if it is disabled.

	CC_OS             the name of the OS the command is being executed for.

 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of input files
 exclude_srcs list of string, input files to exclude
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 cmd string, The command to run on one or more input files. Cmd supports substitution of a few variables. Available variables for substitution:

 $(location): the path to the first entry in tools or tool_files.
 $(location <label>): the path to the tool, tool_file, input or output with name <label>. Use $(location) if <label> refers to a rule that outputs exactly one file.
 $(locations <label>): the paths to the tools, tool_files, inputs or outputs with name <label>. Use $(locations) if <label> refers to a rule that outputs two or more files.
 $(in): one or more input files.
 $(out): a single output file.
 $(depfile): a file to which dependencies will be written, if the depfile property is set to true.
 $(genDir): the sandbox directory for this tool; contains $(out).
 $$: a literal $

 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 depfile bool, Enable reading a file containing dependencies in gcc format after the command completes
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 export_include_dirs list of string, List of directories to export generated headers from
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 odm_available bool
 out list of string, names of the output files that will be generated
 owner string, vendor who owns this module
 product_available bool
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
exclude_srcs
  []string
srcs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
srcs
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_extension_version
cmd
  *string
product_variables.platform_sdk_version
cmd
  *string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool
 required list of string, names of other modules to install if this module is installed
 sdk_version string
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 tool_files list of string, Local file that is used as the tool
 tools list of string, name of the modules (if any) that produces the host executable. Leave empty for prebuilts or scripts that do not need a module to build them.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

cc_library

cc_library creates both static and/or shared libraries for a device and/or host. By default, a cc_library has a single variant that targets the device. Specifying `host_supported: true` also creates a library that targets the host.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_library_headers

cc_library_headers contains a set of c/c++ headers which are imported by other soong cc modules using the header_libs property. For best practices, use export_include_dirs property or LOCAL_EXPORT_C_INCLUDE_DIRS for Make.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_library_host_shared

cc_library_host_shared creates a shared library that is usable on a host.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 static bool, Link statically against the protobuf runtime
 export_proto_headers bool, export headers generated from .proto sources
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_library_host_static

cc_library_host_static creates a static library that is linkable to a host binary.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 static bool, Link statically against the protobuf runtime
 export_proto_headers bool, export headers generated from .proto sources
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_library_shared

cc_library_shared creates a shared library for a device and/or host.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_library_static

cc_library_static creates a static library for a device and/or host binary.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_object

cc_object runs the compiler without running the linker. It is rarely necessary, but sometimes used to generate .s files from .c files to use as input to a cc_genrule module.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles. Default: [-fno-addrsig]
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
 crt bool, Indicates that this module is a CRT object. CRT objects will be split into a variant per-API level between min_sdk_version and current.
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_ndk_sysroot bool, Indicates that this module should not be included in the NDK sysroot. Only applies to CRT objects. Defaults to false.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 header_libs list of string, list of modules that should only provide headers for this module.
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_script string, if set, the path to a linker script to pass to ld -r when combining multiple object files.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 objs list of string, names of other cc_object modules to link into this module using partial linking
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 owner string, vendor who owns this module
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 static bool, Link statically against the protobuf runtime
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of shared library modules should only provide headers for this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of static library modules that should only provide headers for this module.
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of default libraries that will provide headers for this module. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent using headers from the defaults.
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
target.product
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.recovery
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.vendor_ramdisk
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
 yacc YaccProperties

cc_prebuilt_binary

cc_prebuilt_binary installs a precompiled executable in srcs property in the device's directory, for both the host and device
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 check_elf_files bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined symbols, etc), default true.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefer bool, When prefer is set to true the prebuilt will be used instead of any source module with a matching name.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
sanitized.address
 srcs list of string
sanitized.hwaddress
 srcs list of string
sanitized.none
 srcs list of string
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_source_config_var ConfigVarProperties, When specified this names a Soong config variable that controls the prefer property. If the value of the named Soong config variable is true then prefer is set to false and vice versa. If the Soong config variable is not set then it defaults to false, so prefer defaults to true. If specified then the prefer property is ignored in favor of the value of the Soong config variable.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 windows_import_lib string, Optionally provide an import library if this is a Windows PE DLL prebuilt. This is needed only if this library is linked by other modules in build time. Only makes sense for the Windows target.

cc_prebuilt_library

cc_prebuilt_library installs a precompiled shared library that are listed in the srcs property in the device's directory.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 check_elf_files bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined symbols, etc), default true.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefer bool, When prefer is set to true the prebuilt will be used instead of any source module with a matching name.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
sanitized.address
 srcs list of string
sanitized.hwaddress
 srcs list of string
sanitized.none
 srcs list of string
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.product
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_source_config_var ConfigVarProperties, When specified this names a Soong config variable that controls the prefer property. If the value of the named Soong config variable is true then prefer is set to false and vice versa. If the Soong config variable is not set then it defaults to false, so prefer defaults to true. If specified then the prefer property is ignored in favor of the value of the Soong config variable.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 windows_import_lib string, Optionally provide an import library if this is a Windows PE DLL prebuilt. This is needed only if this library is linked by other modules in build time. Only makes sense for the Windows target.

cc_prebuilt_library_headers

cc_prebuilt_library_headers is a prebuilt version of cc_library_headers
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 check_elf_files bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined symbols, etc), default true.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefer bool, When prefer is set to true the prebuilt will be used instead of any source module with a matching name.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
sanitized.address
 srcs list of string
sanitized.hwaddress
 srcs list of string
sanitized.none
 srcs list of string
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_source_config_var ConfigVarProperties, When specified this names a Soong config variable that controls the prefer property. If the value of the named Soong config variable is true then prefer is set to false and vice versa. If the Soong config variable is not set then it defaults to false, so prefer defaults to true. If specified then the prefer property is ignored in favor of the value of the Soong config variable.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 windows_import_lib string, Optionally provide an import library if this is a Windows PE DLL prebuilt. This is needed only if this library is linked by other modules in build time. Only makes sense for the Windows target.

cc_prebuilt_library_shared

cc_prebuilt_library_shared installs a precompiled shared library that are listed in the srcs property in the device's directory.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 check_elf_files bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined symbols, etc), default true.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefer bool, When prefer is set to true the prebuilt will be used instead of any source module with a matching name.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
sanitized.address
 srcs list of string
sanitized.hwaddress
 srcs list of string
sanitized.none
 srcs list of string
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_source_config_var ConfigVarProperties, When specified this names a Soong config variable that controls the prefer property. If the value of the named Soong config variable is true then prefer is set to false and vice versa. If the Soong config variable is not set then it defaults to false, so prefer defaults to true. If specified then the prefer property is ignored in favor of the value of the Soong config variable.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 windows_import_lib string, Optionally provide an import library if this is a Windows PE DLL prebuilt. This is needed only if this library is linked by other modules in build time. Only makes sense for the Windows target.

cc_prebuilt_library_static

cc_prebuilt_library_static installs a precompiled static library that are listed in the srcs property in the device's directory.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 check_elf_files bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined symbols, etc), default true.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefer bool, When prefer is set to true the prebuilt will be used instead of any source module with a matching name.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
sanitized.address
 srcs list of string
sanitized.hwaddress
 srcs list of string
sanitized.none
 srcs list of string
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_source_config_var ConfigVarProperties, When specified this names a Soong config variable that controls the prefer property. If the value of the named Soong config variable is true then prefer is set to false and vice versa. If the Soong config variable is not set then it defaults to false, so prefer defaults to true. If specified then the prefer property is ignored in favor of the value of the Soong config variable.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 windows_import_lib string, Optionally provide an import library if this is a Windows PE DLL prebuilt. This is needed only if this library is linked by other modules in build time. Only makes sense for the Windows target.

cc_prebuilt_object

 name string, The name of the module. Must be unique across all modules.
 srcs list of string
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 crt bool, Indicates that this module is a CRT object. CRT objects will be split into a variant per-API level between min_sdk_version and current.
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_ndk_sysroot bool, Indicates that this module should not be included in the NDK sysroot. Only applies to CRT objects. Defaults to false.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 installable bool
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_script string, if set, the path to a linker script to pass to ld -r when combining multiple object files.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 objs list of string, names of other cc_object modules to link into this module using partial linking
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 owner string, vendor who owns this module
 prefer bool, When prefer is set to true the prebuilt will be used instead of any source module with a matching name.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 required list of string, names of other modules to install if this module is installed
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of shared library modules should only provide headers for this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of static library modules that should only provide headers for this module.
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of default libraries that will provide headers for this module. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent using headers from the defaults.
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 use_source_config_var ConfigVarProperties, When specified this names a Soong config variable that controls the prefer property. If the value of the named Soong config variable is true then prefer is set to false and vice versa. If the Soong config variable is not set then it defaults to false, so prefer defaults to true. If specified then the prefer property is ignored in favor of the value of the Soong config variable.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

cc_prebuilt_test_library_shared

cc_prebuilt_test_library_shared installs a precompiled shared library to be used as a data dependency of a test-related module (such as cc_test, or cc_test_library).
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, a prebuilt library or binary. Can reference a genrule module that generates an executable file.
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 check_elf_files bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined symbols, etc), default true.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefer bool, When prefer is set to true the prebuilt will be used instead of any source module with a matching name.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
sanitized.address
 srcs list of string
sanitized.hwaddress
 srcs list of string
sanitized.none
 srcs list of string
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_source_config_var ConfigVarProperties, When specified this names a Soong config variable that controls the prefer property. If the value of the named Soong config variable is true then prefer is set to false and vice versa. If the Soong config variable is not set then it defaults to false, so prefer defaults to true. If specified then the prefer property is ignored in favor of the value of the Soong config variable.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 windows_import_lib string, Optionally provide an import library if this is a Windows PE DLL prebuilt. This is needed only if this library is linked by other modules in build time. Only makes sense for the Windows target.

cc_test

cc_test generates a test config file and an executable binary file to test specific functionality on a device. The executable binary gets an implicit static_libs dependency on libgtests unless the gtest flag is set to false.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
 auto_gen_config bool, Flag to indicate whether or not to create test config automatically. If AndroidTest.xml doesn't exist next to the Android.bp, this attribute doesn't need to be set to true explicitly.
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
 data list of string, list of files or filegroup modules that provide data that should be installed alongside the test
 data_bins list of string, list of binary modules that should be installed alongside the test
 data_libs list of string, list of shared library modules that should be installed alongside the test
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
 disable_framework bool, Add RunCommandTargetPreparer to stop framework before the test and start it after the test.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 gtest bool, if set, build against the gtest library. Defaults to true.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 isolated bool, if set, use the isolated gtest runner. Defaults to true if gtest is also true and the arch is Windows, false otherwise.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 no_named_install_directory bool, Disables the creation of a test-specific directory when used with relative_install_path. Useful if several tests need to be in the same directory, but test_per_src doesn't work.
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
 per_testcase_directory bool, Install the test into a folder named for the module in all test suites.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 static bool, Link statically against the protobuf runtime
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 require_root bool, Add RootTargetPreparer to auto generated test config. This guarantees the test to run with root permission.
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_config string, the name of the test configuration (for example "AndroidTest.xml") that should be installed with the module.
 test_config_template string, the name of the test configuration template (for example "AndroidTestTemplate.xml") that should be installed with the module.
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 test_mainline_modules list of string, Add parameterized mainline modules to auto generated test config. The options will be handled by TradeFed to download and install the specified modules on the device.
test_options TestOptions
Test options.
 run_test_as string, The UID that you want to run the test as on a device.
 test_suite_tag list of string, A list of free-formed strings without spaces that categorize the test.
 extra_test_configs list of string, a list of extra test configuration files that should be installed with the module.
 min_shipping_api_level int64, Add ShippingApiLevelModuleController to auto generated test config. If the device properties for the shipping api level is less than the min_shipping_api_level, skip this module.
 vsr_min_shipping_api_level int64, Add ShippingApiLevelModuleController to auto generated test config. If any of the device shipping api level and vendor api level properties are less than the vsr_min_shipping_api_level, skip this module. As this includes the shipping api level check, it is not allowed to define min_shipping_api_level at the same time with this property.
 min_vndk_version int64, Add MinApiLevelModuleController with ro.vndk.version property. If ro.vndk.version has an integer value and the value is less than the min_vndk_version, skip this module.
 unit_test bool, If the test is a hostside (no device required) unittest that shall be run during presubmit check.
 tags list of string, Tags provide additional metadata to customize test execution by downstream test runners. The tags have no special meaning to Soong.
 test_per_src bool, Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.
 test_suites list of string, list of compatibility suites (for example "cts", "vts") that the module should be installed into.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_test_host

cc_test_host compiles a test host binary.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
 auto_gen_config bool, Flag to indicate whether or not to create test config automatically. If AndroidTest.xml doesn't exist next to the Android.bp, this attribute doesn't need to be set to true explicitly.
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
 data list of string, list of files or filegroup modules that provide data that should be installed alongside the test
 data_bins list of string, list of binary modules that should be installed alongside the test
 data_libs list of string, list of shared library modules that should be installed alongside the test
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
 disable_framework bool, Add RunCommandTargetPreparer to stop framework before the test and start it after the test.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 gtest bool, if set, build against the gtest library. Defaults to true.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 isolated bool, if set, use the isolated gtest runner. Defaults to true if gtest is also true and the arch is Windows, false otherwise.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 no_named_install_directory bool, Disables the creation of a test-specific directory when used with relative_install_path. Useful if several tests need to be in the same directory, but test_per_src doesn't work.
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
 per_testcase_directory bool, Install the test into a folder named for the module in all test suites.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 static bool, Link statically against the protobuf runtime
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 require_root bool, Add RootTargetPreparer to auto generated test config. This guarantees the test to run with root permission.
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_config string, the name of the test configuration (for example "AndroidTest.xml") that should be installed with the module.
 test_config_template string, the name of the test configuration template (for example "AndroidTestTemplate.xml") that should be installed with the module.
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 test_mainline_modules list of string, Add parameterized mainline modules to auto generated test config. The options will be handled by TradeFed to download and install the specified modules on the device.
test_options TestOptions
Test options.
 run_test_as string, The UID that you want to run the test as on a device.
 test_suite_tag list of string, A list of free-formed strings without spaces that categorize the test.
 extra_test_configs list of string, a list of extra test configuration files that should be installed with the module.
 min_shipping_api_level int64, Add ShippingApiLevelModuleController to auto generated test config. If the device properties for the shipping api level is less than the min_shipping_api_level, skip this module.
 vsr_min_shipping_api_level int64, Add ShippingApiLevelModuleController to auto generated test config. If any of the device shipping api level and vendor api level properties are less than the vsr_min_shipping_api_level, skip this module. As this includes the shipping api level check, it is not allowed to define min_shipping_api_level at the same time with this property.
 min_vndk_version int64, Add MinApiLevelModuleController with ro.vndk.version property. If ro.vndk.version has an integer value and the value is less than the min_vndk_version, skip this module.
 unit_test bool, If the test is a hostside (no device required) unittest that shall be run during presubmit check.
 tags list of string, Tags provide additional metadata to customize test execution by downstream test runners. The tags have no special meaning to Soong.
 test_per_src bool, Create a separate binary for each source file. Useful when there is global state that can not be torn down and reset between each test suite.
 test_suites list of string, list of compatibility suites (for example "cts", "vts") that the module should be installed into.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

cc_test_library

cc_test_library creates an archive of files (i.e. .o files) which is later referenced by another module (such as cc_test, cc_defaults or cc_test_library) for archiving or linking.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 gtest bool, if set, build against the gtest library. Defaults to true.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 isolated bool, if set, use the isolated gtest runner. Defaults to true if gtest is also true and the arch is Windows, false otherwise.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 static bool, Link statically against the protobuf runtime
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 test_suites list of string, list of compatibility suites (for example "cts", "vts") that the module should be installed into.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

fdo_profile

 name string, The name of the module. Must be unique across all modules.
 arch interface
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 profile string
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

kernel_headers

kernel_headers retrieves the list of kernel headers directories from TARGET_BOARD_KERNEL_HEADERS and TARGET_PRODUCT_KERNEL_HEADERS variables in a makefile for compilation. See https://android.googlesource.com/platform/build/+/master/core/config.mk for more details on them.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. srcs may reference the outputs of other modules that produce source files like genrule or filegroup using the syntax ":module".
 exclude_srcs list of string, list of source files that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 defaults list of string
 host_supported bool, If set to true, build a variant of the module for the host. Defaults to false.
 device_supported bool, If set to true, build a variant of the module for the device. Defaults to true.
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 include_dirs list of string, list of directories that will be added to the aidl include paths.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the aidl include paths.
 generate_traces bool, whether to generate traces (for systrace) for this interface
 flags list of string, list of flags that will be passed to the AIDL compiler
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 asflags list of string, list of module-specific flags that will be used for .S compiles
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 c_std string, C standard version to use. Can be a specific version (such as "gnu11"), "experimental" (which will use draft versions like C1x when available), or the empty string (which will use the default).
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles.
 clang bool, Deprecated. true is the default, false is invalid.
 clang_asflags list of string, list of module-specific flags that will be used for .S compiles when compiling with clang
 clang_cflags list of string, list of module-specific flags that will be used for C and C++ compiles when compiling with clang
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 conlyflags list of string, list of module-specific flags that will be used for C compiles
 cpp_std string, C++ standard version to use. Can be a specific version (such as "gnu++11"), "experimental" (which will use draft versions like C++1z when available), or the empty string (which will use the default).
 cppflags list of string, list of module-specific flags that will be used for C++ compiles
debug
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the C/C++ module. This is most useful in the arch/multilib variants to remove non-common files
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 generated_headers list of string, list of generated headers to add to the include path. These are the names of genrule modules.
 generated_sources list of string, list of generated sources to compile. These are the names of gensrcs or genrule modules.
 gnu_extensions bool, if set to false, use -std=c++* instead of -std=gnu++*
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 include_build_directory bool, Add the directory containing the Android.bp file to the list of include directories. Defaults to true.
 include_dirs list of string, list of directories relative to the root of the source tree that will be added to the include path using -I. If possible, don't use this. If adding paths from the current directory use local_include_dirs, if adding paths from other modules use export_include_dirs in that module.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 instruction_set string, the instruction set architecture to use to compile the C/C++ module.
 ldflags list of string, list of module-specific flags that will be used for all link steps
 lex LexProperties
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 local_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path using -I
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 openmp bool, Build and link with OpenMP
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
cflags
  []string
exclude_srcs
  []string
header_libs
  []string
include_dirs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.binder32bit
cflags
  []string
product_variables.debuggable
cflags
  []string
cppflags
  []string
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.enforce_vintf_manifest
cflags
  []string
product_variables.eng
cflags
  []string
cppflags
  []string
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
cflags
  []string
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.malloc_pattern_fill_contents
cflags
  []string
product_variables.malloc_zero_contents
cflags
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.override_rs_driver
cflags
  []string
product_variables.pdk
enabled
  *bool
product_variables.platform_sdk_version
asflags
  []string
cflags
  []string
product_variables.safestack
cflags
  []string
product_variables.treble_linker_namespaces
cflags
  []string
product_variables.uml
cppflags
  []string
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 static bool, Link statically against the protobuf runtime
 type string, Proto generator type. C++: full or lite. Java: micro, nano, stream, or lite.
 plugin string, Proto plugin to use as the generator. Must be a cc_binary_host module.
 include_dirs list of string, list of directories that will be added to the protoc include paths.
 local_include_dirs list of string, list of directories relative to the bp file that will be added to the protoc include paths.
 canonical_path_from_root bool, whether to identify the proto files from the root of the source tree (the original method in Android, useful for android-specific protos), or relative from where they were specified (useful for external/third party protos). This defaults to true today, but is expected to default to false in the future.
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
release
 cflags list of string, list of module-specific flags that will be used for C and C++ compiles in debug or release builds
renderscript
 include_dirs list of string, list of directories that will be added to the llvm-rs-cc include paths
 flags list of string, list of flags that will be passed to llvm-rs-cc
 target_api string, Renderscript API level to target
 required list of string, names of other modules to install if this module is installed
 rtti bool, pass -frtti instead of -fno-rtti
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 srcs list of string, list of source files that should only be used in the recovery variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the recovery variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the recovery variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build the recovery variant of the C/C++ module.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 srcs list of string, list of source files that should only be used in vendor or product variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build vendor or product variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build vendor or product variant of the C/C++ module.
 exclude_generated_sources list of string, list of generated sources that should not be used to build vendor or product variant of the C/C++ module.
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 exclude_srcs list of string, list of source files that should not be used to build the vendor ramdisk variant of the C/C++ module.
 cflags list of string, List of additional cflags that should be used to build the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_disabled_srcs list of string, list of source files that should not be compiled with clang-tidy.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 tidy_timeout_srcs list of string, list of source files that should not be compiled by clang-tidy when TIDY_TIMEOUT is set.
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.
 yacc YaccProperties

llndk_libraries_txt

llndk_libraries_txt is a singleton module whose content is a list of LLNDK libraries generated by Soong but can be referenced by other modules. For example, apex_vndk can depend on these files as prebuilt. Make uses LLNDK_LIBRARIES to determine which libraries to install. HWASAN is only part of the LL-NDK in builds in which libc depends on HWASAN. Therefore, by removing the library here, we cause it to only be installed if libc depends on it.
 name string, The name of the module. Must be unique across all modules. Default: llndk.libraries.txt
 arch interface
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 insert_vndk_version bool
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

ndk_headers

ndk_headers installs the sets of ndk headers defined in the srcs property to the sysroot base + "usr/include" + to directory + directory component. ndk_headers requires the license file to be specified. Example:

	Given:
	sysroot base = "ndk/sysroot"
	from = "include/foo"
	to = "bar"
	header = "include/foo/woodly/doodly.h"
	output path = "ndk/sysroot/usr/include/bar/woodly/doodly.h"

 name string, The name of the module. Must be unique across all modules.
 srcs list of string, List of headers to install. Glob compatible. Common case is "include/**/*.h".
 exclude_srcs list of string, Source paths that should be excluded from the srcs glob.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 from string, Base directory of the headers being installed. As an example: ndk_headers {

    name: "foo",
    from: "include",
    to: "",
    srcs: ["include/foo/bar/baz.h"],
} Will install $SYSROOT/usr/include/foo/bar/baz.h. If `from` were instead "include/foo", it would have installed $SYSROOT/usr/include/bar/baz.h.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 license string, Path to the NOTICE file associated with the headers.
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
exclude_srcs
  []string
srcs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
srcs
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 to string, Install path within the sysroot. This is relative to usr/include.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

ndk_library

ndk_library creates a library that exposes a stub implementation of functions and variables for use at build time only.
 name string, The name of the module. Must be unique across all modules.
 allow_untyped_symbols bool, If true, does not emit errors when APIs lacking type information are found. This is false by default and should not be enabled outside bionic, where it is enabled pending a fix for http://b/190554910 (no debug info for asm implemented symbols).
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 export_header_libs list of string, Headers presented by this library to the Public API Surface
 first_version string, The first API level a library was available. A library will be generated for every API level beginning with this one.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 unversioned_until string, The first API level that library should have the version script applied. This defaults to the value of first_version, and should almost never be used. This is only needed to work around platform bugs like https://github.com/android-ndk/ndk/issues/265.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

ndk_prebuilt_shared_stl

ndk_prebuilt_shared_stl exports a precompiled ndk shared standard template library (stl) library for linking operation. The soong's module name format is ndk_<NAME>.so where the library is located under ./prebuilts/ndk/current/sources/cxx-stl/llvm-libc++/libs/$(HOST_ARCH)/<NAME>.so.
 name string, The name of the module. Must be unique across all modules.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps. Default: minimum
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default. Default: none
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

ndk_prebuilt_static_stl

ndk_prebuilt_static_stl exports a precompiled ndk static standard template library (stl) library for linking operation. The soong's module name format is ndk_<NAME>.a where the library is located under ./prebuilts/ndk/current/sources/cxx-stl/llvm-libc++/libs/$(HOST_ARCH)/<NAME>.a.
 name string, The name of the module. Must be unique across all modules.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc.
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps. Default: current
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default. Default: none
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults.
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

preprocessed_ndk_headers

preprocessed_ndk_headers preprocesses all the ndk headers listed in the srcs property by executing the command defined in the preprocessor property.
 name string, The name of the module. Must be unique across all modules.
 srcs list of string, Source path to the files to be preprocessed.
 exclude_srcs list of string, Source paths that should be excluded from the srcs glob.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 license string, Path to the NOTICE file associated with the headers.
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 preprocessor string, The preprocessor to run. Must be a program inside the source directory with no dependencies.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
exclude_srcs
  []string
srcs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
srcs
  []string
exclude_srcs
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
srcs
  []string
product_variables.native_coverage
srcs
  []string
exclude_srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 to string, Install path within the sysroot. This is relative to usr/include.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

recovery_snapshot

 name string, The name of the module. Must be unique across all modules.
 arch interface
 binaries list of string
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 header_libs list of string
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 objects list of string
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
static_libs
  []string
shared_libs
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
header_libs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 rlibs list of string
 shared_libs list of string
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 version string, snapshot version.
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
 vndk_libs list of string

recovery_snapshot_binary

recovery_snapshot_binary is a special prebuilt executable binary which is auto-generated by development/vendor_snapshot/update.py. As a part of recovery snapshot, recovery_snapshot_binary overrides the recovery variant of the cc binary with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

recovery_snapshot_header

recovery_snapshot_header is a special header library which is auto-generated by development/vendor_snapshot/update.py. As a part of recovery snapshot, recovery_snapshot_header overrides the recovery variant of the cc header library with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
cfi SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_flags list of string, list of flags that will be used for any module that links against this module.
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
hwasan SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
sanitizervariation SanitizerType
 SanitizerType cc.SanitizerType
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

recovery_snapshot_object

recovery_snapshot_object is a special prebuilt compiled object file which is auto-generated by development/vendor_snapshot/update.py. As a part of recovery snapshot, recovery_snapshot_object overrides the recovery variant of the cc object with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 crt bool, Indicates that this module is a CRT object. CRT objects will be split into a variant per-API level between min_sdk_version and current.
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_ndk_sysroot bool, Indicates that this module should not be included in the NDK sysroot. Only applies to CRT objects. Defaults to false.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 installable bool
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_script string, if set, the path to a linker script to pass to ld -r when combining multiple object files.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 objs list of string, names of other cc_object modules to link into this module using partial linking
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 owner string, vendor who owns this module
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
static_libs
  []string
shared_libs
  []string
product_variables.eng
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 required list of string, names of other modules to install if this module is installed
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of shared library modules should only provide headers for this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of static library modules that should only provide headers for this module.
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of default libraries that will provide headers for this module. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent using headers from the defaults.
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

recovery_snapshot_shared

recovery_snapshot_shared is a special prebuilt shared library which is auto-generated by development/vendor_snapshot/update.py. As a part of recovery snapshot, recovery_snapshot_shared overrides the recovery variant of the cc shared library with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
cfi SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_flags list of string, list of flags that will be used for any module that links against this module.
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
hwasan SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
sanitizervariation SanitizerType
 SanitizerType cc.SanitizerType
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

recovery_snapshot_static

recovery_snapshot_static is a special prebuilt static library which is auto-generated by development/vendor_snapshot/update.py. As a part of recovery snapshot, recovery_snapshot_static overrides the recovery variant of the cc static library with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
cfi SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_flags list of string, list of flags that will be used for any module that links against this module.
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
hwasan SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
sanitizervariation SanitizerType
 SanitizerType cc.SanitizerType
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

vendor_snapshot

 name string, The name of the module. Must be unique across all modules.
 arch interface
 binaries list of string
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 header_libs list of string
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 objects list of string
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
static_libs
  []string
shared_libs
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
header_libs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 rlibs list of string
 shared_libs list of string
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 version string, snapshot version.
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
 vndk_libs list of string

vendor_snapshot_binary

vendor_snapshot_binary is a special prebuilt executable binary which is auto-generated by development/vendor_snapshot/update.py. As a part of vendor snapshot, vendor_snapshot_binary overrides the vendor variant of the cc binary with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
bazel_module bazelModuleProperties
In "Bazel mixed build" mode, this represents the Bazel target replacing this Soong module.
 label string, The label of the Bazel target replacing this Soong module. When run in conversion mode, this will import the handcrafted build target into the autogenerated file. Note: this may result in a conflict due to duplicate targets if bp2build_available is also set.
 bp2build_available bool, If true, bp2build will generate the converted Bazel target for this module. Note: this may cause a conflict due to the duplicate targets if label is also set. This is a bool pointer to support tristates: true, false, not set. To opt in a module, set bazel_module: { bp2build_available: true } To opt out a module, set bazel_module: { bp2build_available: false } To defer the default setting for the directory, do not set the value.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other binaries (in Make or Soong). This does not completely prevent installation of the overridden binaries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_executable bool, compile executable with -static
 static_libs list of string, list of modules that should be statically linked into this module.
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property.
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
 suffix string, append to the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
target.product
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
target.vendor
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

vendor_snapshot_header

vendor_snapshot_header is a special header library which is auto-generated by development/vendor_snapshot/update.py. As a part of vendor snapshot, vendor_snapshot_header overrides the vendor variant of the cc header library with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
cfi SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_flags list of string, list of flags that will be used for any module that links against this module.
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
hwasan SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
sanitizervariation SanitizerType
 SanitizerType cc.SanitizerType
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

vendor_snapshot_object

vendor_snapshot_object is a special prebuilt compiled object file which is auto-generated by development/vendor_snapshot/update.py. As a part of vendor snapshot, vendor_snapshot_object overrides the vendor variant of the cc object with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 crt bool, Indicates that this module is a CRT object. CRT objects will be split into a variant per-API level between min_sdk_version and current.
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_ndk_sysroot bool, Indicates that this module should not be included in the NDK sysroot. Only applies to CRT objects. Defaults to false.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 header_libs list of string, list of modules that should only provide headers for this module.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 installable bool
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_script string, if set, the path to a linker script to pass to ld -r when combining multiple object files.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 objs list of string, names of other cc_object modules to link into this module using partial linking
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 owner string, vendor who owns this module
 prefix_symbols string, if set, add an extra objcopy --prefix-symbols= step
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
static_libs
  []string
shared_libs
  []string
product_variables.eng
sanitize.address
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 required list of string, names of other modules to install if this module is installed
sanitize SanitizeUserProps
 never bool, Prevent use of any sanitizers on this module Default: true
 address bool, ASan (Address sanitizer), incompatible with static binaries. Always runs in a diagnostic mode. Use of address sanitizer disables cfi sanitizer. Hwaddress sanitizer takes precedence over this sanitizer.
 thread bool, TSan (Thread sanitizer), incompatible with static binaries and 32 bit architectures. Always runs in a diagnostic mode. Use of thread sanitizer disables cfi and scudo sanitizers. Hwaddress sanitizer takes precedence over this sanitizer.
 hwaddress bool, HWASan (Hardware Address sanitizer). Use of hwasan sanitizer disables cfi, address, thread, and scudo sanitizers.
 all_undefined bool, Undefined behavior sanitizer
 undefined bool, Subset of undefined behavior sanitizer
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable
 fuzzer bool, Fuzzer, incompatible with static binaries.
 safestack bool, safe-stack sanitizer, incompatible with 32-bit architectures.
 cfi bool, cfi sanitizer, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, incompatible with Darwin.
 scudo bool, scudo sanitizer, incompatible with asan, hwasan, tsan This should not be used in Android 11+ : https://source.android.com/devices/tech/debug/scudo deprecated
 scs bool, shadow-call-stack sanitizer, only available on arm64/riscv64.
 memtag_heap bool, Memory-tagging, only available on arm64 if diag.memtag unset or false, enables async memory tagging
 memtag_stack bool, Memory-tagging stack instrumentation, only available on arm64 Adds instrumentation to detect stack buffer overflows and use-after-scope using MTE.
 writeonly bool, A modifier for ASAN and HWASAN for write only instrumentation
diag
Sanitizers to run in the diagnostic mode (as opposed to the release mode). Replaces abort() on error with a human-readable error message. Address and Thread sanitizers always run in diagnostic mode.
 undefined bool, Undefined behavior sanitizer, diagnostic mode
 cfi bool, cfi sanitizer, diagnostic mode, incompatible with asan, hwasan, fuzzer, or Darwin
 integer_overflow bool, signed/unsigned integer overflow sanitizer, diagnostic mode, incompatible with Darwin.
 memtag_heap bool, Memory-tagging, only available on arm64 requires sanitizer.memtag: true if set, enables sync memory tagging
 misc_undefined list of string, List of specific undefined behavior sanitizers to enable in diagnostic mode
 no_recover list of string, List of sanitizers to pass to -fno-sanitize-recover results in only the first detected error for these sanitizers being reported and program then exits with a non-zero exit code.
config
Sanitizers to run with flag configuration specified
 cfi_assembly_support bool, Enables CFI support flags for assembly-heavy libraries
 recover list of string, List of sanitizers to pass to -fsanitize-recover allows execution to continue for these sanitizers to detect multiple errors rather than only the first one
 blocklist string, value to pass to -fsanitize-ignorelist
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of shared library modules should only provide headers for this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of static library modules that should only provide headers for this module.
 stl string, Select the STL library to use. Possible values are "libc++", "libc++_static", "libstdc++", or "none". Leave blank to select the default.
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of default libraries that will provide headers for this module. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent using headers from the defaults.
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.recovery
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

vendor_snapshot_shared

vendor_snapshot_shared is a special prebuilt shared library which is auto-generated by development/vendor_snapshot/update.py. As a part of vendor snapshot, vendor_snapshot_shared overrides the vendor variant of the cc shared library with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
cfi SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_flags list of string, list of flags that will be used for any module that links against this module.
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
hwasan SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
sanitizervariation SanitizerType
 SanitizerType cc.SanitizerType
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

vendor_snapshot_static

vendor_snapshot_static is a special prebuilt static library which is auto-generated by development/vendor_snapshot/update.py. As a part of vendor snapshot, vendor_snapshot_static overrides the vendor variant of the cc static library with the same name, if BOARD_VNDK_VERSION is set.
 name string, The name of the module. Must be unique across all modules.
 src string, Prebuilt file for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
cfi SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_flags list of string, list of flags that will be used for any module that links against this module.
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
hwasan SnapshotLibraryProperties
Module definitions for snapshots of libraries (shared, static, header). Modules (vendor|recovery)_snapshot_(shared|static|header) are defined here. Shared libraries and static libraries have their prebuilt library files (.so for shared, .a for static) as their src, which can be installed or linked against. Also they export flags needed when linked, such as include directories, c flags, sanitize dependency information, etc. These modules are auto-generated by development/vendor_snapshot/update.py.
 src string, Prebuilt file for each arch.
 export_include_dirs list of string, list of directories that will be added to the include path (using -I).
 export_system_include_dirs list of string, list of directories that will be added to the system path (using -isystem).
 export_flags list of string, list of flags that will be used for any module that links against this module.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
header_libs
  []string
product_variables.native_coverage
src
  *string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sanitize_minimal_dep bool, Whether this prebuilt needs to depend on sanitize minimal runtime or not.
 sanitize_ubsan_dep bool, Whether this prebuilt needs to depend on sanitize ubsan runtime or not.
sanitizervariation SanitizerType
 SanitizerType cc.SanitizerType
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
static StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
target.product
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

versioned_ndk_headers

versioned_ndk_headers preprocesses the headers with the bionic versioner: https://android.googlesource.com/platform/bionic/+/master/tools/versioner/README.md. Unlike the ndk_headers soong module, versioned_ndk_headers operates on a directory level specified in `from` property. This is only used to process the bionic/libc/include directory.
 name string, The name of the module. Must be unique across all modules.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 from string, Base directory of the headers being installed. As an example: versioned_ndk_headers {

    name: "foo",
    from: "include",
    to: "",
} Will install $SYSROOT/usr/include/foo/bar/baz.h. If `from` were instead "include/foo", it would have installed $SYSROOT/usr/include/bar/baz.h.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 license string, Path to the NOTICE file associated with the headers.
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 to string, Install path within the sysroot. This is relative to usr/include.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

vndk_prebuilt_shared

vndk_prebuilt_shared installs Vendor Native Development kit (VNDK) snapshot shared libraries for system build. Example:

	vndk_prebuilt_shared {
	    name: "libfoo",
	    version: "27",
	    target_arch: "arm64",
	    vendor_available: true,
	    product_available: true,
	    vndk: {
	        enabled: true,
	    },
	    export_include_dirs: ["include/external/libfoo/vndk_include"],
	    arch: {
	        arm64: {
	            srcs: ["arm/lib64/libfoo.so"],
	        },
	        arm: {
	            srcs: ["arm/lib/libfoo.so"],
	        },
	    },
	}

 name string, The name of the module. Must be unique across all modules.
 srcs list of string, Prebuilt files for each arch.
 defaults list of string
 afdo bool, Afdo allows developers self-service enroll for automatic feedback-directed optimization using profile data.
aidl
 export_aidl_headers bool, export headers generated from .aidl sources
 allow_undefined_symbols bool, allow the module to contain undefined symbols. By default, modules cannot contain undefined symbols that are not satisified by their immediate dependencies. Set this flag to true to remove --no-undefined from the linker flags. This flag should only be necessary for compiling low-level libraries like libc.
 apex_available list of string, Availability of this module in APEXes. Only the listed APEXes can contain this module. If the module has stubs then other APEXes and the platform may access it through them (subject to visibility). "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. "//apex_available:platform" refers to non-APEX partitions like "system.img". "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". Default is ["//apex_available:platform"].
 arch interface
 binder32bit bool, If the prebuilt snapshot lib is built with 32 bit binder, this must be set to true. The lib with 64 bit binder does not need to set this property.
 bootstrap bool, Allows this module to use non-APEX version of libraries. Useful for building binaries that are started before APEXes are activated.
buildstubs bool
 bool bool
 check_elf_files bool, Check the prebuilt ELF files (e.g. DT_SONAME, DT_NEEDED, resolution of undefined symbols, etc). Default: false
 clang bool, Deprecated. true is the default, false is invalid.
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 double_loadable bool, whether this module is capable of being loaded with other instance (possibly an older version) of the same module in the same process. Currently, a shared library that is a member of VNDK (vndk: {enabled: true}) can be double loaded in a vendor process if the library is also a (direct and indirect) dependency of an LLNDK library. Such libraries must be explicitly marked as `double_loadable: true` by the owner, or the dependency from the LLNDK lib should be cut if the lib is not designed to be double loaded.
 dynamic_list string, local file name to pass to the linker as --dynamic-list
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 exclude_from_recovery_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the recovery snapshot.
 exclude_from_vendor_snapshot bool, Normally Soong uses the directory structure to decide which modules should be included (framework) or excluded (non-framework) from the different snapshots (vendor, recovery, etc.), but this property allows a partner to exclude a module normally thought of as a framework module from the vendor snapshot.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with this module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build this module
 exclude_static_libs list of string, list of static libs that should not be used to build this module
 export_flags list of string, list of flags that will be used for any module that links against this module.
 export_generated_headers list of string, list of generated headers to re-export include directories from. Entries must be present in generated_headers.
 export_header_lib_headers list of string, list of header libraries to re-export include directories from. Entries must be present in header_libs.
 export_include_dirs list of string, list of directories relative to the Blueprints file that will be added to the include path (using -I) for this module and any module that links against this module. Directories listed in export_include_dirs do not need to be listed in local_include_dirs.
 export_shared_lib_headers list of string, list of shared libraries to re-export include directories from. Entries must be present in shared_libs.
 export_static_lib_headers list of string, list of static libraries to re-export include directories from. Entries must be present in static_libs.
 export_system_include_dirs list of string, list of directories that will be added to the system include path using -isystem for this module and any module that links against this module.
 force_symbols_not_weak_list string, local file name to pass to the linker as -force_symbols_not_weak_list
 force_symbols_weak_list string, local file name to pass to the linker as -force_symbols_weak_list
 group_static_libs bool, deprecated and ignored because lld makes it unnecessary. See b/189475744.
header_abi_checker headerAbiCheckerProperties
Properties for ABI compatibility checker.
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 header_libs list of string, list of modules that should only provide headers for this module.
 host_ldlibs list of string, -l arguments to pass to linker for host-provided shared libraries
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 inject_bssl_hash bool, Inject boringssl hash into the shared library. This is only intended for use by external/boringssl.
 install_in_root bool, Install output directly in {partition}/, not in any subdir. This is only intended for use by init_first_stage.
 install_in_xbin bool, Install output directly in {partition}/xbin
 installable bool
 ldflags list of string, list of module-specific flags that will be used for all link steps
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 linker_scripts list of string, local files to pass to the linker as --script
llndk llndkLibraryProperties
If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from the module pointed to by llndk_stubs if it is set.
 symbol_file string, Relative path to the symbol map. An example file can be seen here: TODO(danalbert): Make an example.
 export_headers_as_system bool, Whether to export any headers as -isystem instead of -I. Mainly for use by bionic/libc.
 export_preprocessed_headers list of string, Which headers to process with versioner. This really only handles bionic/libc/include right now.
 unversioned bool, Whether the system library uses symbol versions.
 export_llndk_headers list of string, list of llndk headers to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 private bool, whether this module can be directly depended upon by libs that are installed to /vendor and /product. When set to true, this module can only be depended on by VNDK libraries, not vendor nor product libraries. This effectively hides this module from non-system modules. Default value is false.
 llndk_headers bool, if true, make this module available to provide headers to other modules that set llndk.symbol_file.
 logtags list of string, *.logtags files, to combine together in order to generate the /system/etc/event-log-tags file
lto
Lto must violate capitialization style for acronyms so that it can be referred to in blueprint files as "lto"
 never bool
 full bool
 thin bool
 min_sdk_version string, Minimum OS API level supported by this C or C++ module. This property becomes the value of the __ANDROID_API__ macro. When the C or C++ module is included in an APEX or an APK, this property is also used to ensure that the min_sdk_version of the containing module is not older (i.e. less) than this module's min_sdk_version. When not set, this property defaults to the value of sdk_version. When this is set to "apex_inherit", this tracks min_sdk_version of the containing APEX. When the module is not built for an APEX, "apex_inherit" defaults to sdk_version.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 native_coverage bool
 no_libcrt bool, don't link in libclang_rt.builtins-*.a Default: true
 nocrt bool, don't link in crt_begin and crt_end. This flag should only be necessary for compiling crt or libc. Default: true
 odm_available bool, This is the same as the "vendor_available" except that the install path of the vendor variant is /odm or /vendor/odm. By replacing "vendor_available: true" with "odm_available: true", the module will install its vendor variant to the /odm partition or /vendor/odm. As the modules with "odm_available: true" still create the vendor variants, they can link to the other vendor modules as the vendor_available modules do. Also, the vendor modules can link to odm_available modules. It may not be used for VNDK modules.
 overrides list of string, Names of modules to be overridden. Listed modules can only be other shared libraries (in Make or Soong). This does not completely prevent installation of the overridden libraries, but if both binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed from PRODUCT_PACKAGES.
 owner string, vendor who owns this module
 pack_relocations bool, Generate compact dynamic relocation table, default true.
pgo
 instrumentation bool
 profile_file string
 benchmarks list of string
 enable_profile_use bool
 cflags list of string, Additional compiler flags to use when building this module for profiling.
 product_available bool, whether this module should be allowed to be directly depended by other modules with `product_specific: true` or `product_available: true`. If set to true, an additional product variant will be built separately that is limited to the set of libraries and headers that are exposed to /product modules. The product variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /product modules. Different from the 'vendor_available' property, the modules with vndk: {enabled: true} don't have to define 'product_available'. The VNDK library without 'product_available' may not be depended on by any other modules that has product variants including the product available VNDKs. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk and PRODUCT_PRODUCT_VNDK_VERSION isn't set.
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.arc
header_libs
  []string
shared_libs
  []string
static_libs
  []string
srcs
  []string
whole_static_libs
  []string
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
strip.all
  *bool
strip.keep_symbols
  *bool
strip.keep_symbols_and_debug_frame
  *bool
static_libs
  []string
whole_static_libs
  []string
shared_libs
  []string
srcs
  []string
product_variables.eng
lto.never
  *bool
product_variables.flatten_apex
enabled
  *bool
product_variables.malloc_not_svelte
shared_libs
  []string
whole_static_libs
  []string
exclude_static_libs
  []string
srcs
  []string
header_libs
  []string
product_variables.native_coverage
srcs
  []string
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
proto
 export_proto_headers bool, export headers generated from .proto sources
 ramdisk bool, Whether this module is installed to ramdisk
 ramdisk_available bool, Make this module available when building for ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 recovery bool, Whether this module is installed to recovery partition
 recovery_available bool, Make this module available when building for recovery
 relative_install_path string, install to a subdirectory of the default install path for the module
 required list of string, names of other modules to install if this module is installed
 runtime_libs list of string, list of modules that should be installed with this module. This is similar to 'required' but '.vendor' suffix will be appended to the module names if the shared libraries have vendor variants and this module uses VNDK.
 sdclang bool, compile module with SDLLVM instead of AOSP LLVM
 sdk_variant_only bool, If true, always create an sdk variant and don't create a platform variant.
 sdk_version string, The API level that this module is built against. The APIs of this API level will be visible at build time, but use of any APIs newer than min_sdk_version will render the module unloadable on older devices. In the future it will be possible to weakly-link new APIs, making the behavior match Java: such modules will load on older devices, but calling new APIs on devices that do not support them will result in a crash. This property has the same behavior as sdk_version does for Java modules. For those familiar with Android Gradle, the property behaves similarly to how compileSdkVersion does for Java code. In addition, setting this property causes two variants to be built, one for the platform and one for apps.
shared StaticOrSharedProperties
 srcs list of string
 tidy_disabled_srcs list of string
 tidy_timeout_srcs list of string
sanitized Sanitized
none
 srcs list of string
address
 srcs list of string
hwaddress
 srcs list of string
 cflags list of string
 enabled bool
 whole_static_libs list of string
 static_libs list of string
 shared_libs list of string
 system_shared_libs list of string
 export_shared_lib_headers list of string
 export_static_lib_headers list of string
 apex_available list of string
 installable bool
 shared_libs list of string, list of modules that should be dynamically linked into this module.
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 static_libs list of string, list of modules that should be statically linked into this module.
 static_ndk_lib bool
 stem string, set the name of the output
strip
 none bool, none forces all stripping to be disabled. Device modules default to stripping enabled leaving mini debuginfo. Host modules default to stripping disabled, but can be enabled by setting any other strip boolean property. Default: true
 all bool, all forces stripping everything, including the mini debug info.
 keep_symbols bool, keep_symbols enables stripping but keeps all symbols.
 keep_symbols_list list of string, keep_symbols_list specifies a list of symbols to keep if keep_symbols is enabled. If it is unset then all symbols are kept.
 keep_symbols_and_debug_frame bool, keep_symbols_and_debug_frame enables stripping but keeps all symbols and debug frames.
stubs
Generate stubs to make this library accessible to APEXes.
 symbol_file string, Relative path to the symbol map. The symbol map provides the list of symbols that are exported for stubs variant of this library.
 versions list of string, List versions to generate stubs libs for. The version name "current" is always implicitly added.
 implementation_installable bool, Whether to not require the implementation of the library to be installed if a client of the stubs is installed. Defaults to true; set to false if the implementation is made available by some other means, e.g. in a Microdroid virtual machine.
 suffix string, set suffix of the name of the output
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 system_shared_libs list of string, list of system libraries that will be dynamically linked to shared library and executable modules. If unset, generally defaults to libc, libm, and libdl. Set to [] to prevent linking against the defaults. Default: []
 target interface
target.android
 compile_multilib string
target.apex
 exclude_shared_libs list of string, list of shared libs that should not be used to build the apex variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the apex variant of the C/C++ module.
target.host
 compile_multilib string
target.platform
 required list of string, List of modules required by the core variant.
 exclude_required list of string, List of modules not required by the core variant.
 shared_libs list of string, list of shared libs that should be use to build the platform variant of a module that sets sdk_version. This should rarely be necessary, in most cases the same libraries are available for the SDK and platform variants.
 header_libs list of string, list of ehader libs that only should be used to build platform variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the platform variant of the C/C++ module.
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.product
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
target.ramdisk
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the ramdisk variant of the C/C++ module.
target.recovery
 shared_libs list of string, list of shared libs that only should be used to build the recovery variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build the recovery variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the recovery variant of the C/C++ module.
 required list of string, List of modules required by the recovery variant.
 exclude_required list of string, List of modules not required by the recovery variant.
target.vendor
 override_export_include_dirs list of string, list of exported include directories, like export_include_dirs, that will be applied to vendor or product variant of this library. This will overwrite any other declarations.
 shared_libs list of string, list of shared libs that only should be used to build vendor or product variant of the C/C++ module.
 static_libs list of string, list of static libs that only should be used to build vendor or product variant of the C/C++ module.
 header_libs list of string, list of ehader libs that only should be used to build vendor or product variant of the C/C++ module.
 exclude_shared_libs list of string, list of shared libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_header_libs list of string, list of header libs that should not be used to build vendor or product variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor or product variant of the C/C++ module.
 version_script string, version script for vendor or product variant
 suffix string, set suffix of the name of the output
header_abi_checker headerAbiCheckerProperties
 enabled bool, Enable ABI checks (even if this is not an LLNDK/VNDK lib)
 symbol_file string, Path to a symbol file that specifies the symbols to be included in the generated ABI dump file
 exclude_symbol_versions list of string, Symbol versions that should be ignored from the symbol file
 exclude_symbol_tags list of string, Symbol tags that should be ignored from the symbol file
 check_all_apis bool, Run checks on all APIs (in addition to the ones referred by one of exported ELF symbols.)
 diff_flags list of string, Extra flags passed to header-abi-diff
 ref_dump_dirs list of string, Opt-in reference dump directories
target.vendor_ramdisk
 exclude_shared_libs list of string, list of shared libs that should not be used to build the recovery variant of the C/C++ module.
 exclude_static_libs list of string, list of static libs that should not be used to build the vendor ramdisk variant of the C/C++ module.
 exclude_runtime_libs list of string, list of runtime libs that should not be installed along with the vendor ramdisk variant of the C/C++ module.
 target_arch string, Target arch name of the snapshot (e.g. 'arm64' for variant 'aosp_arm64')
 target_required list of string, names of other modules to install on target if this module is installed
 test_for list of string, List of APEXes that this module has private access to for testing purpose. The module can depend on libraries that are not exported by the APEXes and use private symbols from the exported libraries.
 tidy bool, whether to run clang-tidy over C-like sources.
 tidy_checks list of string, Extra checks to enable or disable in clang-tidy
 tidy_checks_as_errors list of string, Checks that should be treated as errors.
 tidy_flags list of string, Extra flags to pass to clang-tidy
 unexported_symbols_list string, local file name to pass to the linker as -unexported_symbols_list
 unique_host_soname bool, rename host libraries to prevent overlap with system installed libraries
 use_clang_lld bool, Use clang lld instead of gnu ld.
 use_version_lib bool, make android::build:GetBuildNumber() available containing the build ID.
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_available bool, whether this module should be allowed to be directly depended by other modules with `vendor: true`, `proprietary: true`, or `vendor_available:true`. If set to true, two variants will be built separately, one like normal, and the other limited to the set of libraries and headers that are exposed to /vendor modules. The vendor variant may be used with a different (newer) /system, so it shouldn't have any unversioned runtime dependencies, or make assumptions about the system that may not be true in the future. If set to false, this module becomes inaccessible from /vendor modules. The modules with vndk: {enabled: true} must define 'vendor_available' to 'true'. Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk
vendor_public_library vendorPublicLibraryProperties
If this is a vendor public library, properties to describe the vendor public library stubs.
 symbol_file string, Relative path to the symbol map.
 unversioned bool, Whether the system library uses symbol versions.
 export_public_headers list of string, list of header libs to re-export include directories from.
 override_export_include_dirs list of string, list of directories relative to the Blueprints file that willbe added to the include path (using -I) for any module that links against the LLNDK variant of this module, replacing any that were listed outside the llndk clause.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vendor_ramdisk_available bool, Make this module available when building for vendor ramdisk. On device without a dedicated recovery partition, the module is only available after switching root into /first_stage_ramdisk. To expose the module before switching root, install the recovery variant instead.
 version string, VNDK snapshot version.
 version_script string, local file name to pass to the linker as --version-script
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.
vndk
 enabled bool, declared as a VNDK or VNDK-SP module. The vendor variant will be installed in /system instead of /vendor partition. `vendor_available` and `product_available` must be explicitly set to either true or false together with `vndk: {enabled: true}`.
 support_system_process bool, declared as a VNDK-SP module, which is a subset of VNDK. `vndk: { enabled: true }` must set together. All these modules are allowed to link to VNDK-SP or LL-NDK modules only. Other dependency will cause link-type errors. If `support_system_process` is not set or set to false, the module is VNDK-core and can link to other VNDK-core, VNDK-SP or LL-NDK modules only.
 private bool, declared as a VNDK-private module. This module still creates the vendor and product variants refering to the `vendor_available: true` and `product_available: true` properties. However, it is only available to the other VNDK modules but not to the non-VNDK vendor or product modules.
 extends string, Extending another module
 whole_program_vtables bool, Use -fwhole-program-vtables cflag.
 whole_static_libs list of string, list of modules whose object files should be linked into this module in their entirety. For static library modules, all of the .o files from the intermediate directory of the dependency will be linked into this modules .a file. For a shared library, the dependency's .a file will be linked into this module using -Wl,--whole-archive.

vndkcore_libraries_txt

vndkcore_libraries_txt is a singleton module whose content is a list of VNDK core libraries generated by Soong but can be referenced by other modules. For example, apex_vndk can depend on these files as prebuilt.
 name string, The name of the module. Must be unique across all modules. Default: vndkcore.libraries.txt
 arch interface
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 insert_vndk_version bool
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

vndkcorevariant_libraries_txt

vndkcorevariant_libraries_txt is a singleton module whose content is a list of VNDK libraries that are using the core variant, generated by Soong but can be referenced by other modules. For example, apex_vndk can depend on these files as prebuilt.
 name string, The name of the module. Must be unique across all modules. Default: vndkcorevariant.libraries.txt
 arch interface
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 insert_vndk_version bool Default: false
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

vndkprivate_libraries_txt

vndkprivate_libraries_txt is a singleton module whose content is a list of VNDK private libraries generated by Soong but can be referenced by other modules. For example, apex_vndk can depend on these files as prebuilt.
 name string, The name of the module. Must be unique across all modules. Default: vndkprivate.libraries.txt
 arch interface
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 insert_vndk_version bool
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

vndkproduct_libraries_txt

vndkproduct_libraries_txt is a singleton module whose content is a list of VNDK product libraries generated by Soong but can be referenced by other modules. For example, apex_vndk can depend on these files as prebuilt.
 name string, The name of the module. Must be unique across all modules. Default: vndkproduct.libraries.txt
 arch interface
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 insert_vndk_version bool
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.

vndksp_libraries_txt

vndksp_libraries_txt is a singleton module whose content is a list of VNDKSP libraries generated by Soong but can be referenced by other modules. For example, apex_vndk can depend on these files as prebuilt.
 name string, The name of the module. Must be unique across all modules. Default: vndksp.libraries.txt
 arch interface
 compile_multilib string, control whether this module compiles for 32-bit, 64-bit, or both. Possible values are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit platform).
 debug_ramdisk bool, Whether this module is installed to debug ramdisk
 device_specific bool, whether this module is specific to a device, not only for SoC, but also for off-chip peripherals. When set to true, it is installed into /odm (or /vendor/odm if odm partition does not exist, or /system/vendor/odm if both odm and vendor partitions do not exist). This implies `soc_specific:true`.
dist Dist
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 targets list of string, Copy the output of this module to the $DIST_DIR when `dist` is specified on the command line and any of these targets are also on the command line, or otherwise built
 dest string, The name of the output artifact. This defaults to the basename of the output of the module.
 dir string, The directory within the dist directory to store the artifact. Defaults to the top level directory ("").
 suffix string, A suffix to add to the artifact file name (before any extension).
 append_artifact_with_product bool, If true, then the artifact file will be appended with _<product name>. For example, if the product is coral and the module is an android_app module of name foo, then the artifact would be foo_coral.apk. If false, there is no change to the artifact file name.
 tag string, A string tag to select the OutputFiles associated with the tag. If no tag is specified then it will select the default dist paths provided by the module type. If a tag of "" is specified then it will return the default output files provided by the modules, i.e. the result of calling OutputFiles("").
 dists list of Dist, a list of configurations to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)
 enabled bool, emit build rules for this module Disabling a module should only be done for those modules that cannot be built in the current environment. Modules that can build in the current environment but are not usually required (e.g. superceded by a prebuilt) should not be disabled as that will prevent them from being built by the checkbuild target and so prevent early detection of changes that have broken those modules.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc list of string, init.rc files to be installed if this module is installed
 insert_vndk_version bool
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 owner string, vendor who owns this module
 product_specific bool, whether this module is specific to a software configuration of a product (e.g. country, network operator, etc). When set to true, it is installed into /product (or /system/product if product partition does not exist).
product_variables.always_use_prebuilt_sdks
enabled
  *bool
product_variables.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.flatten_apex
enabled
  *bool
product_variables.pdk
enabled
  *bool
product_variables.unbundled_build
enabled
  *bool
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required list of string, names of other modules to install if this module is installed
 soc_specific bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist).
 system_ext_specific bool, whether this module extends system. When set to true, it is installed into /system_ext (or /system/system_ext if system_ext partition does not exist).
 target interface
target.android
 compile_multilib string
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 vendor bool, whether this module is specific to an SoC (System-On-a-Chip). When set to true, it is installed into /vendor (or /system/vendor if vendor partition does not exist). Use `soc_specific` instead for better meaning.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragments list of string, VINTF manifest fragments to be installed if this module is installed
 visibility list of string, Controls the visibility of this module to other modules. Allowable values are one or more of these formats:

 ["//visibility:public"]: Anyone can use this module.
 ["//visibility:private"]: Only rules in the module's package (not its subpackages) can use
     this module.
 ["//visibility:override"]: Discards any rules inherited from defaults or a creating module.
     Can only be used at the beginning of a list of visibility rules.
 ["//some/package:__pkg__", "//other/package:__pkg__"]: Only modules in some/package and
     other/package (defined in some/package/*.bp and other/package/*.bp) have access to
     this module. Note that sub-packages do not have access to the rule; for example,
     //some/package/foo:bar or //other/package/testing:bla wouldn't have access. __pkg__
     is a special module and must be used verbatim. It represents all of the modules in the
     package.
 ["//project:__subpackages__", "//other:__subpackages__"]: Only modules in packages project
     or other or in one of their sub-packages have access to this module. For example,
     //project:rule, //project/library:lib or //other/testing/internal:munge are allowed
     to depend on this rule (but not //independent:evil)
 ["//project"]: This is shorthand for ["//project:__pkg__"]
 [":__subpackages__"]: This is shorthand for ["//project:__subpackages__"] where
     //project is the module's package. e.g. using [":__subpackages__"] in
     packages/apps/Settings/Android.bp is equivalent to
     //packages/apps/Settings:__subpackages__.
 ["//visibility:legacy_public"]: The default visibility, behaves as //visibility:public
     for now. It is an error if it is used in a module.

If a module does not specify the `visibility` property then it uses the `default_visibility` property of the `package` module in the module's package. If the `default_visibility` property is not set for the module's package then it will use the `default_visibility` of its closest ancestor package for which a `default_visibility` property is specified. If no `default_visibility` property can be found then the module uses the global default of `//visibility:legacy_public`. The `visibility` property has no effect on a defaults module although it does apply to any non-defaults module that uses it. To set the visibility of a defaults module, use the `defaults_visibility` property on the defaults module; not to be confused with the `default_visibility` property on the package module. See https://android.googlesource.com/platform/build/soong/+/master/README.md#visibility for more details.