File: config.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 (162 lines) | stat: -rw-r--r-- 5,240 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
// 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;

option go_package = "android_bundle_proto";
option java_package = "com.android.bundle";

message BundleConfig {
  Bundletool bundletool = 1;
  Optimizations optimizations = 2;
  Compression compression = 3;
  // Resources to be always kept in the master split.
  MasterResources master_resources = 4;
  ApexConfig apex_config = 5;
  // APKs to be signed with the same key as generated APKs.
  repeated UnsignedEmbeddedApkConfig unsigned_embedded_apk_config = 6;
  AssetModulesConfig asset_modules_config = 7;

  enum BundleType {
    REGULAR = 0;
    APEX = 1;
    ASSET_ONLY = 2;
  }
  BundleType type = 8;
}

message Bundletool {
  reserved 1;
  // Version of BundleTool used to build the Bundle.
  string version = 2;
}

message Compression {
  // 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.
  repeated string uncompressed_glob = 1;
}

// Resources to keep in the master split.
message MasterResources {
  // Resource IDs to be kept in master split.
  repeated int32 resource_ids = 1;
  // Resource names to be kept in master split.
  repeated string resource_names = 2;
}

message Optimizations {
  SplitsConfig splits_config = 1;
  // This is for uncompressing native libraries on M+ devices (L+ devices on
  // instant apps).
  UncompressNativeLibraries uncompress_native_libraries = 2;
  // This is for uncompressing dex files on P+ devices.
  UncompressDexFiles uncompress_dex_files = 3;
  // Configuration for the generation of standalone APKs.
  // If no StandaloneConfig is set, the configuration is inherited from
  // splits_config.
  StandaloneConfig standalone_config = 4;
}

message UncompressNativeLibraries {
  bool enabled = 1;
}

message UncompressDexFiles {
  bool enabled = 1;
}

// Optimization configuration used to generate Split APKs.
message SplitsConfig {
  repeated SplitDimension split_dimension = 1;
}

// Optimization configuration used to generate Standalone APKs.
message StandaloneConfig {
  // Device targeting dimensions to shard.
  repeated SplitDimension split_dimension = 1;
  // Whether 64 bit libraries should be stripped from Standalone APKs.
  bool strip_64_bit_libraries = 2;
}

message SplitDimension {
  enum Value {
    UNSPECIFIED_VALUE = 0;
    ABI = 1;
    SCREEN_DENSITY = 2;
    LANGUAGE = 3;
    TEXTURE_COMPRESSION_FORMAT = 4;
    // BEGIN-INTERNAL
    GRAPHICS_API = 5;
    // END-INTERNAL
  }
  Value value = 1;

  // If set to 'true', indicates that APKs should *not* be split by this
  // dimension.
  bool negate = 2;

  // Optional transformation to be applied to asset directories where
  // the targeting is encoded in the directory name (e.g: assets/foo#tcf_etc1)
  SuffixStripping suffix_stripping = 3;
}

message SuffixStripping {
  // If set to 'true', indicates that the targeting suffix should be removed
  // from assets paths for this dimension when splits (or asset slices) 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.
  bool enabled = 1;

  // The default suffix to be used for the cases where separate slices can't
  // be generated for this dimension. In the case of standalone/universal APKs
  // generation, stripping the suffix can lead to file name collisions. 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).
  string default_suffix = 2;
}

// Configuration for processing APEX bundles.
// https://source.android.com/devices/tech/ota/apex
message ApexConfig {
  // Configuration for processing of APKs embedded in an APEX image.
  repeated ApexEmbeddedApkConfig apex_embedded_apk_config = 1;
}

message ApexEmbeddedApkConfig {
  // Android package name of the APK.
  string package_name = 1;

  // Path to the APK within the APEX system image.
  string path = 2;
}

message UnsignedEmbeddedApkConfig {
  // 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).
  string path = 1;
}

message AssetModulesConfig {
  // App versionCodes that will be updated with these asset modules.
  // Only relevant for asset-only bundles.
  repeated int64 app_version = 1;

  // Version tag for the asset upload.
  // Only relevant for asset-only bundles.
  string asset_version_tag = 2;
}