android_filesystem

android_filesystem packages a set of modules and their transitive dependencies into a filesystem image. The filesystem images are expected to be mounted in the target device, which means the modules in the filesystem image are built for the target device (i.e. Android, not Linux host). The modules are placed in the filesystem image just like they are installed to the ordinary partitions like system.img. For example, cc_library modules are placed under ./lib[64] directory.
 name string, The name of the module. Must be unique across all modules.
 defaults list of string
android_filesystem_deps AndroidFilesystemDeps
Additional dependencies used for building android products
 system string
 system_ext string
 product string
 arch interface
arch.arm DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.arm64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.riscv64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.x86 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.x86_64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
 avb_algorithm string, Signing algorithm for avbtool. Default is SHA256_RSA4096.
 avb_hash_algorithm string, Hash algorithm used for avbtool (for descriptors). This is passed as hash_algorithm to avbtool. Default is sha256.
 avb_private_key string, Path to the private key that avbtool will use to sign this filesystem image. TODO(jiyong): allow apex_key to be specified here
 base_dir string, Base directory relative to root, to which deps are installed, e.g. "system". Default is "." (root).
 build_logtags bool, When set, builds etc/event-log-tags file by merging logtags from all dependencies. Default is false
 check_vintf bool, Run checkvintf on the vintf manifests of the filesystem
 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
 deps configurable list of string, Modules to include in this package
 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`.
 dirs configurable list of string, Directories to be created under root. e.g. /dev, /proc, etc.
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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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)
 enable_compression bool, Whether to enable per-file compression in f2fs
 enabled configurable 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.
erofs ErofsProperties
 compressor string, Compressor and Compression level passed to mkfs.erofs. e.g. (lz4hc,9) Please see external/erofs-utils/README for complete documentation.
 compress_hints string, Used as --compress-hints for mkfs.erofs
 sparse bool
f2fs F2fsProperties
 sparse bool
 fake_timestamp string, Seconds since unix epoch to override timestamps of file entries
 file_contexts string, file_contexts file to make image. Currently, only ext4 is supported. These file contexts will be compiled with sefcontext_compile
fsverity fsverityProperties
 inputs configurable list of string, Patterns of files for fsverity metadata generation. For each matched file, a .fsv_meta file will be generated and included to the filesystem image. etc/security/fsverity/BuildManifest.apk will also be generated which contains information about generated .fsv_meta files.
 libs configurable list of string, APK libraries to link against, for etc/security/fsverity/BuildManifest.apk
 gen_aconfig_flags_pb bool, Install aconfig_flags.pb file for the modules installed in this partition.
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 host_required list of string, names of other modules to install on host if this module is installed
 include_files_of list of string, List of filesystem modules to include in creating the partition. The root directory of the provided filesystem modules are included in creating the partition. This is only supported for cpio and compressed cpio filesystem types.
 init_rc configurable list of string, init.rc files to be installed if this module is installed
 is_auto_generated bool, Determines if the module is auto-generated from Soong or not. If the module is auto-generated, its deps are exempted from visibility enforcement.
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
linker_config LinkerConfigProperties
 gen_linker_config bool, Build a linker.config.pb file
 linker_config_srcs list of string, List of files (in .json format) that will be converted to a linker config file (in .pb format). The linker config file be installed in the filesystem at /etc/linker.config.pb
 mount_point string, Mount point for this image. Default is "/"
 multilib interface
multilib.both DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.common DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.first DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.lib32 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.lib64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.native_bridge DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.prefer32 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 no_flashall bool, Whether this partition is not supported by flashall. If true, this partition will not be included in the `updatedpackage` dist artifact.
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_name string, Name of the partition stored in vbmeta desc. Defaults to the name of this module.
 partition_size int64, The size of the partition on the device. It will be a build error if this built partition image exceeds this size.
 partition_type string, Identifies which partition this is for //visibility:any_system_image (and others) visibility checks, and will be used in the future for API surface checks.
 precompiled_file_contexts string, The selinux file contexts, after having already run them through sefcontext_compile
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
deps
  []string
product_variables.platform_version_name
base_dir
  *string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable list of string, names of other modules to install if this module is installed
 rollback_index int64, The index used to prevent rollback of the image. Only used if use_avb is true.
 rollback_index_location int64, Rollback index location of this image. Must be 1, 2, 3, etc.
 security_patch string, The security patch passed to as the com.android.build.<type>.security_patch avb property.
 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).
 stem string, Name of the output. Default is $(module_name).img
 support_casefolding bool, Whether to format f2fs and ext4 in a way that supports casefolding
 support_project_quota bool, Whether to format f2fs and ext4 in a way that supports project quotas
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 type string, Type of the filesystem. Currently, ext4, erofs, cpio, and compressed_cpio are supported. Default is ext4.
 use_avb bool, When set to true, sign the image with avbtool. Default is false.
 use_fec bool, Whether or not to use forward-error-correction codes when signing with AVB. Defaults to true.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 uuid string, When set, passed to mkuserimg_mke2fs --mke2fs_uuid & --mke2fs_hash_seed. Otherwise, they'll be set as random which might cause indeterministic build output.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

android_filesystem_defaults

android_filesystem_defaults is a default module for android_filesystem and android_system_image
 name string, The name of the module. Must be unique across all modules.
 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.
android_filesystem_deps AndroidFilesystemDeps
Additional dependencies used for building android products
 system string
 system_ext string
 product 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". Prefix pattern (com.foo.*) can be used to match with any APEX name with the prefix(com.foo.). Default is ["//apex_available:platform"].
 arch interface
arch.arm DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.arm64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.riscv64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.x86 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.x86_64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
 avb_algorithm string, Signing algorithm for avbtool. Default is SHA256_RSA4096.
 avb_hash_algorithm string, Hash algorithm used for avbtool (for descriptors). This is passed as hash_algorithm to avbtool. Default is sha256.
 avb_private_key string, Path to the private key that avbtool will use to sign this filesystem image. TODO(jiyong): allow apex_key to be specified here
 base_dir string, Base directory relative to root, to which deps are installed, e.g. "system". Default is "." (root).
 build_logtags bool, When set, builds etc/event-log-tags file by merging logtags from all dependencies. Default is false
 check_vintf bool, Run checkvintf on the vintf manifests of the filesystem
 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
 defaults_visibility list of string, Controls the visibility of the defaults module itself.
 deps configurable list of string, Modules to include in this package
 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`.
 dirs configurable list of string, Directories to be created under root. e.g. /dev, /proc, etc.
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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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)
 enable_compression bool, Whether to enable per-file compression in f2fs
 enabled configurable 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.
