4591b6496d
Major operations: * Fix the go_package entries to be consistent, as the new tool complains when it doesn't have a '/'. * Regenerate with the new protoc-gen-go tool. * github.com/golang/protobuf -> google.golang.org/protobuf * proto.[Un]MarshalText -> prototext.[Un]Marshal Change-Id: Ie1147bd2457fafb66ba555461b3bf14f0561a25d
197 lines
5.5 KiB
Protocol Buffer
197 lines
5.5 KiB
Protocol Buffer
// 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;
|
|
}
|