1 /* 2 ** 3 ** Copyright 2008, The Android Open Source Project 4 ** 5 ** Licensed under the Apache License, Version 2.0 (the "License"); 6 ** you may not use this file except in compliance with the License. 7 ** You may obtain a copy of the License at 8 ** 9 ** http://www.apache.org/licenses/LICENSE-2.0 10 ** 11 ** Unless required by applicable law or agreed to in writing, software 12 ** distributed under the License is distributed on an "AS IS" BASIS, 13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 ** See the License for the specific language governing permissions and 15 ** limitations under the License. 16 */ 17 18 #ifndef INSTALLD_CONSTANTS_H_ 19 #define INSTALLD_CONSTANTS_H_ 20 21 #include "cutils/multiuser.h" 22 23 namespace android { 24 namespace installd { 25 26 /* elements combined with a valid package name to form paths */ 27 28 constexpr const char* PRIMARY_USER_PREFIX = "data/"; 29 constexpr const char* SECONDARY_USER_PREFIX = "user/"; 30 31 // This is used as a string literal, can't be constants. TODO: std::string... 32 #define DALVIK_CACHE "dalvik-cache" 33 constexpr const char* DALVIK_CACHE_POSTFIX = "@classes.dex"; 34 35 constexpr size_t PKG_NAME_MAX = 128u; /* largest allowed package name */ 36 constexpr size_t PKG_PATH_MAX = 1024u; /* max size of any path we use */ 37 38 /**************************************************************************** 39 * IMPORTANT: These values are passed from Java code. Keep them in sync with 40 * frameworks/base/services/core/java/com/android/server/pm/Installer.java 41 ***************************************************************************/ 42 constexpr int DEXOPT_PUBLIC = 1 << 1; 43 constexpr int DEXOPT_DEBUGGABLE = 1 << 2; 44 constexpr int DEXOPT_BOOTCOMPLETE = 1 << 3; 45 constexpr int DEXOPT_PROFILE_GUIDED = 1 << 4; 46 constexpr int DEXOPT_SECONDARY_DEX = 1 << 5; 47 // DEXOPT_FORCE, DEXOPT_STORAGE_CE, DEXOPT_STORAGE_DE are exposed for secondary 48 // dex files only. Primary apks are analyzed in PackageManager and installd 49 // does not need to know if the compilation is forced or on what kind of storage 50 // the dex files are. 51 constexpr int DEXOPT_FORCE = 1 << 6; 52 constexpr int DEXOPT_STORAGE_CE = 1 << 7; 53 constexpr int DEXOPT_STORAGE_DE = 1 << 8; 54 // Tells the compiler that it is invoked from the background service. This 55 // controls whether extra debugging flags can be used (taking more compile time.) 56 constexpr int DEXOPT_IDLE_BACKGROUND_JOB = 1 << 9; 57 constexpr int DEXOPT_ENABLE_HIDDEN_API_CHECKS = 1 << 10; 58 constexpr int DEXOPT_GENERATE_COMPACT_DEX = 1 << 11; 59 constexpr int DEXOPT_GENERATE_APP_IMAGE = 1 << 12; 60 constexpr int DEXOPT_FOR_RESTORE = 1 << 13; // TODO(b/135202722): remove 61 62 /* all known values for dexopt flags */ 63 constexpr int DEXOPT_MASK = 64 DEXOPT_PUBLIC 65 | DEXOPT_DEBUGGABLE 66 | DEXOPT_BOOTCOMPLETE 67 | DEXOPT_PROFILE_GUIDED 68 | DEXOPT_SECONDARY_DEX 69 | DEXOPT_FORCE 70 | DEXOPT_STORAGE_CE 71 | DEXOPT_STORAGE_DE 72 | DEXOPT_IDLE_BACKGROUND_JOB 73 | DEXOPT_ENABLE_HIDDEN_API_CHECKS 74 | DEXOPT_GENERATE_COMPACT_DEX 75 | DEXOPT_GENERATE_APP_IMAGE 76 | DEXOPT_FOR_RESTORE; 77 78 // NOTE: keep in sync with StorageManager 79 constexpr int FLAG_STORAGE_DE = 1 << 0; 80 constexpr int FLAG_STORAGE_CE = 1 << 1; 81 82 // TODO: import them from dexoptanalyzer.h 83 // NOTE: keep in sync with Installer.java 84 constexpr int PROFILES_ANALYSIS_OPTIMIZE = 1; 85 constexpr int PROFILES_ANALYSIS_DONT_OPTIMIZE_SMALL_DELTA = 2; 86 constexpr int PROFILES_ANALYSIS_DONT_OPTIMIZE_EMPTY_PROFILES = 3; 87 88 // NOTE: keep in sync with Installer.java 89 constexpr int ODEX_NOT_FOUND = 0; 90 constexpr int ODEX_IS_PUBLIC = 1; 91 constexpr int ODEX_IS_PRIVATE = 2; 92 93 // NOTE: keep in sync with UserHandle.java 94 constexpr userid_t USER_NULL = -10000; 95 constexpr userid_t USER_SYSTEM = 0; 96 97 #define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a))) 98 99 } // namespace installd 100 } // namespace android 101 102 #endif // INSTALLD_CONSTANTS_H_ 103