erofs ErofsProperties
 compressor string, Compressor and Compression level passed to mkfs.erofs. e.g. (lz4hc,9) Please see external/erofs-utils/README for complete documentation.
 compress_hints string, Used as --compress-hints for mkfs.erofs
 sparse bool
f2fs F2fsProperties
 sparse bool
 fake_timestamp string, Seconds since unix epoch to override timestamps of file entries
 file_contexts string, file_contexts file to make image. Currently, only ext4 is supported. These file contexts will be compiled with sefcontext_compile
fsverity fsverityProperties
 inputs configurable list of string, Patterns of files for fsverity metadata generation. For each matched file, a .fsv_meta file will be generated and included to the filesystem image. etc/security/fsverity/BuildManifest.apk will also be generated which contains information about generated .fsv_meta files.
 libs configurable list of string, APK libraries to link against, for etc/security/fsverity/BuildManifest.apk
 gen_aconfig_flags_pb bool, Install aconfig_flags.pb file for the modules installed in this partition.
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 host_required list of string, names of other modules to install on host if this module is installed
 include_files_of list of string, List of filesystem modules to include in creating the partition. The root directory of the provided filesystem modules are included in creating the partition. This is only supported for cpio and compressed cpio filesystem types.
 init_rc configurable list of string, init.rc files to be installed if this module is installed
 is_auto_generated bool, Determines if the module is auto-generated from Soong or not. If the module is auto-generated, its deps are exempted from visibility enforcement.
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
linker_config LinkerConfigProperties
 gen_linker_config bool, Build a linker.config.pb file
 linker_config_srcs list of string, List of files (in .json format) that will be converted to a linker config file (in .pb format). The linker config file be installed in the filesystem at /etc/linker.config.pb
 mount_point string, Mount point for this image. Default is "/"
 multilib interface
