Get desktop application:
View/edit binary Protocol Buffers messages
Used in:
, ,Used in:
Used in:
, ,Targeting of other sibling directories that were in the Bundle. For master splits this is targeting of other master splits.
Holds data specific to APEX APKs.
Used in:
Configuration for processing of APKs embedded in an APEX image.
Configuration for processing APEX bundles. https://source.android.com/devices/tech/ota/apex
Used in:
Configuration for processing of APKs embedded in an APEX image.
Explicit list of supported ABIs. Default: See ApexBundleValidator.REQUIRED_ONE_OF_ABI_SETS
Used in:
,Android package name of the APK.
Path to the APK within the APEX system image.
Targeting specific for image files under apex/.
Used in:
Describes the APEX images in the App Bundle.
List of all the image files under "apex/".
Used in:
,Path to the APK file.
Set only for Split APKs.
Set only for standalone APKs.
Set only for Instant split APKs.
Set only for system APKs.
Set only for asset slices.
Set only for APEX APKs.
Set only for archived APKs.
Represents a module. For pre-L devices multiple modules (possibly all) may be merged into one.
Used in:
APKs.
Targeting on the level of individual APKs.
Used in:
Lists the dependencies of an application.
List of all the dependencies, direct and indirect.
Dependencies of the libraries from the list above.
List of direct dependencies per bundle module.
List of repositories where dependencies were found.
Specifies integrity protection options that should be applied to an app bundle. Next tag: 8.
Optional. If present, java/kotlin code will be obfuscated according to the config.
Holds data specific to Archived APKs.
Used in:
(message has no fields)
Used in:
Module name.
Indicates the delivery type for persistent install.
Metadata for instant installs.
Deprecated. Use delivery_type.
Used in:
App versionCodes that will be updated with these asset modules. Only relevant for asset-only bundles.
Version tag for the asset upload. Only relevant for asset-only bundles.
Holds metadata for asset only bundles.
Used in:
App versionCodes that will be updated with these asset modules. Only relevant for asset-only bundles.
Version tag for the asset upload. Only relevant for asset-only bundles.
Set of asset slices belonging to a single asset module.
Used in:
Module level metadata.
Asset slices.
Describes the assets in the App Bundle.
List of all the directories (and subdirectories recursively) under "assets/" that contain at least one file. They may be explicitly targeted or not.
Targeting specific for directories under assets/.
Used in:
Breakdown of APK, or an aggregate.
Total size of entries and ZIP format overheads.
Only dex code.
Resources, resource table and Android Manifest.
Only assets.
Only native libraries.
Other entries e.g. META-INF/ and ZIP format overheads.
Describes the output of the "build-apks" command.
The package name of this app.
List of the created variants.
Metadata about BundleTool used to build the APKs.
List of the created asset slices.
Information about local testing mode.
Asset modules metadata for asset only bundles.
Default values for targeting dimensions, as specified in the BundleConfig. Only set for dimensions that have a default suffix specified.
Information about permanently fused install-time modules, which were presented in original bundle but fused into base in all variants.
The package name of the SDK. For instance, for SDK “com.foo.bar” with major version “15”, the package name stored here is simply “com.foo.bar”. This is different from the package name that is installed in Android PackageManager on sandbox-enabled devices (which is “com.foo.bar_15”).
Variants generated for the SDK. At the moment, there is always a single variant.
A build stamp. Next tag: 8.
Used in:
Source revision for the build, e.g. HEAD commit hash.
ID of the build job which created this bundle.
URL to the build job which created this bundle. Does not need to be public, and probably will not be.
ID for the specific build, e.g. a UUID.
Build label: an arbitrary string set by the build system. May be used to embed a release label.
Time at which the build was started.
Status of the working tree this bundle was built from.
Status of the working tree this bundle was built from.
Used in:
Clean. No uncommitted modifications or files.
Dirty. One or more uncommitted modifications or files.
Build stamp metadata.
The build stamp for this bundle.
Resources to be always kept in the master split.
APKs to be signed with the same key as generated APKs.
Configuration for locales.
Used in:
Next ID: 30
The exception message that the bundle tool outputs. NOTE: this may not be safe to show to users since it might include server paths and configuration.
The exception message that can be exposed to third party developers.
Type of error.
Used in:
Indicates invalid bundle.
Indicates bundle with invalid version code in AndroidManifest.xml.
Indicates that command is incompatible with requested device.
Indicates invalid device spec provided to command.
Indicates that command is invalid, like options mismatch.
Indicates that something happened during command execution.
Indicates invalid signing configuration.
Used in:
, , ,Version of BundleTool used to build the Bundle.
Contains information on certificate digest overrides for a specific SDK.
Used in:
Package name of the SDK that we want to override the certificate digest for.
Certificate digest that we should override to.
Contains information on certificate digests that should be overridden in runtime-enabled SDK dependency config for local deployment.
Used in:
Certificate digest override for specific SDKs.
Default certificate override. If set, certificate digests of SDKs that are not present in per_sdk_certificate_override field will be overriden to this value.
Used in:
Code related file may come from either Android App Bundle (AAB) or bundletool repo. Bundletool repo is used as a source for a DEX file for an archived APK which is not the part AAB and is injected when APKs are generated from the AAB. Required.
Path to file in the bundle.
Path to a file that will be injected at build time. Contained in the bundletool source code.
Type of code-related file. Required.
Path to file in the APK. Only set for NATIVE_LIBRARY types.
SHA256 digest of the code-related file.
Used in:
Code transparency related metadata.
List of code-related files in the bundle.
Version of code transparency file format. Required.
Used in:
Glob matching the list of files to leave uncompressed in the APKs. The matching is done against the path of files in the APK, thus excluding the name of the modules, and using forward slash ("/") as a name separator. Examples: "res/raw/**", "assets/**/*.uncompressed", etc.
Default compression strategy for install-time asset modules. If the compression strategy indicates to compress a file and the same file matches one of the `uncompressed_glob` values, the `uncompressed_glob` takes precedence (the file is left uncompressed in the generated APK). If unspecified, asset module content is left uncompressed in the generated asset modules. Note: this flag only configures the compression strategy for install-time asset modules; the content of on-demand and fast-follow asset modules is always kept uncompressed.
Compression algorithm which is used to compress entries in final APKs.
Used in:
Default in the current version of bundletool is zlib deflate algorithm with compression level 9 for the application's resources and compression level 6 for other entries. This is a good trade-off between size of final APK and size of patches which are used to update the application from previous to next version.
7zip implementation of deflate algorithm which gives smaller APK size but size of patches required to update the application are larger.
Used in:
Assets are left uncompressed in the generated asset module.
Assets are compressed in the generated asset module. This option can be overridden at a finer granularity by specifying files or folders to keep uncompressed in `uncompressed_glob`. This option should only be used if the app is able to handle compressed asset module content at runtime (some runtime APIs may misbehave).
Targets assets and APKs to a specific country set. For Example:- The values and alternatives for the following files in assets directory targeting would be as follows: assetpack1/assets/foo#countries_latam/bar.txt -> { value: [latam], alternatives: [sea] } assetpack1/assets/foo#countries_sea/bar.txt -> { value: [sea], alternatives: [latam] } assetpack1/assets/foo/bar.txt -> { value: [], alternatives: [sea, latam] } The values and alternatives for the following targeted split apks would be as follows: splits/base-countries_latam.apk -> { value: [latam], alternatives: [sea] } splits/base-countries_sea.apk -> { value: [sea], alternatives: [latam] } splits/base-other_countries.apk -> { value: [], alternatives: [sea, latam] }
Used in:
,Country set name defined in device tier config.
Targeting of other sibling directories that were in the Bundle.
Next tag: 2
Used in:
Default value targeted by a particular dimension.
Used in:
The dimension being targeted.
The default value being targeted.
Used in:
, , ,Used in:
Equivalent of android:glEsVersion or android:version in <uses-feature>.
Since other atom targeting messages have the "OR" semantic on values the DeviceFeatureTargeting represents only one device feature to retain that convention.
Used in:
A group of devices. A group is defined by a set of device selectors. A device belongs to the group if it matches any selector (logical OR).
Used in:
The name of the group.
Device selectors for this group. A device matching any of the selectors is included in this group.
Targets conditional modules to a set of device groups.
Used in:
Identifier of a device.
Used in:
,Value of Build.BRAND.
Value of Build.DEVICE.
Properties of a particular device.
Device RAM in bytes.
Device ID of device.
System features in device.
Conditions about a device's RAM capabilities.
Used in:
Minimum RAM in bytes (bound included).
Maximum RAM in bytes (bound excluded).
Selector for a device group. A selector consists of a set of conditions on the device that should all match (logical AND) to determine a device group eligibility. For instance, if a selector specifies RAM conditions, device model inclusion and device model exclusion, a device is considered to match if: device matches RAM conditions AND device matches one of the included device models AND device doesn't match excluded device models
Used in:
Conditions on the device's RAM.
Device models included by this selector.
Device models excluded by this selector, even if they match all other conditions.
A device needs to have all these system features to be included by the selector.
A device that has any of these system features is excluded by this selector, even if it matches all other conditions.
Supported ABI architectures in the order of preference. The values should be the string as reported by the platform, e.g. "armeabi-v7a" or "x86_64".
All installed locales represented as BCP-47 strings.
List of device features returned by the package manager utility.
List of OpenGL extension strings supported by the device.
Screen dpi.
getprop ro.build.version.sdk
getprop ro.build.version.codename
Device tier.
Device groups the device belongs to.
Information about the runtime-enabled SDK capabilities of the device.
Country set.
A single device tier. Devices matching any of the device groups in device_group_names are considered to match the tier.
Used in:
Groups of devices included in this tier. These groups must be defined explicitly under device_groups in this configuration.
The priority level of the tier. Tiers are evaluated in descending order of level: the highest level tier has the highest priority. The highest tier matching a given device is selected for that device. You should use a contiguous range of levels for your tiers in a tier set; tier levels in a tier set must be unique. For instance, if your tier set has 4 tiers (including the global fallback), you should define tiers 1, 2 and 3 in this configuration. Note: tier 0 is implicitly defined as a global fallback and selected for devices that don't match any of the tiers explicitly defined here. You mustn't define level 0 explicitly in this configuration.
Configuration describing device targeting criteria for the content of an app.
Definition of device groups for the app.
Definition of the set of device tiers for the app.
Definition of user country sets for the app.
A set of device tiers. A tier set determines what variation of app content gets served to a specific device, for device-targeted content. You should assign a priority level to each tier, which determines the ordering by which they are evaluated by Play. See the documentation of DeviceTier.level for more details.
Used in:
Device tiers belonging to the set.
Targets assets and APKs to a concrete device tier.
Used in:
,Configuration of java-related obfuscation.
Used in:
Either fully qualified method reference e.g. `java.lang.MyClass#myMethod(int,float,java.lang.String)`, or a partially qualified reference e.g. `java.lang.MyClass#myMethod`.
Describes how to look for methods to obfuscate.
Used in:
We'll try to automatically find methods for obfuscation, in addition to the methods specified in this config.
Only methods spefied in this config will be considered for obfuscation.
Next tag: 2
Used in:
Describes the output of the "extract-apks" command.
Set of extracted APKs.
Information about the APKs if built with local testing enabled.
Describes extracted APK.
Used in:
Module name.
Path
Indicates the delivery type (e.g. on-demand) of the APK.
Used in:
Next tag: 4.
Used in:
Used in:
Indicates whether this module is marked "instant".
Indicates the delivery type for instant install.
Deprecated. Use delivery_type.
Used in:
The root url for the repository.
Used in:
,ISO-639: 2 or 3 letter language code.
Targeting of other sibling directories that were in the Bundle. For master splits this is targeting of other master splits.
Next ID: 5
Used in:
Type of library dependency.
A library downloaded from a Maven repository.
A library downloaded from a Unity repository.
Repository from which the artifact was retrieved (if known). Index is from pool of repositories defined in AppDependencies.
This message contains various digests of the library contents.
Used in:
SHA256 hash value of the file contents.
List of dependencies of a given library.
Used in:
Indices correspond to the pool of libraries defined in AppDependencies.
Next tag: 4.
Used in:
Options for overriding parts of runtime-enabled SDK dependency configuration for local deployment and testing.
Options for overriding SDK certificate digests in RuntimeEnabledSdkConfig of the app bundle.
Used in:
Indicates if the bundle is built in local testing mode.
The local testing path, as specified in the base manifest. This refers to the relative path on the external directory of the app where APKs will be pushed for local testing. Set only if local testing is enabled.
Used in:
The absolute path on the device that files targeted by local testing mode will be pushed to.
Used in:
Instructs bundletool to generate locale config and inject it into AndroidManifest.xml. A locale is marked as supported by the application if there is at least one resource value in this locale. Be very careful with this setting because if some of your libraries expose resources in some locales which are not actually supported by your application it will mark this locale as supported. Disabled by default.
(message has no fields)
(message has no fields)
(message has no fields)
Resources to keep in the master split.
Used in:
Resource IDs to be kept in master split.
Resource names to be kept in master split.
Used in:
Used in:
The root url for the repository.
Lists the dependencies of a given module.
Used in:
Direct module dependencies. Index is from the pool of libraries defined in AppDependencies.
Used in:
Module name.
Indicates the type of this feature module.
Indicates the delivery type (e.g. on-demand) of the module.
Indicates whether this module is marked "instant".
Names of the modules that this module directly depends on. Each module implicitly depends on the base module.
The targeting that makes a conditional module installed. Relevant only for Split APKs.
Deprecated. Please use delivery_type.
Runtime-enabled SDK dependencies of this module.
Information about the SDK that this module was generated from. Only set for modules with module_type FeatureModuleType.SDK_MODULE.
Targeting on the module level. The semantic of the targeting is the "AND" rule on all immediate values.
Used in:
Used in:
Used in:
, ,Targeting of other sibling directories that were in the Bundle. For master splits this is targeting of other master splits.
Targeting specific for directories under lib/.
Used in:
Describes the native libraries in the App Bundle.
List of all the directories in under "lib/" that contain at least one file.
Used in:
This is for uncompressing native libraries on M+ devices (L+ devices on instant apps).
This is for uncompressing dex files.
Configuration for the generation of standalone APKs. If no StandaloneConfig is set, the configuration is inherited from splits_config.
Optimizations that are applied to resources.
Configuration for archiving the app.
Used in:
Module name.
Next tag: 2
Used in:
,Used in:
A repository for resolving artifacts and metadata.
Used in:
The type of the repository, and any type-specific configuration info.
Used in:
Whether to use sparse encoding for resource tables. Resources in sparse resource table are accessed using a binary search tree. This decreases APK size at the cost of resource retrieval performance.
Optimizations related to collapsed resource names.
Optimizations related to collapsed resource names.
Used in:
Whether to collapse resource names. Resources with collapsed resource names are only accessible by their ids. These names are not stored inside 'resources.arsc'.
Instructs to not collapse resource names for specific resources which makes certain resources to be accessible by their names. Applicable only if 'collapse_resource_names' is 'true'.
Instructs to not collapse all resources of certain types. Applicable only if 'collapse_resource_names' is 'true'.
Whether to store only unique resource entries in 'resources.arsc'. For example if there are 3 'bool' resources defined with 'true' value with this flag only one 'true' entry is stored and all 3 resources are referencing this entry. By default all 3 entries are stored. This only works with resources where names are collapsed (either using 'collapse_resource_names' flag or manually) because resource name is a part of resource entry and if names are preserved - all entries are unique.
Pair of resource type and name, like 'layout/foo', 'string/bar'.
Used in:
Used in:
Disables sparse encoding.
Generates special APKs for Android SDK +32 with sparse resource tables. Devices with Android SDK below 32 will still receive APKs with regular resource tables.
Specifies the config that gets applied to the rotation aspect of the signing process of the App Bundle. Next tag: 3
The SHA256 fingerprint of the expected certificate to sign the APKs generated from the Bundle. Example: FE:C0:E6:5B:F3:76:5D:A1:C2:56:13:C7:A3:60:35:A9:26:BC:3B:3A:39:9B:C8:55:40:F1:6D:55:17:3F:F5:9B
The minimum API level for which an APK's rotated signing key should be used to produce the APK's signature. The original signing key for the APK will be used for all previous platform versions.
Used in:
Package name of the runtime-enabled SDK.
Major version of the runtime-enabled SDK.
Minor version of the runtime-enabled SDK.
Patch version of the runtime-enabled SDK. The dependency on a specific patch version is a build-time soft dependency, that ensures reproducibility of local builds; it does not imply that all app stores will honour it when delivering apps to end-users. For instance, some stores may just honour the dependency on a specific major and minor, while serve the latest available patch for the given major.minor version of the SDK.
SHA-256 hash of the runtime-enabled SDK's signing certificate, represented as a string of bytes in hexadecimal form, with ':' separating the bytes.
Package ID that the resource IDs of this runtime-enabled SDK must be remapped to.
Information about runtime-enabled SDK dependencies of a specific module inside the App Bundle.
Runtime-enabled SDKs in this config.
Describes a runtime-enabled SDK that the app depends on.
Used in:
Package name of the runtime-enabled SDK. Required.
Major version of the runtime-enabled SDK. Required.
Minor version of the runtime-enabled SDK. Required.
Used in:
,The major version of the RE SDK.
The minor version of the RE SDK.
The patch version of the RE SDK.
Used in:
,Used in:
Used in:
Used in:
Used in:
Used in:
,Targeting of other sibling directories that were in the Bundle. For master splits this is targeting of other master splits.
Used in:
Package name of the SDK bundle.
Major version of the SDK bundle.
Minor version of the SDK bundle.
Patch version of the SDK bundle. The dependency on a specific patch version is a build-time soft dependency, that ensures reproducibility of local builds; it does not imply that all app stores will honour it when delivering apps to end-users. For instance, some stores may just honour the dependency on a specific major and minor, while serve the latest available patch for the given major.minor version of the SDK.
SHA-256 hash of the SDK's signing certificate, represented as a string of bytes in hexadecimal form, with ':' separating the bytes.
Whether the dependency is optional or required. Only required dependencies will be included in the final POM file. Unspecified dependency types will be treated as required.
Runtime-enabled SDKs this SDK depends on.
Used in:
The dependency should be installed automatically.
The dependency is only needed at compile time.
Information that uniquely identifies this runtime-enabled SDK version. This will be stored inside the ASAR for an SDK.
Package name of the runtime-enabled SDK.
Version information for the runtime-enabled SDK.
SHA-256 hash of the runtime-enabled SDK's signing certificate, represented as a string of bytes in hexadecimal form, with ':' separating the bytes.
Metadata of the app module generated from a runtime-enabled SDK that the app depends on.
Used in:
Version of the Runtime-enabled SDK that this module was generated from.
Package name of the runtime-enabled SDK that this module was generated from.
Versioning information about the SDK that the app module was generated from.
Used in:
Major version of the SDK. Required.
Minor version of the SDK. Required.
Patch version of the SDK. Required.
Contains the package name and versioning information of the Android SDK Bundle. These are required to generate the installable APKs.
Version of BundleTool used to generate the Android SDK Bundle.
Package name of the runtime-enabled SDK.
Version of the runtime-enabled SDK.
The fully qualified name for the platform SDK provider entrypoint class.
The fully qualified name for the compatibility SDK provider entrypoint class. Expected to be set for SDKs that support devices without the privacy sandbox.
Used in:
Whether runtime-enabled SDKs can run on the device
Variant targeting based on SDK Runtime availability on device.
Used in:
Whether the variant requires SDK Runtime to be available on the device.
Properties that backwards-compatible SDK split inherits from the app.
Package name of the app.
Version code of the app.
minSdkVersion of the app.
Package ID that the SDK resources should be remapped to so that they do not conflict with the app's resources.
Used in:
Inclusive.
Used in:
Major version of the SDK.
Minor version of the SDK.
Patch version of the SDK.
A unique version code assigned to the SDK by the caller of build-sdk-apks.
Used in:
, ,Targeting of other sibling directories that were in the Bundle. For master splits this is targeting of other master splits.
Holds data specific to signing configuration applied on the APKs.
Used in:
Denotes if the generated APK to be signed with the rotated key.
Sizes of the breakdown item: bytes in the APK, and bytes over the wire.
Used in:
Holds data specific to Split APKs.
Used in:
Indicates whether this APK is the master split of the module.
Used in:
,If set to 'true', indicates that APKs should *not* be split by this dimension.
Optional transformation to be applied to asset directories where the targeting is encoded in the directory name (e.g: assets/foo#tcf_etc1)
Used in:
,Optimization configuration used to generate Split APKs.
Used in:
Holds data specific to Standalone APKs.
Used in:
Names of the modules fused in this standalone APK.
Optimization configuration used to generate Standalone APKs.
Used in:
Device targeting dimensions to shard.
Whether 64 bit libraries should be stripped from Standalone APKs.
Dex merging strategy that should be applied to produce Standalone APKs.
Defines how to deal with feature modules in standalone variants (minSdk < 21).
Used in:
Strategy that does dex merging for applications that have minimum SDK below 21 to ensure dex files from all modules are merged into one or mainDexList is applied when merging into one dex is not possible. For applications with minSdk >= 21 dex files from all modules are copied into standalone APK as is because Android supports multiple dex files natively starting from Android 5.0.
Requires to copy dex files from all modules into standalone APK as is. If an application supports SDKs below 21 this strategy puts responsibility of providing dex files compatible with legacy multidex on application developers.
Used in:
Default mode which fuses feature modules with respect to its fusing attribute into base.apk.
Advanced mode, which allows to generate a single separate apk per each feature module in variants with minSdk < 21.
Used in:
Archive is an app state that allows an official app store to reclaim device storage and disable app functionality temporarily until the user interacts with the app again. Upon interaction the latest available version of the app will be restored while leaving user data unaffected. Enabled by default.
Used in:
If set to 'true', indicates that the targeting suffix should be removed from assets paths for this dimension when splits (e.g: "asset packs") or standalone/universal APKs are generated. This only applies to assets. For example a folder with path "assets/level1_textures#tcf_etc1" would be outputted to "assets/level1_textures". File contents are unchanged.
The default suffix to be used for the cases where separate slices can't be generated for this dimension - typically for standalone or universal APKs. This default suffix defines the directories to retain. The others are discarded: standalone/universal APKs will contain only directories targeted at this value for the dimension. If not set or empty, the fallback directory in each directory group will be used (for example, if both "assets/level1_textures#tcf_etc1" and "assets/level1_textures" are present and the default suffix is empty, then only "assets/level1_textures" will be used).
Represents a set of ABIs which must be supported by a single APEX image.
Used in:
Holds data specific to system APKs.
Used in:
Names of the modules fused in this system APK.
Representation of a system feature.
Used in:
,The name of the feature.
An APEX image file in the module that contains targeting information. This information will be used when generating the APK to determine which image it contains.
Used in:
Path to binary protocol buffer file containing apex.proto.ApexBuildInfo with metadata about how the individual APEX filesystem image was built. May be empty if APEX build info was not provided for this image.
An assets directory in the module that contains targeting information. This information will be used when generating the APKs to determine how to best split them.
Used in:
Path of the directory relative to the root of the module. Required.
Targeting of the directory. Required.
A native directory in the module that contains targeting information. This information will be used when generating the APKs to determine how to best split them.
Used in:
Path of the directory relative to the root of the module. Required.
Targeting of the directory. Required.
Used in:
,Used in:
Used in:
, ,Targeting of other sibling directories that were in the Bundle. For master splits this is targeting of other master splits.
Used in:
A new variant with uncompressed dex will be generated. The sdk targeting of the variant is determined by 'uncompressed_dex_target_sdk'.
If 'enabled' field is set, this will determine the sdk targeting of the generated variant.
Used in:
Q+ variant will be generated.
S+ variant will be generated.
Used in:
Used in:
Corresponds to the "name" field in the package.json, uniquely identifying the library.
Corresponds to the "version" field in the package.json file of the version of the library actually compiled in the app.
Used in:
The root url for the repository.
Used in:
Path to the APK inside the module (e.g. if the path inside the bundle is split/assets/example.apk, this will be assets/example.apk).
User Countries targeting describing an inclusive/exclusive list of country codes that module targets.
Used in:
List of country codes in the two-letter CLDR territory format.
Indicates if the list above is exclusive.
A set of user countries. A country set determines what variation of app content gets served to a specific location.
Used in:
Country set name.
List of country codes representing countries. A Country code is represented in ISO 3166 alpha-2 format. For Example:- "IT" for Italy, "GE" for Georgia.
Variant is a group of APKs that covers a part of the device configuration space. APKs from multiple variants are never combined on one device.
Used in:
,Variant-level targeting. This targeting is fairly high-level and each APK has its own targeting as well.
Set of APKs, one set per module.
Number of the variant, starting at 0 (unless overridden). A device will receive APKs from the first variant that matches the device configuration, with higher variant numbers having priority over lower variant numbers.
Extra information about the variant e.g. has uncompressed dex files or uncompressed native libraries
Describes properties of a variant
Used in:
Variant has uncompressed dex files
Variant has uncompressed native libraries
Variant has sparse encoded resource tables
Targeting on the level of variants.
Used in: