File: commands.proto

package info (click to toggle)
golang-android-soong 0.0~git20201014.17e97d9-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 7,640 kB
  • sloc: python: 3,000; sh: 1,780; cpp: 66; makefile: 5
file content (197 lines) | stat: -rw-r--r-- 5,630 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
// 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_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;
}