multilib.both DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.common DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.first DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.lib32 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.lib64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.native_bridge DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.prefer32 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 no_flashall bool, Whether this partition is not supported by flashall. If true, this partition will not be included in the `updatedpackage` dist artifact.
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_name string, Name of the partition stored in vbmeta desc. Defaults to the name of this module.
 partition_size int64, The size of the partition on the device. It will be a build error if this built partition image exceeds this size.
 partition_type string, Identifies which partition this is for //visibility:any_system_image (and others) visibility checks, and will be used in the future for API surface checks.
 precompiled_file_contexts string, The selinux file contexts, after having already run them through sefcontext_compile
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
deps
  []string
product_variables.platform_version_name
base_dir
  *string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable list of string, names of other modules to install if this module is installed
 rollback_index int64, The index used to prevent rollback of the image. Only used if use_avb is true.
 rollback_index_location int64, Rollback index location of this image. Must be 1, 2, 3, etc.
 security_patch string, The security patch passed to as the com.android.build.<type>.security_patch avb property.
 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).
 stem string, Name of the output. Default is $(module_name).img
 support_casefolding bool, Whether to format f2fs and ext4 in a way that supports casefolding
 support_project_quota bool, Whether to format f2fs and ext4 in a way that supports project quotas
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 type string, Type of the filesystem. Currently, ext4, erofs, cpio, and compressed_cpio are supported. Default is ext4.
 use_avb bool, When set to true, sign the image with avbtool. Default is false.
 use_fec bool, Whether or not to use forward-error-correction codes when signing with AVB. Defaults to true.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 uuid string, When set, passed to mkuserimg_mke2fs --mke2fs_uuid & --mke2fs_hash_seed. Otherwise, they'll be set as random which might cause indeterministic build output.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

android_system_image

android_system_image is a specialization of android_filesystem for the 'system' partition. Currently, the only difference is the inclusion of linker.config.pb file which specifies the provided and the required libraries to and from APEXes.
 name string, The name of the module. Must be unique across all modules.
 defaults list of string
android_filesystem_deps AndroidFilesystemDeps
Additional dependencies used for building android products
 system string
 system_ext string
 product string
 arch interface
