| // Messages describing APK Set's table of contents (toc.pb entry). |
| // Please be advised that the ultimate source is at |
| // https://github.com/google/bundletool/tree/master/src/main/proto |
| // so you have been warned. |
| syntax = "proto3"; |
| |
| package android.bundle; |
| |
| import "config.proto"; |
| import "targeting.proto"; |
| |
| option go_package = "android/soong/cmd/extract_apks/bundle_proto"; |
| option java_package = "com.android.bundle"; |
| |
| // Describes the output of the "build-apks" command. |
| message BuildApksResult { |
| // The package name of this app. |
| string package_name = 4; |
| |
| // List of the created variants. |
| repeated Variant variant = 1; |
| |
| // Metadata about BundleTool used to build the APKs. |
| Bundletool bundletool = 2; |
| |
| // List of the created asset slices. |
| repeated AssetSliceSet asset_slice_set = 3; |
| |
| // Information about local testing mode. |
| LocalTestingInfo local_testing_info = 5; |
| } |
| |
| // 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. |
| message Variant { |
| // Variant-level targeting. |
| // This targeting is fairly high-level and each APK has its own targeting as |
| // well. |
| VariantTargeting targeting = 1; |
| |
| // Set of APKs, one set per module. |
| repeated ApkSet apk_set = 2; |
| |
| // 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. |
| uint32 variant_number = 3; |
| } |
| |
| // Represents a module. |
| // For pre-L devices multiple modules (possibly all) may be merged into one. |
| message ApkSet { |
| ModuleMetadata module_metadata = 1; |
| |
| // APKs. |
| repeated ApkDescription apk_description = 2; |
| } |
| |
| message ModuleMetadata { |
| // Module name. |
| string name = 1; |
| |
| // Indicates the delivery type (e.g. on-demand) of the module. |
| DeliveryType delivery_type = 6; |
| |
| // Indicates whether this module is marked "instant". |
| bool is_instant = 3; |
| |
| // Names of the modules that this module directly depends on. |
| // Each module implicitly depends on the base module. |
| repeated string dependencies = 4; |
| |
| // The targeting that makes a conditional module installed. |
| // Relevant only for Split APKs. |
| ModuleTargeting targeting = 5; |
| |
| // Deprecated. Please use delivery_type. |
| bool on_demand_deprecated = 2 [deprecated = true]; |
| } |
| |
| // Set of asset slices belonging to a single asset module. |
| message AssetSliceSet { |
| // Module level metadata. |
| AssetModuleMetadata asset_module_metadata = 1; |
| |
| // Asset slices. |
| repeated ApkDescription apk_description = 2; |
| } |
| |
| message AssetModuleMetadata { |
| // Module name. |
| string name = 1; |
| |
| // Indicates the delivery type for persistent install. |
| DeliveryType delivery_type = 4; |
| |
| // Metadata for instant installs. |
| InstantMetadata instant_metadata = 3; |
| |
| // Deprecated. Use delivery_type. |
| bool on_demand_deprecated = 2 [deprecated = true]; |
| } |
| |
| message InstantMetadata { |
| // Indicates whether this module is marked "instant". |
| bool is_instant = 1; |
| |
| // Indicates the delivery type for instant install. |
| DeliveryType delivery_type = 3; |
| |
| // Deprecated. Use delivery_type. |
| bool on_demand_deprecated = 2 [deprecated = true]; |
| } |
| |
| enum DeliveryType { |
| UNKNOWN_DELIVERY_TYPE = 0; |
| INSTALL_TIME = 1; |
| ON_DEMAND = 2; |
| FAST_FOLLOW = 3; |
| } |
| |
| message ApkDescription { |
| ApkTargeting targeting = 1; |
| |
| // Path to the APK file. |
| // BEGIN-INTERNAL |
| // The path may be a blobkey if the proto is not constructed by bundletool. |
| // END-INTERNAL |
| string path = 2; |
| |
| oneof apk_metadata_oneof_value { |
| // Set only for Split APKs. |
| SplitApkMetadata split_apk_metadata = 3; |
| // Set only for standalone APKs. |
| StandaloneApkMetadata standalone_apk_metadata = 4; |
| // Set only for Instant split APKs. |
| SplitApkMetadata instant_apk_metadata = 5; |
| // Set only for system APKs. |
| SystemApkMetadata system_apk_metadata = 6; |
| // Set only for asset slices. |
| SplitApkMetadata asset_slice_metadata = 7; |
| // Set only for APEX APKs. |
| ApexApkMetadata apex_apk_metadata = 8; |
| } |
| } |
| |
| // Holds data specific to Split APKs. |
| message SplitApkMetadata { |
| string split_id = 1; |
| |
| // Indicates whether this APK is the master split of the module. |
| bool is_master_split = 2; |
| } |
| |
| // Holds data specific to Standalone APKs. |
| message StandaloneApkMetadata { |
| // Names of the modules fused in this standalone APK. |
| repeated string fused_module_name = 1; |
| |
| reserved 2; |
| } |
| |
| // Holds data specific to system APKs. |
| message SystemApkMetadata { |
| // Names of the modules fused in this system APK. |
| repeated string fused_module_name = 1; |
| enum SystemApkType { |
| UNSPECIFIED_VALUE = 0; |
| // Uncompressed APK for system image. |
| SYSTEM = 1; |
| // Stub APK for compressed APK in the system image |
| // (contains only android manifest). |
| SYSTEM_STUB = 2; |
| // Compressed APK for system image. |
| SYSTEM_COMPRESSED = 3; |
| } |
| // Indicates whether the APK is uncompressed system APK, stub APK or |
| // compressed system APK. |
| SystemApkType system_apk_type = 2; |
| } |
| |
| // Holds data specific to APEX APKs. |
| message ApexApkMetadata { |
| // Configuration for processing of APKs embedded in an APEX image. |
| repeated ApexEmbeddedApkConfig apex_embedded_apk_config = 1; |
| } |
| |
| message LocalTestingInfo { |
| // Indicates if the bundle is built in local testing mode. |
| bool enabled = 1; |
| // 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. |
| string local_testing_path = 2; |
| } |