blob: eeda6c58553c5e8c2b9679945a83c442af74d5e2 [file] [log] [blame]
Jeff Sharkey90874002016-12-05 11:18:55 -07001/*
2 * Copyright (C) 2016 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
17package android.os;
18
Jeff Sharkey6c2c0562016-12-07 12:12:00 -070019/** {@hide} */
Jeff Sharkey90874002016-12-05 11:18:55 -070020interface IInstalld {
Jeff Sharkeyc1e93e72016-12-05 23:39:32 -070021 void createUserData(@nullable @utf8InCpp String uuid, int userId, int userSerial, int flags);
22 void destroyUserData(@nullable @utf8InCpp String uuid, int userId, int flags);
23
Jeff Sharkey36a900a2016-12-19 16:39:18 -070024 long createAppData(@nullable @utf8InCpp String uuid, in @utf8InCpp String packageName,
Jeff Sharkey0274c972016-12-06 09:32:04 -070025 int userId, int flags, int appId, in @utf8InCpp String seInfo, int targetSdkVersion);
Ben Murdoch872d2af2020-04-15 12:46:23 +010026 long createAppDataBatched(in @nullable @utf8InCpp String[] uuids,
27 in @nullable @utf8InCpp String[] packageNames, in int userId, int flags, in int[] appIds,
28 in @utf8InCpp String[] seInfos, in int[] targetSdkVersions);
Jeff Sharkeyc1e93e72016-12-05 23:39:32 -070029 void restoreconAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName,
30 int userId, int flags, int appId, @utf8InCpp String seInfo);
31 void migrateAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName,
32 int userId, int flags);
33 void clearAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName,
34 int userId, int flags, long ceDataInode);
35 void destroyAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName,
36 int userId, int flags, long ceDataInode);
Jeff Sharkeydf2d7542017-01-07 09:19:35 -070037
Jeff Sharkeye12d5962017-04-03 16:41:02 -060038 void fixupAppData(@nullable @utf8InCpp String uuid, int flags);
39
Jeff Sharkeydf2d7542017-01-07 09:19:35 -070040 long[] getAppSize(@nullable @utf8InCpp String uuid, in @utf8InCpp String[] packageNames,
41 int userId, int flags, int appId, in long[] ceDataInodes,
42 in @utf8InCpp String[] codePaths);
43 long[] getUserSize(@nullable @utf8InCpp String uuid, int userId, int flags, in int[] appIds);
Jeff Sharkeya084fcd2017-04-17 16:44:41 -060044 long[] getExternalSize(@nullable @utf8InCpp String uuid, int userId, int flags, in int[] appIds);
Jeff Sharkeyc1e93e72016-12-05 23:39:32 -070045
Felka Chang2a0a2462019-11-20 14:20:40 +080046 @nullable
47 android.os.storage.CrateMetadata[] getAppCrates(
48 @nullable @utf8InCpp String uuid, in @utf8InCpp String[] packageNames,
49 int userId);
50 @nullable
51 android.os.storage.CrateMetadata[] getUserCrates(
52 @nullable @utf8InCpp String uuid, int userId);
53
Jeff Sharkey88ddd942017-01-17 18:05:54 -070054 void setAppQuota(@nullable @utf8InCpp String uuid, int userId, int appId, long cacheQuota);
55
Jeff Sharkey0274c972016-12-06 09:32:04 -070056 void moveCompleteApp(@nullable @utf8InCpp String fromUuid, @nullable @utf8InCpp String toUuid,
Songchun Fandc2083f2020-02-18 17:45:46 -080057 @utf8InCpp String packageName, int appId,
Songchun Fanaed33372020-02-05 12:02:22 -080058 @utf8InCpp String seInfo, int targetSdkVersion, @utf8InCpp String fromCodePath);
Jeff Sharkey475c6f92016-12-07 10:37:27 -070059
Jeff Sharkey6c2c0562016-12-07 12:12:00 -070060 void dexopt(@utf8InCpp String apkPath, int uid, @nullable @utf8InCpp String packageName,
61 @utf8InCpp String instructionSet, int dexoptNeeded,
62 @nullable @utf8InCpp String outputPath, int dexFlags,
63 @utf8InCpp String compilerFilter, @nullable @utf8InCpp String uuid,
Calin Juravlecb556e32017-04-04 20:22:50 -070064 @nullable @utf8InCpp String sharedLibraries,
Calin Juravle562de812018-01-20 23:34:18 -080065 @nullable @utf8InCpp String seInfo, boolean downgrade, int targetSdkVersion,
Calin Juravlecc3b8ae2018-02-01 17:03:23 +000066 @nullable @utf8InCpp String profileName,
Calin Juravledcccd832018-02-13 18:31:32 -080067 @nullable @utf8InCpp String dexMetadataPath,
68 @nullable @utf8InCpp String compilationReason);
Eric Holk0ebbe0f2019-01-09 18:17:27 -080069 boolean compileLayouts(@utf8InCpp String apkPath, @utf8InCpp String packageName,
70 @utf8InCpp String outDexFile, int uid);
Jeff Sharkey6c2c0562016-12-07 12:12:00 -070071
Jeff Sharkey475c6f92016-12-07 10:37:27 -070072 void rmdex(@utf8InCpp String codePath, @utf8InCpp String instructionSet);
73
Calin Juravle562de812018-01-20 23:34:18 -080074 boolean mergeProfiles(int uid, @utf8InCpp String packageName, @utf8InCpp String profileName);
75 boolean dumpProfiles(int uid, @utf8InCpp String packageName, @utf8InCpp String profileName,
76 @utf8InCpp String codePath);
Mathieu Chartierf966f2a2017-05-10 12:48:37 -070077 boolean copySystemProfile(@utf8InCpp String systemProfile, int uid,
Calin Juravle562de812018-01-20 23:34:18 -080078 @utf8InCpp String packageName, @utf8InCpp String profileName);
79 void clearAppProfiles(@utf8InCpp String packageName, @utf8InCpp String profileName);
Jeff Sharkey475c6f92016-12-07 10:37:27 -070080 void destroyAppProfiles(@utf8InCpp String packageName);
81
Calin Juravlec41dac22017-12-05 12:29:15 -080082 boolean createProfileSnapshot(int appId, @utf8InCpp String packageName,
Calin Juravlee61189e2018-01-23 19:54:11 -080083 @utf8InCpp String profileName, @utf8InCpp String classpath);
Calin Juravle562de812018-01-20 23:34:18 -080084 void destroyProfileSnapshot(@utf8InCpp String packageName, @utf8InCpp String profileName);
Calin Juravle29591732017-11-20 17:46:19 -080085
Jeff Sharkey475c6f92016-12-07 10:37:27 -070086 void rmPackageDir(@utf8InCpp String packageDir);
Jeff Sharkey60f8a532017-05-30 14:38:42 -060087 void freeCache(@nullable @utf8InCpp String uuid, long targetFreeBytes,
88 long cacheReservedBytes, int flags);
Jeff Sharkey475c6f92016-12-07 10:37:27 -070089 void linkNativeLibraryDirectory(@nullable @utf8InCpp String uuid,
90 @utf8InCpp String packageName, @utf8InCpp String nativeLibPath32, int userId);
91 void createOatDir(@utf8InCpp String oatDir, @utf8InCpp String instructionSet);
92 void linkFile(@utf8InCpp String relativePath, @utf8InCpp String fromBase,
93 @utf8InCpp String toBase);
94 void moveAb(@utf8InCpp String apkPath, @utf8InCpp String instructionSet,
95 @utf8InCpp String outputPath);
96 void deleteOdex(@utf8InCpp String apkPath, @utf8InCpp String instructionSet,
Andreas Gampec5234092017-05-31 16:39:58 -070097 @nullable @utf8InCpp String outputPath);
Victor Hsieh18ac0272018-03-12 16:03:02 -070098 void installApkVerity(@utf8InCpp String filePath, in FileDescriptor verityInput,
99 int contentSize);
Victor Hsiehc6d738a2018-01-20 15:06:39 -0800100 void assertFsverityRootHashMatches(@utf8InCpp String filePath, in byte[] expectedHash);
Jeff Sharkey66b1a122017-01-16 20:57:45 -0700101
Calin Juravlebd968362017-01-25 01:17:17 -0800102 boolean reconcileSecondaryDexFile(@utf8InCpp String dexPath, @utf8InCpp String pkgName,
103 int uid, in @utf8InCpp String[] isas, @nullable @utf8InCpp String volume_uuid,
104 int storage_flag);
105
Alan Stokes753dc712017-10-16 10:56:00 +0100106 byte[] hashSecondaryDexFile(@utf8InCpp String dexPath, @utf8InCpp String pkgName,
107 int uid, @nullable @utf8InCpp String volumeUuid, int storageFlag);
108
Jeff Sharkey66b1a122017-01-16 20:57:45 -0700109 void invalidateMounts();
Jeff Sharkey325b8c92017-02-21 10:00:53 -0700110 boolean isQuotaSupported(@nullable @utf8InCpp String uuid);
Calin Juravlebc5ab872018-01-18 22:32:58 -0800111
112 boolean prepareAppProfile(@utf8InCpp String packageName,
113 int userId, int appId, @utf8InCpp String profileName, @utf8InCpp String codePath,
114 @nullable @utf8InCpp String dexMetadata);
Jeff Sharkey5cb0b1a2018-08-24 17:25:50 -0600115
Nikita Ioffe77be2ed2019-01-25 13:54:43 +0000116 long snapshotAppData(@nullable @utf8InCpp String uuid, in @utf8InCpp String packageName,
Nikita Ioffeb68f0d12019-02-04 11:06:37 +0000117 int userId, int snapshotId, int storageFlags);
Narayan Kamathe63ca7d2019-01-14 15:21:52 +0000118 void restoreAppDataSnapshot(@nullable @utf8InCpp String uuid, in @utf8InCpp String packageName,
Nikita Ioffeb68f0d12019-02-04 11:06:37 +0000119 int appId, @utf8InCpp String seInfo, int user, int snapshotId, int storageflags);
Nikita Ioffe77be2ed2019-01-25 13:54:43 +0000120 void destroyAppDataSnapshot(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName,
Nikita Ioffeb68f0d12019-02-04 11:06:37 +0000121 int userId, long ceSnapshotInode, int snapshotId, int storageFlags);
Oli Lan23839622020-03-16 18:18:41 +0000122 void destroyCeSnapshotsNotSpecified(@nullable @utf8InCpp String uuid, int userId,
123 in int[] retainSnapshotIds);
124
Ricky Wai2a4983f2020-02-07 14:25:45 +0000125 void tryMountDataMirror(@nullable @utf8InCpp String volumeUuid);
Ricky Waiff9d3ea2019-11-18 18:18:24 +0000126 void onPrivateVolumeRemoved(@nullable @utf8InCpp String volumeUuid);
Narayan Kamathe63ca7d2019-01-14 15:21:52 +0000127
Narayan Kamath28ab93b2019-05-15 18:29:44 +0100128 void migrateLegacyObbData();
129
Jeff Sharkey5cb0b1a2018-08-24 17:25:50 -0600130 const int FLAG_STORAGE_DE = 0x1;
131 const int FLAG_STORAGE_CE = 0x2;
Jeff Sharkey6e175692019-05-14 14:55:33 -0600132 const int FLAG_STORAGE_EXTERNAL = 0x4;
Jeff Sharkey5cb0b1a2018-08-24 17:25:50 -0600133
134 const int FLAG_CLEAR_CACHE_ONLY = 0x10;
135 const int FLAG_CLEAR_CODE_CACHE_ONLY = 0x20;
136
137 const int FLAG_FREE_CACHE_V2 = 0x100;
138 const int FLAG_FREE_CACHE_V2_DEFY_QUOTA = 0x200;
139 const int FLAG_FREE_CACHE_NOOP = 0x400;
140
141 const int FLAG_USE_QUOTA = 0x1000;
142 const int FLAG_FORCE = 0x2000;
Calin Juravlee8ef7b02019-06-17 17:22:19 -0700143
144 const int FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES = 0x20000;
Jeff Sharkey90874002016-12-05 11:18:55 -0700145}