arch.arm DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.arm64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.riscv64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.x86 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
arch.x86_64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
 avb_algorithm string, Signing algorithm for avbtool. Default is SHA256_RSA4096.
 avb_hash_algorithm string, Hash algorithm used for avbtool (for descriptors). This is passed as hash_algorithm to avbtool. Default is sha256.
 avb_private_key string, Path to the private key that avbtool will use to sign this filesystem image. TODO(jiyong): allow apex_key to be specified here
 base_dir string, Base directory relative to root, to which deps are installed, e.g. "system". Default is "." (root).
 build_logtags bool, When set, builds etc/event-log-tags file by merging logtags from all dependencies. Default is false
 check_vintf bool, Run checkvintf on the vintf manifests of the filesystem
 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
 deps configurable list of string, Modules to include in this package
 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`.
 dirs configurable list of string, Directories to be created under root. e.g. /dev, /proc, etc.
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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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)
 enable_compression bool, Whether to enable per-file compression in f2fs
 enabled configurable 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.
erofs ErofsProperties
 compressor string, Compressor and Compression level passed to mkfs.erofs. e.g. (lz4hc,9) Please see external/erofs-utils/README for complete documentation.
 compress_hints string, Used as --compress-hints for mkfs.erofs
 sparse bool
f2fs F2fsProperties
 sparse bool
 fake_timestamp string, Seconds since unix epoch to override timestamps of file entries
 file_contexts string, file_contexts file to make image. Currently, only ext4 is supported. These file contexts will be compiled with sefcontext_compile
fsverity fsverityProperties
 inputs configurable list of string, Patterns of files for fsverity metadata generation. For each matched file, a .fsv_meta file will be generated and included to the filesystem image. etc/security/fsverity/BuildManifest.apk will also be generated which contains information about generated .fsv_meta files.
 libs configurable list of string, APK libraries to link against, for etc/security/fsverity/BuildManifest.apk
 gen_aconfig_flags_pb bool, Install aconfig_flags.pb file for the modules installed in this partition.
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 host_required list of string, names of other modules to install on host if this module is installed
 include_files_of list of string, List of filesystem modules to include in creating the partition. The root directory of the provided filesystem modules are included in creating the partition. This is only supported for cpio and compressed cpio filesystem types.
 init_rc configurable list of string, init.rc files to be installed if this module is installed
 is_auto_generated bool, Determines if the module is auto-generated from Soong or not. If the module is auto-generated, its deps are exempted from visibility enforcement.
 licenses list of string, Describes the licenses applicable to this module. Must reference license modules.
linker_config LinkerConfigProperties
 gen_linker_config bool, Build a linker.config.pb file
 linker_config_srcs list of string, List of files (in .json format) that will be converted to a linker config file (in .pb format). The linker config file be installed in the filesystem at /etc/linker.config.pb
 mount_point string, Mount point for this image. Default is "/"
 multilib interface
multilib.both DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.common DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.first DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.lib32 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.lib64 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.native_bridge DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
multilib.prefer32 DepsProperty
 high_priority_deps list of string, Deps that have higher priority in packaging when there is a packaging conflict. For example, if multiple files are being installed to same filepath, the install file of the module listed in this property will have a higher priority over those in other deps properties.
 deps configurable list of string, Modules to include in this package
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 no_flashall bool, Whether this partition is not supported by flashall. If true, this partition will not be included in the `updatedpackage` dist artifact.
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_name string, Name of the partition stored in vbmeta desc. Defaults to the name of this module.
 partition_size int64, The size of the partition on the device. It will be a build error if this built partition image exceeds this size.
 partition_type string, Identifies which partition this is for //visibility:any_system_image (and others) visibility checks, and will be used in the future for API surface checks.
 precompiled_file_contexts string, The selinux file contexts, after having already run them through sefcontext_compile
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
deps
  []string
product_variables.platform_version_name
base_dir
  *string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable list of string, names of other modules to install if this module is installed
 rollback_index int64, The index used to prevent rollback of the image. Only used if use_avb is true.
 rollback_index_location int64, Rollback index location of this image. Must be 1, 2, 3, etc.
 security_patch string, The security patch passed to as the com.android.build.<type>.security_patch avb property.
 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).
 stem string, Name of the output. Default is $(module_name).img
 support_casefolding bool, Whether to format f2fs and ext4 in a way that supports casefolding
 support_project_quota bool, Whether to format f2fs and ext4 in a way that supports project quotas
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 type string, Type of the filesystem. Currently, ext4, erofs, cpio, and compressed_cpio are supported. Default is ext4.
 use_avb bool, When set to true, sign the image with avbtool. Default is false.
 use_fec bool, Whether or not to use forward-error-correction codes when signing with AVB. Defaults to true.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 uuid string, When set, passed to mkuserimg_mke2fs --mke2fs_uuid & --mke2fs_hash_seed. Otherwise, they'll be set as random which might cause indeterministic build output.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

The AVB footer adds verification information to the image.
 name string, The name of the module. Must be unique across all modules.
 src configurable string, Source file of this image. Can reference a genrule type module with the ":module" syntax.
 defaults list of string
 algorithm string, Algorithm that avbtool will use to sign this image. Default is SHA256_RSA4096.
 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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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 configurable 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.
 filename string, Set the name of the output. Defaults to <module_name>.img.
 host_required list of string, names of other modules to install on host if this module is installed
 include_descriptors_from_images list of string, Include descriptors from images
 init_rc configurable 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)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_name string, Name of the image partition. Defaults to the name of this module.
 partition_size int64, Size of the partition. Defaults to dynamically calculating the size.
 private_key string, Path to the private key that avbtool will use to sign this image.
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.native_coverage
src
  *string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[bool]
 proprietary bool, whether this is a proprietary vendor module, and should be installed into /vendor
 props list of avbProp, List of properties to add to the footer
 ramdisk bool, Whether this module is installed to ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required configurable list of string, names of other modules to install if this module is installed
 rollback_index configurable int64, The index used to prevent rollback of the image on device.
 salt string, The salt in hex. Required for reproducible builds.
 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_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

avb_add_hash_footer_defaults provides a set of properties that can be inherited by other avb_add_hash_footer modules. A module can use the properties from an avb_add_hash_footer_defaults using `defaults: ["<:default_module_name>"]`. Properties of both modules are erged (when possible) by prepending the default module's values to the depending module's values.
configuration to distribute output files from this module to the distribution directory (default: $OUT/dist, configurable with $DIST_DIR)

avb_gen_vbmeta_image

The avbGenVbmetaImage generates an unsigned VBMeta image output for the given image.
 name string, The name of the module. Must be unique across all modules.
 src string, Source file of this image. Can reference a genrule type module with the ":module" syntax.
 defaults list of 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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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 configurable 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 configurable 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)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_name string, Name of the image partition. Defaults to the name of 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.native_coverage
src
  *string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable list of string, names of other modules to install if this module is installed
 salt string, The salt in hex. Required for reproducible builds.
 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_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

avb_gen_vbmeta_image_defaults

avb_gen_vbmeta_image_defaults provides a set of properties that can be inherited by other avb_gen_vbmeta_image modules. A module can use the properties from an avb_gen_vbmeta_image_defaults using `defaults: ["<:default_module_name>"]`. Properties of both modules are erged (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.
 src string, Source file of this image. Can reference a genrule type module with the ":module" syntax.
 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". Prefix pattern (com.foo.*) can be used to match with any APEX name with the prefix(com.foo.). Default is ["//apex_available:platform"].
 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
 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`.
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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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 configurable 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 configurable 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)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_name string, Name of the image partition. Defaults to the name of 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.native_coverage
src
  *string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable list of string, names of other modules to install if this module is installed
 salt string, The salt in hex. Required for reproducible builds.
 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_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

