xref: /aosp_15_r20/system/apex/apexd/apex_constants.h (revision 33f3758387333dbd2962d7edbd98681940d895da)
1*33f37583SAndroid Build Coastguard Worker /*
2*33f37583SAndroid Build Coastguard Worker  * Copyright (C) 2019 The Android Open Source Project
3*33f37583SAndroid Build Coastguard Worker  *
4*33f37583SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*33f37583SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*33f37583SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*33f37583SAndroid Build Coastguard Worker  *
8*33f37583SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*33f37583SAndroid Build Coastguard Worker  *
10*33f37583SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*33f37583SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*33f37583SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*33f37583SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*33f37583SAndroid Build Coastguard Worker  * limitations under the License.
15*33f37583SAndroid Build Coastguard Worker  */
16*33f37583SAndroid Build Coastguard Worker 
17*33f37583SAndroid Build Coastguard Worker #pragma once
18*33f37583SAndroid Build Coastguard Worker 
19*33f37583SAndroid Build Coastguard Worker #include <chrono>
20*33f37583SAndroid Build Coastguard Worker #include <string>
21*33f37583SAndroid Build Coastguard Worker #include <unordered_map>
22*33f37583SAndroid Build Coastguard Worker #include <unordered_set>
23*33f37583SAndroid Build Coastguard Worker #include <vector>
24*33f37583SAndroid Build Coastguard Worker 
25*33f37583SAndroid Build Coastguard Worker namespace android {
26*33f37583SAndroid Build Coastguard Worker namespace apex {
27*33f37583SAndroid Build Coastguard Worker 
28*33f37583SAndroid Build Coastguard Worker enum class ApexPartition { System, SystemExt, Product, Vendor, Odm };
29*33f37583SAndroid Build Coastguard Worker 
30*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexDataDir = "/data/apex";
31*33f37583SAndroid Build Coastguard Worker static constexpr const char* kActiveApexPackagesDataDir = "/data/apex/active";
32*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexBackupDir = "/data/apex/backup";
33*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexDecompressedDir = "/data/apex/decompressed";
34*33f37583SAndroid Build Coastguard Worker static constexpr const char* kOtaReservedDir = "/data/apex/ota_reserved";
35*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexPackageSystemDir = "/system/apex";
36*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexPackageSystemExtDir = "/system_ext/apex";
37*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexPackageProductDir = "/product/apex";
38*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexPackageVendorDir = "/vendor/apex";
39*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexPackageOdmDir = "/odm/apex";
40*33f37583SAndroid Build Coastguard Worker static const std::unordered_map<ApexPartition, std::string>
41*33f37583SAndroid Build Coastguard Worker     kBuiltinApexPackageDirs = {
42*33f37583SAndroid Build Coastguard Worker         {ApexPartition::System, kApexPackageSystemDir},
43*33f37583SAndroid Build Coastguard Worker         {ApexPartition::SystemExt, kApexPackageSystemExtDir},
44*33f37583SAndroid Build Coastguard Worker         {ApexPartition::Product, kApexPackageProductDir},
45*33f37583SAndroid Build Coastguard Worker         {ApexPartition::Vendor, kApexPackageVendorDir},
46*33f37583SAndroid Build Coastguard Worker         {ApexPartition::Odm, kApexPackageOdmDir},
47*33f37583SAndroid Build Coastguard Worker };
48*33f37583SAndroid Build Coastguard Worker static const std::vector<std::string> kApexPackageBuiltinDirs = {
49*33f37583SAndroid Build Coastguard Worker     kApexPackageSystemDir, kApexPackageSystemExtDir, kApexPackageProductDir,
50*33f37583SAndroid Build Coastguard Worker     kApexPackageVendorDir, kApexPackageOdmDir};
51*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexRoot = "/apex";
52*33f37583SAndroid Build Coastguard Worker static constexpr const char* kStagedSessionsDir = "/data/app-staging";
53*33f37583SAndroid Build Coastguard Worker 
54*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexDataSubDir = "apexdata";
55*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexSharedLibsSubDir = "sharedlibs";
56*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexSnapshotSubDir = "apexrollback";
57*33f37583SAndroid Build Coastguard Worker static constexpr const char* kPreRestoreSuffix = "-prerestore";
58*33f37583SAndroid Build Coastguard Worker 
59*33f37583SAndroid Build Coastguard Worker static constexpr const char* kDeSysDataDir = "/data/misc";
60*33f37583SAndroid Build Coastguard Worker static constexpr const char* kDeNDataDir = "/data/misc_de";
61*33f37583SAndroid Build Coastguard Worker static constexpr const char* kCeDataDir = "/data/misc_ce";
62*33f37583SAndroid Build Coastguard Worker 
63*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexPackageSuffix = ".apex";
64*33f37583SAndroid Build Coastguard Worker static constexpr const char* kCompressedApexPackageSuffix = ".capex";
65*33f37583SAndroid Build Coastguard Worker static constexpr const char* kDecompressedApexPackageSuffix =
66*33f37583SAndroid Build Coastguard Worker     ".decompressed.apex";
67*33f37583SAndroid Build Coastguard Worker static constexpr const char* kOtaApexPackageSuffix = ".ota.apex";
68*33f37583SAndroid Build Coastguard Worker 
69*33f37583SAndroid Build Coastguard Worker static constexpr const char* kManifestFilenameJson = "apex_manifest.json";
70*33f37583SAndroid Build Coastguard Worker static constexpr const char* kManifestFilenamePb = "apex_manifest.pb";
71*33f37583SAndroid Build Coastguard Worker 
72*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexInfoList = "apex-info-list.xml";
73*33f37583SAndroid Build Coastguard Worker 
74*33f37583SAndroid Build Coastguard Worker // These should be in-sync with system/sepolicy/private/property_contexts
75*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexStatusSysprop = "apexd.status";
76*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexStatusStarting = "starting";
77*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexStatusActivated = "activated";
78*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexStatusReady = "ready";
79*33f37583SAndroid Build Coastguard Worker 
80*33f37583SAndroid Build Coastguard Worker static constexpr const char* kMultiApexSelectPersistPrefix =
81*33f37583SAndroid Build Coastguard Worker     "persist.vendor.apex.";
82*33f37583SAndroid Build Coastguard Worker static constexpr const char* kMultiApexSelectBootconfigPrefix =
83*33f37583SAndroid Build Coastguard Worker     "ro.boot.vendor.apex.";
84*33f37583SAndroid Build Coastguard Worker static const std::vector<std::string> kMultiApexSelectPrefix = {
85*33f37583SAndroid Build Coastguard Worker     // Check persist props first, to allow users to override bootconfig.
86*33f37583SAndroid Build Coastguard Worker     kMultiApexSelectPersistPrefix,
87*33f37583SAndroid Build Coastguard Worker     kMultiApexSelectBootconfigPrefix,
88*33f37583SAndroid Build Coastguard Worker };
89*33f37583SAndroid Build Coastguard Worker 
90*33f37583SAndroid Build Coastguard Worker static constexpr const char* kVmPayloadMetadataPartitionProp =
91*33f37583SAndroid Build Coastguard Worker     "apexd.payload_metadata.path";
92*33f37583SAndroid Build Coastguard Worker static constexpr const std::chrono::seconds kBlockApexWaitTime(10);
93*33f37583SAndroid Build Coastguard Worker 
94*33f37583SAndroid Build Coastguard Worker static constexpr const char* kApexAllReadyProp = "apex.all.ready";
95*33f37583SAndroid Build Coastguard Worker static constexpr const char* kCtlApexLoadSysprop = "ctl.apex_load";
96*33f37583SAndroid Build Coastguard Worker static constexpr const char* kCtlApexUnloadSysprop = "ctl.apex_unload";
97*33f37583SAndroid Build Coastguard Worker 
98*33f37583SAndroid Build Coastguard Worker // Constants for brand-new APEX
99*33f37583SAndroid Build Coastguard Worker static constexpr const char* kBrandNewApexPublicKeySuffix = ".avbpubkey";
100*33f37583SAndroid Build Coastguard Worker static constexpr const char* kBrandNewApexBlocklistFileName = "blocklist.json";
101*33f37583SAndroid Build Coastguard Worker static constexpr const char* kBrandNewApexConfigSystemDir =
102*33f37583SAndroid Build Coastguard Worker     "/system/etc/brand_new_apex";
103*33f37583SAndroid Build Coastguard Worker static constexpr const char* kBrandNewApexConfigSystemExtDir =
104*33f37583SAndroid Build Coastguard Worker     "/system_ext/etc/brand_new_apex";
105*33f37583SAndroid Build Coastguard Worker static constexpr const char* kBrandNewApexConfigProductDir =
106*33f37583SAndroid Build Coastguard Worker     "/product/etc/brand_new_apex";
107*33f37583SAndroid Build Coastguard Worker static constexpr const char* kBrandNewApexConfigVendorDir =
108*33f37583SAndroid Build Coastguard Worker     "/vendor/etc/brand_new_apex";
109*33f37583SAndroid Build Coastguard Worker static constexpr const char* kBrandNewApexConfigOdmDir =
110*33f37583SAndroid Build Coastguard Worker     "/odm/etc/brand_new_apex";
111*33f37583SAndroid Build Coastguard Worker static const std::unordered_map<ApexPartition, std::string>
112*33f37583SAndroid Build Coastguard Worker     kPartitionToBrandNewApexConfigDirs = {
113*33f37583SAndroid Build Coastguard Worker         {ApexPartition::System, kBrandNewApexConfigSystemDir},
114*33f37583SAndroid Build Coastguard Worker         {ApexPartition::SystemExt, kBrandNewApexConfigSystemExtDir},
115*33f37583SAndroid Build Coastguard Worker         {ApexPartition::Product, kBrandNewApexConfigProductDir},
116*33f37583SAndroid Build Coastguard Worker         {ApexPartition::Vendor, kBrandNewApexConfigVendorDir},
117*33f37583SAndroid Build Coastguard Worker         {ApexPartition::Odm, kBrandNewApexConfigOdmDir},
118*33f37583SAndroid Build Coastguard Worker };
119*33f37583SAndroid Build Coastguard Worker 
120*33f37583SAndroid Build Coastguard Worker // Banned APEX names
121*33f37583SAndroid Build Coastguard Worker static const std::unordered_set<std::string> kBannedApexName = {
122*33f37583SAndroid Build Coastguard Worker     kApexSharedLibsSubDir,  // To avoid conflicts with predefined
123*33f37583SAndroid Build Coastguard Worker                             // /apex/sharedlibs directory
124*33f37583SAndroid Build Coastguard Worker };
125*33f37583SAndroid Build Coastguard Worker }  // namespace apex
126*33f37583SAndroid Build Coastguard Worker }  // namespace android
127