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