bootconfig

bootconfig module generates the `vendor-bootconfig.img` file, which lists the bootconfig parameters and can be passed as a `--vendor_bootconfig` value in mkbootimg invocation.
 name string, The name of the module. Must be unique across all modules.
 arch interface
 boot_config list of string, List of bootconfig parameters that will be written as a line separated list in the output file.
 boot_config_file string, Path to the file that contains the list of bootconfig parameters. This will be appended to the output file, after the entries in boot_config.
 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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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 configurable 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 configurable 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)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable 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_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

bootimg

bootimg is the image for the boot partition. It consists of header, kernel, ramdisk, and dtb.
 name string, The name of the module. Must be unique across all modules.
 arch interface
 avb_algorithm string, Hash and signing algorithm for avbtool. Default is SHA256_RSA4096.
 avb_mode string, This can either be "default", or "make_legacy". "make_legacy" will sign the boot image like how build/make/core/Makefile does, to get bit-for-bit backwards compatibility. But we may want to reconsider if it's necessary to have two modes in the future. The default is "default"
 avb_private_key string, Path to the private key that avbtool will use to sign this filesystem image. TODO(jiyong): allow apex_key to be specified here
 avb_rollback_index int64, The index used to prevent rollback of the image on device.
 avb_rollback_index_location int64, Rollback index location of this image. Must be 0, 1, 2, etc.
 boot_image_type string, Determines the specific type of boot image this module is building. Can be boot, vendor_boot or init_boot. Defaults to boot. Refer to https://source.android.com/devices/bootloader/partitions/vendor-boot-partitions for vendor_boot. Refer to https://source.android.com/docs/core/architecture/partitions/generic-boot for init_boot.
 bootconfig string, File that contains bootconfig parameters. This can be set only when `vendor_boot` is true and `header_version` is greater than or equal to 4.
 cmdline list of string, Optional kernel commandline arguments
 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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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)
 dtb_prebuilt string, Path to the device tree blob (DTB) prebuilt file to add to this boot image
 enabled configurable 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_version string, Header version number. Must be set to one of the version numbers that are currently supported. Refer to https://source.android.com/devices/bootloader/boot-image-header
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc configurable list of string, init.rc files to be installed if this module is installed
 kernel_prebuilt string, Path to the linux kernel prebuilt file
 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)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_name string, Name of the partition stored in vbmeta desc. Defaults to the name of this module.
 partition_size int64, The size of the partition on the device. It will be a build error if this built partition image exceeds this size.
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
cmdline
  []string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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_module string, Filesystem module that is used as ramdisk
 recovery bool, Whether this module is installed to recovery partition
 required configurable list of string, names of other modules to install if this module is installed
 security_patch string, The security patch passed to as the com.android.build.<type>.security_patch avb property. Replacement for the make variables BOOT_SECURITY_PATCH / INIT_BOOT_SECURITY_PATCH.
 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).
 stem string, Set the name of the output. Defaults to <module_name>.img.
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_avb bool, When set to true, sign the image with avbtool. Default is false.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

