1 /* 2 * Copyright (C) 2020 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 package android.content.pm.parsing; 18 19 import android.annotation.NonNull; 20 import android.annotation.Nullable; 21 import android.content.Intent; 22 import android.content.pm.ConfigurationInfo; 23 import android.content.pm.FeatureGroupInfo; 24 import android.content.pm.FeatureInfo; 25 import android.content.pm.PackageParser; 26 import android.content.pm.parsing.component.ParsedActivity; 27 import android.content.pm.parsing.component.ParsedAttribution; 28 import android.content.pm.parsing.component.ParsedInstrumentation; 29 import android.content.pm.parsing.component.ParsedIntentInfo; 30 import android.content.pm.parsing.component.ParsedPermission; 31 import android.content.pm.parsing.component.ParsedPermissionGroup; 32 import android.content.pm.parsing.component.ParsedProcess; 33 import android.content.pm.parsing.component.ParsedProvider; 34 import android.content.pm.parsing.component.ParsedService; 35 import android.os.Bundle; 36 import android.util.SparseArray; 37 import android.util.SparseIntArray; 38 39 import java.security.PublicKey; 40 import java.util.Map; 41 import java.util.Set; 42 43 /** 44 * Methods used for mutation during direct package parsing. 45 * 46 * @hide 47 */ 48 @SuppressWarnings("UnusedReturnValue") 49 public interface ParsingPackage extends ParsingPackageRead { 50 addActivity(ParsedActivity parsedActivity)51 ParsingPackage addActivity(ParsedActivity parsedActivity); 52 addAdoptPermission(String adoptPermission)53 ParsingPackage addAdoptPermission(String adoptPermission); 54 addConfigPreference(ConfigurationInfo configPreference)55 ParsingPackage addConfigPreference(ConfigurationInfo configPreference); 56 addFeatureGroup(FeatureGroupInfo featureGroup)57 ParsingPackage addFeatureGroup(FeatureGroupInfo featureGroup); 58 addImplicitPermission(String permission)59 ParsingPackage addImplicitPermission(String permission); 60 addInstrumentation(ParsedInstrumentation instrumentation)61 ParsingPackage addInstrumentation(ParsedInstrumentation instrumentation); 62 addKeySet(String keySetName, PublicKey publicKey)63 ParsingPackage addKeySet(String keySetName, PublicKey publicKey); 64 addLibraryName(String libraryName)65 ParsingPackage addLibraryName(String libraryName); 66 addOriginalPackage(String originalPackage)67 ParsingPackage addOriginalPackage(String originalPackage); 68 addOverlayable(String overlayableName, String actorName)69 ParsingPackage addOverlayable(String overlayableName, String actorName); 70 addPermission(ParsedPermission permission)71 ParsingPackage addPermission(ParsedPermission permission); 72 addPermissionGroup(ParsedPermissionGroup permissionGroup)73 ParsingPackage addPermissionGroup(ParsedPermissionGroup permissionGroup); 74 addPreferredActivityFilter(String className, ParsedIntentInfo intentInfo)75 ParsingPackage addPreferredActivityFilter(String className, ParsedIntentInfo intentInfo); 76 addProtectedBroadcast(String protectedBroadcast)77 ParsingPackage addProtectedBroadcast(String protectedBroadcast); 78 addProvider(ParsedProvider parsedProvider)79 ParsingPackage addProvider(ParsedProvider parsedProvider); 80 addAttribution(ParsedAttribution attribution)81 ParsingPackage addAttribution(ParsedAttribution attribution); 82 addReceiver(ParsedActivity parsedReceiver)83 ParsingPackage addReceiver(ParsedActivity parsedReceiver); 84 addReqFeature(FeatureInfo reqFeature)85 ParsingPackage addReqFeature(FeatureInfo reqFeature); 86 addRequestedPermission(String permission)87 ParsingPackage addRequestedPermission(String permission); 88 addService(ParsedService parsedService)89 ParsingPackage addService(ParsedService parsedService); 90 addUsesLibrary(String libraryName)91 ParsingPackage addUsesLibrary(String libraryName); 92 addUsesOptionalLibrary(String libraryName)93 ParsingPackage addUsesOptionalLibrary(String libraryName); 94 addUsesStaticLibrary(String libraryName)95 ParsingPackage addUsesStaticLibrary(String libraryName); 96 addUsesStaticLibraryCertDigests(String[] certSha256Digests)97 ParsingPackage addUsesStaticLibraryCertDigests(String[] certSha256Digests); 98 addUsesStaticLibraryVersion(long version)99 ParsingPackage addUsesStaticLibraryVersion(long version); 100 addQueriesIntent(Intent intent)101 ParsingPackage addQueriesIntent(Intent intent); 102 addQueriesPackage(String packageName)103 ParsingPackage addQueriesPackage(String packageName); 104 addQueriesProvider(String authority)105 ParsingPackage addQueriesProvider(String authority); 106 setProcesses(@onNull Map<String, ParsedProcess> processes)107 ParsingPackage setProcesses(@NonNull Map<String, ParsedProcess> processes); 108 asSplit( String[] splitNames, String[] splitCodePaths, int[] splitRevisionCodes, @Nullable SparseArray<int[]> splitDependencies )109 ParsingPackage asSplit( 110 String[] splitNames, 111 String[] splitCodePaths, 112 int[] splitRevisionCodes, 113 @Nullable SparseArray<int[]> splitDependencies 114 ); 115 setMetaData(Bundle metaData)116 ParsingPackage setMetaData(Bundle metaData); 117 setForceQueryable(boolean forceQueryable)118 ParsingPackage setForceQueryable(boolean forceQueryable); 119 setMaxAspectRatio(float maxAspectRatio)120 ParsingPackage setMaxAspectRatio(float maxAspectRatio); 121 setMinAspectRatio(float minAspectRatio)122 ParsingPackage setMinAspectRatio(float minAspectRatio); 123 setPermission(String permission)124 ParsingPackage setPermission(String permission); 125 setProcessName(String processName)126 ParsingPackage setProcessName(String processName); 127 setSharedUserId(String sharedUserId)128 ParsingPackage setSharedUserId(String sharedUserId); 129 setStaticSharedLibName(String staticSharedLibName)130 ParsingPackage setStaticSharedLibName(String staticSharedLibName); 131 setTaskAffinity(String taskAffinity)132 ParsingPackage setTaskAffinity(String taskAffinity); 133 setTargetSdkVersion(int targetSdkVersion)134 ParsingPackage setTargetSdkVersion(int targetSdkVersion); 135 setUiOptions(int uiOptions)136 ParsingPackage setUiOptions(int uiOptions); 137 setBaseHardwareAccelerated(boolean baseHardwareAccelerated)138 ParsingPackage setBaseHardwareAccelerated(boolean baseHardwareAccelerated); 139 setResizeableActivity(Boolean resizeable)140 ParsingPackage setResizeableActivity(Boolean resizeable); 141 setResizeableActivityViaSdkVersion(boolean resizeableViaSdkVersion)142 ParsingPackage setResizeableActivityViaSdkVersion(boolean resizeableViaSdkVersion); 143 setAllowAudioPlaybackCapture(boolean allowAudioPlaybackCapture)144 ParsingPackage setAllowAudioPlaybackCapture(boolean allowAudioPlaybackCapture); 145 setAllowBackup(boolean allowBackup)146 ParsingPackage setAllowBackup(boolean allowBackup); 147 setAllowClearUserData(boolean allowClearUserData)148 ParsingPackage setAllowClearUserData(boolean allowClearUserData); 149 setAllowClearUserDataOnFailedRestore(boolean allowClearUserDataOnFailedRestore)150 ParsingPackage setAllowClearUserDataOnFailedRestore(boolean allowClearUserDataOnFailedRestore); 151 setAllowTaskReparenting(boolean allowTaskReparenting)152 ParsingPackage setAllowTaskReparenting(boolean allowTaskReparenting); 153 setOverlay(boolean isOverlay)154 ParsingPackage setOverlay(boolean isOverlay); 155 setBackupInForeground(boolean backupInForeground)156 ParsingPackage setBackupInForeground(boolean backupInForeground); 157 setCantSaveState(boolean cantSaveState)158 ParsingPackage setCantSaveState(boolean cantSaveState); 159 setDebuggable(boolean debuggable)160 ParsingPackage setDebuggable(boolean debuggable); 161 setDefaultToDeviceProtectedStorage(boolean defaultToDeviceProtectedStorage)162 ParsingPackage setDefaultToDeviceProtectedStorage(boolean defaultToDeviceProtectedStorage); 163 setDirectBootAware(boolean directBootAware)164 ParsingPackage setDirectBootAware(boolean directBootAware); 165 setExternalStorage(boolean externalStorage)166 ParsingPackage setExternalStorage(boolean externalStorage); 167 setExtractNativeLibs(boolean extractNativeLibs)168 ParsingPackage setExtractNativeLibs(boolean extractNativeLibs); 169 setFullBackupOnly(boolean fullBackupOnly)170 ParsingPackage setFullBackupOnly(boolean fullBackupOnly); 171 setHasCode(boolean hasCode)172 ParsingPackage setHasCode(boolean hasCode); 173 setHasFragileUserData(boolean hasFragileUserData)174 ParsingPackage setHasFragileUserData(boolean hasFragileUserData); 175 setGame(boolean isGame)176 ParsingPackage setGame(boolean isGame); 177 setIsolatedSplitLoading(boolean isolatedSplitLoading)178 ParsingPackage setIsolatedSplitLoading(boolean isolatedSplitLoading); 179 setKillAfterRestore(boolean killAfterRestore)180 ParsingPackage setKillAfterRestore(boolean killAfterRestore); 181 setLargeHeap(boolean largeHeap)182 ParsingPackage setLargeHeap(boolean largeHeap); 183 setMultiArch(boolean multiArch)184 ParsingPackage setMultiArch(boolean multiArch); 185 setPartiallyDirectBootAware(boolean partiallyDirectBootAware)186 ParsingPackage setPartiallyDirectBootAware(boolean partiallyDirectBootAware); 187 setPersistent(boolean persistent)188 ParsingPackage setPersistent(boolean persistent); 189 setProfileableByShell(boolean profileableByShell)190 ParsingPackage setProfileableByShell(boolean profileableByShell); 191 setRequestLegacyExternalStorage(boolean requestLegacyExternalStorage)192 ParsingPackage setRequestLegacyExternalStorage(boolean requestLegacyExternalStorage); 193 setAllowNativeHeapPointerTagging(boolean allowNativeHeapPointerTagging)194 ParsingPackage setAllowNativeHeapPointerTagging(boolean allowNativeHeapPointerTagging); 195 setAutoRevokePermissions(int autoRevokePermissions)196 ParsingPackage setAutoRevokePermissions(int autoRevokePermissions); 197 setPreserveLegacyExternalStorage(boolean preserveLegacyExternalStorage)198 ParsingPackage setPreserveLegacyExternalStorage(boolean preserveLegacyExternalStorage); 199 setRestoreAnyVersion(boolean restoreAnyVersion)200 ParsingPackage setRestoreAnyVersion(boolean restoreAnyVersion); 201 setSplitHasCode(int splitIndex, boolean splitHasCode)202 ParsingPackage setSplitHasCode(int splitIndex, boolean splitHasCode); 203 setStaticSharedLibrary(boolean staticSharedLibrary)204 ParsingPackage setStaticSharedLibrary(boolean staticSharedLibrary); 205 setSupportsRtl(boolean supportsRtl)206 ParsingPackage setSupportsRtl(boolean supportsRtl); 207 setTestOnly(boolean testOnly)208 ParsingPackage setTestOnly(boolean testOnly); 209 setUseEmbeddedDex(boolean useEmbeddedDex)210 ParsingPackage setUseEmbeddedDex(boolean useEmbeddedDex); 211 setUsesCleartextTraffic(boolean usesCleartextTraffic)212 ParsingPackage setUsesCleartextTraffic(boolean usesCleartextTraffic); 213 setUsesNonSdkApi(boolean usesNonSdkApi)214 ParsingPackage setUsesNonSdkApi(boolean usesNonSdkApi); 215 setVisibleToInstantApps(boolean visibleToInstantApps)216 ParsingPackage setVisibleToInstantApps(boolean visibleToInstantApps); 217 setVmSafeMode(boolean vmSafeMode)218 ParsingPackage setVmSafeMode(boolean vmSafeMode); 219 removeUsesOptionalLibrary(String libraryName)220 ParsingPackage removeUsesOptionalLibrary(String libraryName); 221 setAnyDensity(int anyDensity)222 ParsingPackage setAnyDensity(int anyDensity); 223 setAppComponentFactory(String appComponentFactory)224 ParsingPackage setAppComponentFactory(String appComponentFactory); 225 setBackupAgentName(String backupAgentName)226 ParsingPackage setBackupAgentName(String backupAgentName); 227 setBanner(int banner)228 ParsingPackage setBanner(int banner); 229 setCategory(int category)230 ParsingPackage setCategory(int category); 231 setClassLoaderName(String classLoaderName)232 ParsingPackage setClassLoaderName(String classLoaderName); 233 setClassName(String className)234 ParsingPackage setClassName(String className); 235 setCompatibleWidthLimitDp(int compatibleWidthLimitDp)236 ParsingPackage setCompatibleWidthLimitDp(int compatibleWidthLimitDp); 237 setDescriptionRes(int descriptionRes)238 ParsingPackage setDescriptionRes(int descriptionRes); 239 setEnabled(boolean enabled)240 ParsingPackage setEnabled(boolean enabled); 241 setGwpAsanMode(int gwpAsanMode)242 ParsingPackage setGwpAsanMode(int gwpAsanMode); 243 setCrossProfile(boolean crossProfile)244 ParsingPackage setCrossProfile(boolean crossProfile); 245 setFullBackupContent(int fullBackupContent)246 ParsingPackage setFullBackupContent(int fullBackupContent); 247 setHasDomainUrls(boolean hasDomainUrls)248 ParsingPackage setHasDomainUrls(boolean hasDomainUrls); 249 setIconRes(int iconRes)250 ParsingPackage setIconRes(int iconRes); 251 setInstallLocation(int installLocation)252 ParsingPackage setInstallLocation(int installLocation); 253 setLabelRes(int labelRes)254 ParsingPackage setLabelRes(int labelRes); 255 setLargestWidthLimitDp(int largestWidthLimitDp)256 ParsingPackage setLargestWidthLimitDp(int largestWidthLimitDp); 257 setLogo(int logo)258 ParsingPackage setLogo(int logo); 259 setManageSpaceActivityName(String manageSpaceActivityName)260 ParsingPackage setManageSpaceActivityName(String manageSpaceActivityName); 261 setMinExtensionVersions(@ullable SparseIntArray minExtensionVersions)262 ParsingPackage setMinExtensionVersions(@Nullable SparseIntArray minExtensionVersions); 263 setMinSdkVersion(int minSdkVersion)264 ParsingPackage setMinSdkVersion(int minSdkVersion); 265 setNetworkSecurityConfigRes(int networkSecurityConfigRes)266 ParsingPackage setNetworkSecurityConfigRes(int networkSecurityConfigRes); 267 setNonLocalizedLabel(CharSequence nonLocalizedLabel)268 ParsingPackage setNonLocalizedLabel(CharSequence nonLocalizedLabel); 269 setOverlayCategory(String overlayCategory)270 ParsingPackage setOverlayCategory(String overlayCategory); 271 setOverlayIsStatic(boolean overlayIsStatic)272 ParsingPackage setOverlayIsStatic(boolean overlayIsStatic); 273 setOverlayPriority(int overlayPriority)274 ParsingPackage setOverlayPriority(int overlayPriority); 275 setOverlayTarget(String overlayTarget)276 ParsingPackage setOverlayTarget(String overlayTarget); 277 setOverlayTargetName(String overlayTargetName)278 ParsingPackage setOverlayTargetName(String overlayTargetName); 279 setRealPackage(String realPackage)280 ParsingPackage setRealPackage(String realPackage); 281 setRequiredAccountType(String requiredAccountType)282 ParsingPackage setRequiredAccountType(String requiredAccountType); 283 setRequiredForAllUsers(boolean requiredForAllUsers)284 ParsingPackage setRequiredForAllUsers(boolean requiredForAllUsers); 285 setRequiresSmallestWidthDp(int requiresSmallestWidthDp)286 ParsingPackage setRequiresSmallestWidthDp(int requiresSmallestWidthDp); 287 setResizeable(int resizeable)288 ParsingPackage setResizeable(int resizeable); 289 setRestrictUpdateHash(byte[] restrictUpdateHash)290 ParsingPackage setRestrictUpdateHash(byte[] restrictUpdateHash); 291 setRestrictedAccountType(String restrictedAccountType)292 ParsingPackage setRestrictedAccountType(String restrictedAccountType); 293 setRoundIconRes(int roundIconRes)294 ParsingPackage setRoundIconRes(int roundIconRes); 295 setSharedUserLabel(int sharedUserLabel)296 ParsingPackage setSharedUserLabel(int sharedUserLabel); 297 setSigningDetails(PackageParser.SigningDetails signingDetails)298 ParsingPackage setSigningDetails(PackageParser.SigningDetails signingDetails); 299 setSplitClassLoaderName(int splitIndex, String classLoaderName)300 ParsingPackage setSplitClassLoaderName(int splitIndex, String classLoaderName); 301 setStaticSharedLibVersion(long staticSharedLibVersion)302 ParsingPackage setStaticSharedLibVersion(long staticSharedLibVersion); 303 setSupportsLargeScreens(int supportsLargeScreens)304 ParsingPackage setSupportsLargeScreens(int supportsLargeScreens); 305 setSupportsNormalScreens(int supportsNormalScreens)306 ParsingPackage setSupportsNormalScreens(int supportsNormalScreens); 307 setSupportsSmallScreens(int supportsSmallScreens)308 ParsingPackage setSupportsSmallScreens(int supportsSmallScreens); 309 setSupportsExtraLargeScreens(int supportsExtraLargeScreens)310 ParsingPackage setSupportsExtraLargeScreens(int supportsExtraLargeScreens); 311 setTargetSandboxVersion(int targetSandboxVersion)312 ParsingPackage setTargetSandboxVersion(int targetSandboxVersion); 313 setTheme(int theme)314 ParsingPackage setTheme(int theme); 315 setUpgradeKeySets(@onNull Set<String> upgradeKeySets)316 ParsingPackage setUpgradeKeySets(@NonNull Set<String> upgradeKeySets); 317 setUse32BitAbi(boolean use32BitAbi)318 ParsingPackage setUse32BitAbi(boolean use32BitAbi); 319 setVolumeUuid(@ullable String volumeUuid)320 ParsingPackage setVolumeUuid(@Nullable String volumeUuid); 321 setZygotePreloadName(String zygotePreloadName)322 ParsingPackage setZygotePreloadName(String zygotePreloadName); 323 sortActivities()324 ParsingPackage sortActivities(); 325 sortReceivers()326 ParsingPackage sortReceivers(); 327 sortServices()328 ParsingPackage sortServices(); 329 setBaseRevisionCode(int baseRevisionCode)330 ParsingPackage setBaseRevisionCode(int baseRevisionCode); 331 setVersionName(String versionName)332 ParsingPackage setVersionName(String versionName); 333 setCompileSdkVersion(int compileSdkVersion)334 ParsingPackage setCompileSdkVersion(int compileSdkVersion); 335 setCompileSdkVersionCodename(String compileSdkVersionCodename)336 ParsingPackage setCompileSdkVersionCodename(String compileSdkVersionCodename); 337 338 // TODO(b/135203078): This class no longer has access to ParsedPackage, find a replacement 339 // for moving to the next step 340 @Deprecated hideAsParsed()341 Object hideAsParsed(); 342 } 343