logical_partition

logical_partition is a partition image which has one or more logical partitions in it.
 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
 default_group list of partitionProperties, List of partitions for default group. Default group has no size limit and automatically minimized when creating an image.
 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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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 configurable 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.
 groups list of groupProperties, List of groups. A group defines a fixed sized region. It can host one or more logical partitions and their total size is limited by the size of the group they are in.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc configurable 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)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable list of string, names of other modules to install if this module is installed
 size string, Total size of the logical partition. If set to "auto", total size is automatically calcaulted as minimum.
 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).
 sparse bool, Whether the output is a sparse image or not. Default is false.
 stem string, Set the name of the output. Defaults to <module_name>.img.
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

raw_binary

 name string, The name of the module. Must be unique across all modules.
 src string, Name of input executable. Can be a name of a target.
 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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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 configurable 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 configurable 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)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.native_coverage
src
  *string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable 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).
 stem string, Set the name of the output. Defaults to <module_name>.bin.
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.

super_image

 name string, The name of the module. Must be unique across all modules.
 ab_update bool, whether A/B updater is used
 arch interface
 block_devices list of string, the super partition block device list
 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).
 create_super_empty bool, Whether a super_empty.img should be created
 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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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 configurable 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 configurable 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.
 metadata_device string, the block device where metadata for dynamic partitions is stored
 multilib interface
 native_bridge_supported bool, Whether this module is built for non-native architectures (also known as native bridge binary)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_partition string, Name of the Odm_dlkm partition filesystem module
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 odm_partition string, Name of the Odm partition filesystem module
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_groups list of PartitionGroupsInfo, information about how partitions within the super partition are grouped together
 product_partition string, Name of the Product partition filesystem 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable list of string, names of other modules to install if this module is installed
 retrofit bool, whether dynamic partitions is enabled on devices that were launched without this support
 size int64, the size of the super partition
 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).
 sparse bool, whether the output is a sparse image
 super_image_in_update_package bool, Whether the super image will be disted in the update package
 system_dlkm_partition string, Name of the System_dlkm partition filesystem module
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 system_ext_partition string, Name of the System_ext partition filesystem module
 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_other_partition string, Name of the System_other partition filesystem module
 system_partition string, Name of the System partition filesystem module
 target interface
target.android
 compile_multilib string
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_dynamic_partitions bool, whether dynamic partitions is used
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_partition string, Name of the Vendor_dlkm partition filesystem module
 vendor_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_partition string, Name of the Vendor partition filesystem module
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable list of string, VINTF manifest fragments to be installed if this module is installed
virtual_ab
 enable bool, whether virtual A/B seamless update is enabled
 retrofit bool, whether retrofitting virtual A/B seamless update is enabled
 compression bool, If set, device uses virtual A/B Compression
 compression_method string, This value controls the compression algorithm used for VABC. Valid options are defined in system/core/fs_mgr/libsnapshot/cow_writer.cpp e.g. "none", "gz", "brotli"
 compression_factor int64, Specifies maximum bytes to be compressed at once during ota. Options: 4096, 8192, 16384, 32768, 65536, 131072, 262144.
 cow_version int64, Specifies COW version to be used by update_engine and libsnapshot. If this value is not specified we default to COW version 2 in update_engine for backwards compatibility
 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/+/main/README.md#visibility for more details.

vbmeta

vbmeta is the partition image that has the verification information for other partitions.
 name string, The name of the module. Must be unique across all modules.
 algorithm string, Algorithm that avbtool will use to sign this vbmeta image. Default is SHA256_RSA4096.
 arch interface
 avb_properties list of avbProperty, List of key-value pair of avb properties
 chained_partition_metadata list of ChainedPartitionProperties, Metadata about the chained partitions that this vbmeta delegates the verification. This is an alternative to chained_partitions, using chained_partitions instead is simpler in most cases. However, this property allows building this vbmeta partition without its chained partitions existing in this build.
 chained_partitions list of string, List of chained partitions that this vbmeta delegates the verification. They are the names of other vbmeta 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.
 prepend_artifact_with_product bool, If true, then the artifact file will be prepended 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 coral-foo.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 configurable 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.
 filesystem_partition_type string, Type of the `android_filesystem` for which the vbmeta.img is created. Examples are system, vendor, product.
 host_required list of string, names of other modules to install on host if this module is installed
 init_rc configurable 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)
 no_full_install bool, When set to true, this module is not installed to the full install path (ex: under out/target/product/<name>/<partition>). It can be installed only to the packaging modules like android_filesystem.
 odm_dlkm_specific bool, Install to partition odm_dlkm when set to true.
 overrides list of string, List of module names that are prevented from being installed when this module gets installed.
 owner string, vendor who owns this module
 partition_name string, Name of the partition stored in vbmeta desc. Defaults to the name of this module.
 partitions configurable list of string, List of filesystem modules that this vbmeta has descriptors for. The filesystem modules have to be signed (use_avb: true).
 private_key string, Path to the private key that avbtool will use to sign this vbmeta image.
 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.debuggable
init_rc
  []string
required
  []string
host_required
  []string
target_required
  []string
product_variables.release_aidl_use_unfrozen
required
  []string
vintf_fragment_modules
  []string
product_variables.selinuxignoreneverallows
required
  []string
product_variables.unbundled_build
enabled Configurable[bool]
 Configurable[bool] proptools.Configurable[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 configurable list of string, names of other modules to install if this module is installed
 rollback_index int64, The rollback index. If unspecified, the rollback index is from PLATFORM_SECURITY_PATCH
 rollback_index_location int64, Rollback index location of this vbmeta image. Must be 0, 1, 2, etc. Default is 0.
 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).
 stem string, Set the name of the output. Defaults to <module_name>.img.
 system_dlkm_specific bool, Install to partition system_dlkm when set to true.
 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
 enabled bool
target.host
 compile_multilib string
 target_required list of string, names of other modules to install on target if this module is installed
 team string, The team (defined by the owner/vendor) who owns the property.
 use_generic_config bool, Set to true if this module must be generic and does not require product-specific information. To be included in the system image, this property must be set to true.
 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_dlkm_specific bool, Install to partition vendor_dlkm when set to true.
 vendor_ramdisk bool, Whether this module is installed to vendor ramdisk
 vintf_fragment_modules configurable list of string, vintf_fragment Modules required from this module.
 vintf_fragments configurable 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/+/main/README.md#visibility for more details.