blob: 91a25db3710e58472ea54d6bd540ec7b089652eb [file] [log] [blame]
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.pm.pkg;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
import android.content.pm.SigningInfo;
import android.content.pm.overlay.OverlayPaths;
import android.os.UserHandle;
import android.util.ArraySet;
import android.util.SparseArray;
import com.android.internal.util.DataClass;
import com.android.server.pm.PackageManagerService;
import com.android.server.pm.PackageSetting;
import com.android.server.pm.Settings;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
/**
* Because a {@link PackageSetting} cannot be returned from {@link Settings} without holding the
* {@link PackageManagerService#mLock}, this class serves as a memory snapshot of the state of a
* single package, for use with {@link PackageManagerInternal#getPackageState(String)} and {@link
* PackageManagerInternal#forEachPackageState(boolean, Consumer)}.
*
* @hide
*/
@DataClass(genConstructor = false)
@DataClass.Suppress({"mUserStates"})
public class PackageStateImpl implements PackageState {
public static PackageState copy(@NonNull PackageStateInternal pkgSetting) {
return new PackageStateImpl(pkgSetting, pkgSetting.getPkg());
}
private static class Booleans {
@IntDef({
SYSTEM,
EXTERNAL_STORAGE,
PRIVILEGED,
OEM,
VENDOR,
PRODUCT,
SYSTEM_EXT,
REQUIRED_FOR_SYSTEM_USER,
ODM,
FORCE_QUERYABLE_OVERRIDE,
HIDDEN_UNTIL_INSTALLED,
INSTALL_PERMISSIONS_FIXED,
UPDATE_AVAILABLE,
UPDATED_SYSTEM_APP,
APK_IN_UPDATED_APEX,
})
public @interface Flags {
}
private static final int SYSTEM = 1;
private static final int EXTERNAL_STORAGE = 1 << 1;
private static final int PRIVILEGED = 1 << 2;
private static final int OEM = 1 << 3;
private static final int VENDOR = 1 << 4;
private static final int PRODUCT = 1 << 5;
private static final int SYSTEM_EXT = 1 << 6;
private static final int REQUIRED_FOR_SYSTEM_USER = 1 << 7;
private static final int ODM = 1 << 8;
private static final int FORCE_QUERYABLE_OVERRIDE = 1 << 9;
private static final int HIDDEN_UNTIL_INSTALLED = 1 << 10;
private static final int INSTALL_PERMISSIONS_FIXED = 1 << 11;
private static final int UPDATE_AVAILABLE = 1 << 12;
private static final int UPDATED_SYSTEM_APP = 1 << 13;
private static final int APK_IN_UPDATED_APEX = 1 << 14;
}
private int mBooleans;
private void setBoolean(@Booleans.Flags int flag, boolean value) {
if (value) {
mBooleans |= flag;
} else {
mBooleans &= ~flag;
}
}
private boolean getBoolean(@Booleans.Flags int flag) {
return (mBooleans & flag) != 0;
}
@Nullable
private final AndroidPackage mAndroidPackage;
@NonNull
private final String mPackageName;
@Nullable
private final String mVolumeUuid;
private final int mAppId;
private final int mCategoryOverride;
@Nullable
private final String mCpuAbiOverride;
@ApplicationInfo.HiddenApiEnforcementPolicy
private final int mHiddenApiEnforcementPolicy;
private final long mLastModifiedTime;
private final long mLastUpdateTime;
private final long mLongVersionCode;
@NonNull
private final Map<String, Set<String>> mMimeGroups;
@NonNull
private final File mPath;
@Nullable
private final String mPrimaryCpuAbi;
@Nullable
private final String mSecondaryCpuAbi;
@Nullable
private final String mSeInfo;
private final boolean mHasSharedUser;
private final int mSharedUserAppId;
@NonNull
private final String[] mUsesSdkLibraries;
@NonNull
private final long[] mUsesSdkLibrariesVersionsMajor;
@NonNull
private final String[] mUsesStaticLibraries;
@NonNull
private final long[] mUsesStaticLibrariesVersions;
@NonNull
private final List<SharedLibrary> mUsesLibraries;
@NonNull
private final List<String> mUsesLibraryFiles;
@NonNull
private final long[] mLastPackageUsageTime;
@NonNull
private final SigningInfo mSigningInfo;
@NonNull
private final SparseArray<PackageUserState> mUserStates;
@Nullable
private final String mApexModuleName;
private PackageStateImpl(@NonNull PackageState pkgState, @Nullable AndroidPackage pkg) {
mAndroidPackage = pkg;
setBoolean(Booleans.SYSTEM, pkgState.isSystem());
setBoolean(Booleans.EXTERNAL_STORAGE, pkgState.isExternalStorage());
setBoolean(Booleans.PRIVILEGED, pkgState.isPrivileged());
setBoolean(Booleans.OEM, pkgState.isOem());
setBoolean(Booleans.VENDOR, pkgState.isVendor());
setBoolean(Booleans.PRODUCT, pkgState.isProduct());
setBoolean(Booleans.SYSTEM_EXT, pkgState.isSystemExt());
setBoolean(Booleans.REQUIRED_FOR_SYSTEM_USER, pkgState.isRequiredForSystemUser());
setBoolean(Booleans.ODM, pkgState.isOdm());
mPackageName = pkgState.getPackageName();
mVolumeUuid = pkgState.getVolumeUuid();
mAppId = pkgState.getAppId();
mCategoryOverride = pkgState.getCategoryOverride();
mCpuAbiOverride = pkgState.getCpuAbiOverride();
mHiddenApiEnforcementPolicy = pkgState.getHiddenApiEnforcementPolicy();
mLastModifiedTime = pkgState.getLastModifiedTime();
mLastUpdateTime = pkgState.getLastUpdateTime();
mLongVersionCode = pkgState.getVersionCode();
mMimeGroups = Collections.unmodifiableMap(pkgState.getMimeGroups());
mPath = pkgState.getPath();
mPrimaryCpuAbi = pkgState.getPrimaryCpuAbi();
mSecondaryCpuAbi = pkgState.getSecondaryCpuAbi();
mSeInfo = pkgState.getSeInfo();
mHasSharedUser = pkgState.hasSharedUser();
mSharedUserAppId = pkgState.getSharedUserAppId();
mUsesSdkLibraries = pkgState.getUsesSdkLibraries();
mUsesSdkLibrariesVersionsMajor = pkgState.getUsesSdkLibrariesVersionsMajor();
mUsesStaticLibraries = pkgState.getUsesStaticLibraries();
mUsesStaticLibrariesVersions = pkgState.getUsesStaticLibrariesVersions();
mUsesLibraries = Collections.unmodifiableList(pkgState.getSharedLibraryDependencies());
mUsesLibraryFiles = Collections.unmodifiableList(pkgState.getUsesLibraryFiles());
setBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE, pkgState.isForceQueryableOverride());
setBoolean(Booleans.HIDDEN_UNTIL_INSTALLED, pkgState.isHiddenUntilInstalled());
setBoolean(Booleans.INSTALL_PERMISSIONS_FIXED, pkgState.isInstallPermissionsFixed());
setBoolean(Booleans.UPDATE_AVAILABLE, pkgState.isUpdateAvailable());
mLastPackageUsageTime = pkgState.getLastPackageUsageTime();
setBoolean(Booleans.UPDATED_SYSTEM_APP, pkgState.isUpdatedSystemApp());
setBoolean(Booleans.APK_IN_UPDATED_APEX, pkgState.isApkInUpdatedApex());
mSigningInfo = pkgState.getSigningInfo();
SparseArray<? extends PackageUserState> userStates = pkgState.getUserStates();
int userStatesSize = userStates.size();
mUserStates = new SparseArray<>(userStatesSize);
for (int index = 0; index < userStatesSize; index++) {
mUserStates.put(userStates.keyAt(index),
UserStateImpl.copy(userStates.valueAt(index)));
}
mApexModuleName = pkgState.getApexModuleName();
}
@NonNull
@Override
public PackageUserState getStateForUser(@NonNull UserHandle user) {
PackageUserState userState = getUserStates().get(user.getIdentifier());
return userState == null ? PackageUserState.DEFAULT : userState;
}
@Override
public boolean isExternalStorage() {
return getBoolean(Booleans.EXTERNAL_STORAGE);
}
@Override
public boolean isForceQueryableOverride() {
return getBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE);
}
@Override
public boolean isHiddenUntilInstalled() {
return getBoolean(Booleans.HIDDEN_UNTIL_INSTALLED);
}
@Override
public boolean isInstallPermissionsFixed() {
return getBoolean(Booleans.INSTALL_PERMISSIONS_FIXED);
}
@Override
public boolean isOdm() {
return getBoolean(Booleans.ODM);
}
@Override
public boolean isOem() {
return getBoolean(Booleans.OEM);
}
@Override
public boolean isPrivileged() {
return getBoolean(Booleans.PRIVILEGED);
}
@Override
public boolean isProduct() {
return getBoolean(Booleans.PRODUCT);
}
@Override
public boolean isRequiredForSystemUser() {
return getBoolean(Booleans.REQUIRED_FOR_SYSTEM_USER);
}
@Override
public boolean isSystem() {
return getBoolean(Booleans.SYSTEM);
}
@Override
public boolean isSystemExt() {
return getBoolean(Booleans.SYSTEM_EXT);
}
@Override
public boolean isUpdateAvailable() {
return getBoolean(Booleans.UPDATE_AVAILABLE);
}
@Override
public boolean isUpdatedSystemApp() {
return getBoolean(Booleans.UPDATED_SYSTEM_APP);
}
@Override
public boolean isApkInUpdatedApex() {
return getBoolean(Booleans.APK_IN_UPDATED_APEX);
}
@Override
public boolean isVendor() {
return getBoolean(Booleans.VENDOR);
}
@Override
public long getVersionCode() {
return mLongVersionCode;
}
@Override
public boolean hasSharedUser() {
return mHasSharedUser;
}
@Override
public boolean isApex() {
return getAndroidPackage() != null && getAndroidPackage().isApex();
}
/**
* @hide
*/
@DataClass(genConstructor = false)
public static class UserStateImpl implements PackageUserState {
public static PackageUserState copy(@NonNull PackageUserState state) {
return new UserStateImpl(state);
}
private static class Booleans {
@IntDef({
HIDDEN,
INSTALLED,
INSTANT_APP,
NOT_LAUNCHED,
STOPPED,
SUSPENDED,
VIRTUAL_PRELOAD,
})
public @interface Flags {
}
private static final int HIDDEN = 1;
private static final int INSTALLED = 1 << 1;
private static final int INSTANT_APP = 1 << 2;
private static final int NOT_LAUNCHED = 1 << 3;
private static final int STOPPED = 1 << 4;
private static final int SUSPENDED = 1 << 5;
private static final int VIRTUAL_PRELOAD = 1 << 6;
}
private int mBooleans;
private void setBoolean(@Booleans.Flags int flag, boolean value) {
if (value) {
mBooleans |= flag;
} else {
mBooleans &= ~flag;
}
}
private boolean getBoolean(@Booleans.Flags int flag) {
return (mBooleans & flag) != 0;
}
private final long mCeDataInode;
@NonNull
private final ArraySet<String> mDisabledComponents;
@PackageManager.DistractionRestriction
private final int mDistractionFlags;
@NonNull
private final ArraySet<String> mEnabledComponents;
private final int mEnabledState;
@Nullable
private final String mHarmfulAppWarning;
@PackageManager.InstallReason
private final int mInstallReason;
@Nullable
private final String mLastDisableAppCaller;
@NonNull
private final OverlayPaths mOverlayPaths;
@NonNull
private final Map<String, OverlayPaths> mSharedLibraryOverlayPaths;
@PackageManager.UninstallReason
private final int mUninstallReason;
@Nullable
private final String mSplashScreenTheme;
private final long mFirstInstallTimeMillis;
private UserStateImpl(@NonNull PackageUserState userState) {
mCeDataInode = userState.getCeDataInode();
mDisabledComponents = userState.getDisabledComponents();
mDistractionFlags = userState.getDistractionFlags();
mEnabledComponents = userState.getEnabledComponents();
mEnabledState = userState.getEnabledState();
mHarmfulAppWarning = userState.getHarmfulAppWarning();
mInstallReason = userState.getInstallReason();
mLastDisableAppCaller = userState.getLastDisableAppCaller();
mOverlayPaths = userState.getOverlayPaths();
mSharedLibraryOverlayPaths = userState.getSharedLibraryOverlayPaths();
mUninstallReason = userState.getUninstallReason();
mSplashScreenTheme = userState.getSplashScreenTheme();
setBoolean(Booleans.HIDDEN, userState.isHidden());
setBoolean(Booleans.INSTALLED, userState.isInstalled());
setBoolean(Booleans.INSTANT_APP, userState.isInstantApp());
setBoolean(Booleans.NOT_LAUNCHED, userState.isNotLaunched());
setBoolean(Booleans.STOPPED, userState.isStopped());
setBoolean(Booleans.SUSPENDED, userState.isSuspended());
setBoolean(Booleans.VIRTUAL_PRELOAD, userState.isVirtualPreload());
mFirstInstallTimeMillis = userState.getFirstInstallTimeMillis();
}
@Override
public boolean isHidden() {
return getBoolean(Booleans.HIDDEN);
}
@Override
public boolean isInstalled() {
return getBoolean(Booleans.INSTALLED);
}
@Override
public boolean isInstantApp() {
return getBoolean(Booleans.INSTANT_APP);
}
@Override
public boolean isNotLaunched() {
return getBoolean(Booleans.NOT_LAUNCHED);
}
@Override
public boolean isStopped() {
return getBoolean(Booleans.STOPPED);
}
@Override
public boolean isSuspended() {
return getBoolean(Booleans.SUSPENDED);
}
@Override
public boolean isVirtualPreload() {
return getBoolean(Booleans.VIRTUAL_PRELOAD);
}
@Override
public boolean isComponentEnabled(String componentName) {
return mEnabledComponents.contains(componentName);
}
@Override
public boolean isComponentDisabled(String componentName) {
return mDisabledComponents.contains(componentName);
}
@Override
public OverlayPaths getAllOverlayPaths() {
if (mOverlayPaths == null && mSharedLibraryOverlayPaths == null) {
return null;
}
final OverlayPaths.Builder newPaths = new OverlayPaths.Builder();
newPaths.addAll(mOverlayPaths);
if (mSharedLibraryOverlayPaths != null) {
for (final OverlayPaths libOverlayPaths : mSharedLibraryOverlayPaths.values()) {
newPaths.addAll(libOverlayPaths);
}
}
return newPaths.build();
}
// Code below generated by codegen v1.0.23.
//
// DO NOT MODIFY!
// CHECKSTYLE:OFF Generated code
//
// To regenerate run:
// $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java
//
// To exclude the generated code from IntelliJ auto-formatting enable (one-time):
// Settings > Editor > Code Style > Formatter Control
//@formatter:off
@DataClass.Generated.Member
public int getBooleans() {
return mBooleans;
}
@DataClass.Generated.Member
public long getCeDataInode() {
return mCeDataInode;
}
@DataClass.Generated.Member
public @NonNull ArraySet<String> getDisabledComponents() {
return mDisabledComponents;
}
@DataClass.Generated.Member
public @PackageManager.DistractionRestriction int getDistractionFlags() {
return mDistractionFlags;
}
@DataClass.Generated.Member
public @NonNull ArraySet<String> getEnabledComponents() {
return mEnabledComponents;
}
@DataClass.Generated.Member
public int getEnabledState() {
return mEnabledState;
}
@DataClass.Generated.Member
public @Nullable String getHarmfulAppWarning() {
return mHarmfulAppWarning;
}
@DataClass.Generated.Member
public @PackageManager.InstallReason int getInstallReason() {
return mInstallReason;
}
@DataClass.Generated.Member
public @Nullable String getLastDisableAppCaller() {
return mLastDisableAppCaller;
}
@DataClass.Generated.Member
public @NonNull OverlayPaths getOverlayPaths() {
return mOverlayPaths;
}
@DataClass.Generated.Member
public @NonNull Map<String,OverlayPaths> getSharedLibraryOverlayPaths() {
return mSharedLibraryOverlayPaths;
}
@DataClass.Generated.Member
public @PackageManager.UninstallReason int getUninstallReason() {
return mUninstallReason;
}
@DataClass.Generated.Member
public @Nullable String getSplashScreenTheme() {
return mSplashScreenTheme;
}
@DataClass.Generated.Member
public long getFirstInstallTimeMillis() {
return mFirstInstallTimeMillis;
}
@DataClass.Generated.Member
public @NonNull UserStateImpl setBooleans( int value) {
mBooleans = value;
return this;
}
@DataClass.Generated(
time = 1671671043891L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java",
inputSignatures = "private int mBooleans\nprivate final long mCeDataInode\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mDisabledComponents\nprivate final @android.content.pm.PackageManager.DistractionRestriction int mDistractionFlags\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mEnabledComponents\nprivate final int mEnabledState\nprivate final @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate final @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate final @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate final @android.annotation.NonNull android.content.pm.overlay.OverlayPaths mOverlayPaths\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate final @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate final @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate final long mFirstInstallTimeMillis\npublic static com.android.server.pm.pkg.PackageUserState copy(com.android.server.pm.pkg.PackageUserState)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isSuspended()\npublic @java.lang.Override boolean isVirtualPreload()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\nclass UserStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageUserState]\nprivate static final int HIDDEN\nprivate static final int INSTALLED\nprivate static final int INSTANT_APP\nprivate static final int NOT_LAUNCHED\nprivate static final int STOPPED\nprivate static final int SUSPENDED\nprivate static final int VIRTUAL_PRELOAD\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)")
@Deprecated
private void __metadata() {}
//@formatter:on
// End of generated code
}
// Code below generated by codegen v1.0.23.
//
// DO NOT MODIFY!
// CHECKSTYLE:OFF Generated code
//
// To regenerate run:
// $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java
//
// To exclude the generated code from IntelliJ auto-formatting enable (one-time):
// Settings > Editor > Code Style > Formatter Control
//@formatter:off
@DataClass.Generated.Member
public int getBooleans() {
return mBooleans;
}
@DataClass.Generated.Member
public @Nullable AndroidPackage getAndroidPackage() {
return mAndroidPackage;
}
@DataClass.Generated.Member
public @NonNull String getPackageName() {
return mPackageName;
}
@DataClass.Generated.Member
public @Nullable String getVolumeUuid() {
return mVolumeUuid;
}
@DataClass.Generated.Member
public int getAppId() {
return mAppId;
}
@DataClass.Generated.Member
public int getCategoryOverride() {
return mCategoryOverride;
}
@DataClass.Generated.Member
public @Nullable String getCpuAbiOverride() {
return mCpuAbiOverride;
}
@DataClass.Generated.Member
public @ApplicationInfo.HiddenApiEnforcementPolicy int getHiddenApiEnforcementPolicy() {
return mHiddenApiEnforcementPolicy;
}
@DataClass.Generated.Member
public long getLastModifiedTime() {
return mLastModifiedTime;
}
@DataClass.Generated.Member
public long getLastUpdateTime() {
return mLastUpdateTime;
}
@DataClass.Generated.Member
public long getLongVersionCode() {
return mLongVersionCode;
}
@DataClass.Generated.Member
public @NonNull Map<String,Set<String>> getMimeGroups() {
return mMimeGroups;
}
@DataClass.Generated.Member
public @NonNull File getPath() {
return mPath;
}
@DataClass.Generated.Member
public @Nullable String getPrimaryCpuAbi() {
return mPrimaryCpuAbi;
}
@DataClass.Generated.Member
public @Nullable String getSecondaryCpuAbi() {
return mSecondaryCpuAbi;
}
@DataClass.Generated.Member
public @Nullable String getSeInfo() {
return mSeInfo;
}
@DataClass.Generated.Member
public boolean isHasSharedUser() {
return mHasSharedUser;
}
@DataClass.Generated.Member
public int getSharedUserAppId() {
return mSharedUserAppId;
}
@DataClass.Generated.Member
public @NonNull String[] getUsesSdkLibraries() {
return mUsesSdkLibraries;
}
@DataClass.Generated.Member
public @NonNull long[] getUsesSdkLibrariesVersionsMajor() {
return mUsesSdkLibrariesVersionsMajor;
}
@DataClass.Generated.Member
public @NonNull String[] getUsesStaticLibraries() {
return mUsesStaticLibraries;
}
@DataClass.Generated.Member
public @NonNull long[] getUsesStaticLibrariesVersions() {
return mUsesStaticLibrariesVersions;
}
@DataClass.Generated.Member
public @NonNull List<SharedLibrary> getSharedLibraryDependencies() {
return mUsesLibraries;
}
@DataClass.Generated.Member
public @NonNull List<String> getUsesLibraryFiles() {
return mUsesLibraryFiles;
}
@DataClass.Generated.Member
public @NonNull long[] getLastPackageUsageTime() {
return mLastPackageUsageTime;
}
@DataClass.Generated.Member
public @NonNull SigningInfo getSigningInfo() {
return mSigningInfo;
}
@DataClass.Generated.Member
public @NonNull SparseArray<PackageUserState> getUserStates() {
return mUserStates;
}
@DataClass.Generated.Member
public @Nullable String getApexModuleName() {
return mApexModuleName;
}
@DataClass.Generated.Member
public @NonNull PackageStateImpl setBooleans( int value) {
mBooleans = value;
return this;
}
@DataClass.Generated(
time = 1671671043929L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java",
inputSignatures = "private int mBooleans\nprivate final @android.annotation.Nullable com.android.server.pm.pkg.AndroidPackage mAndroidPackage\nprivate final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.Nullable java.lang.String mVolumeUuid\nprivate final int mAppId\nprivate final int mCategoryOverride\nprivate final @android.annotation.Nullable java.lang.String mCpuAbiOverride\nprivate final @android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy int mHiddenApiEnforcementPolicy\nprivate final long mLastModifiedTime\nprivate final long mLastUpdateTime\nprivate final long mLongVersionCode\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>> mMimeGroups\nprivate final @android.annotation.NonNull java.io.File mPath\nprivate final @android.annotation.Nullable java.lang.String mPrimaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSecondaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSeInfo\nprivate final boolean mHasSharedUser\nprivate final int mSharedUserAppId\nprivate final @android.annotation.NonNull java.lang.String[] mUsesSdkLibraries\nprivate final @android.annotation.NonNull long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.NonNull java.lang.String[] mUsesStaticLibraries\nprivate final @android.annotation.NonNull long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.NonNull java.util.List<com.android.server.pm.pkg.SharedLibrary> mUsesLibraries\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesLibraryFiles\nprivate final @android.annotation.NonNull long[] mLastPackageUsageTime\nprivate final @android.annotation.NonNull android.content.pm.SigningInfo mSigningInfo\nprivate final @android.annotation.NonNull android.util.SparseArray<com.android.server.pm.pkg.PackageUserState> mUserStates\nprivate final @android.annotation.Nullable java.lang.String mApexModuleName\npublic static com.android.server.pm.pkg.PackageState copy(com.android.server.pm.pkg.PackageStateInternal)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserState getStateForUser(android.os.UserHandle)\npublic @java.lang.Override boolean isExternalStorage()\npublic @java.lang.Override boolean isForceQueryableOverride()\npublic @java.lang.Override boolean isHiddenUntilInstalled()\npublic @java.lang.Override boolean isInstallPermissionsFixed()\npublic @java.lang.Override boolean isOdm()\npublic @java.lang.Override boolean isOem()\npublic @java.lang.Override boolean isPrivileged()\npublic @java.lang.Override boolean isProduct()\npublic @java.lang.Override boolean isRequiredForSystemUser()\npublic @java.lang.Override boolean isSystem()\npublic @java.lang.Override boolean isSystemExt()\npublic @java.lang.Override boolean isUpdateAvailable()\npublic @java.lang.Override boolean isUpdatedSystemApp()\npublic @java.lang.Override boolean isApkInUpdatedApex()\npublic @java.lang.Override boolean isVendor()\npublic @java.lang.Override long getVersionCode()\npublic @java.lang.Override boolean hasSharedUser()\npublic @java.lang.Override boolean isApex()\nclass PackageStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageState]\nprivate static final int SYSTEM\nprivate static final int EXTERNAL_STORAGE\nprivate static final int PRIVILEGED\nprivate static final int OEM\nprivate static final int VENDOR\nprivate static final int PRODUCT\nprivate static final int SYSTEM_EXT\nprivate static final int REQUIRED_FOR_SYSTEM_USER\nprivate static final int ODM\nprivate static final int FORCE_QUERYABLE_OVERRIDE\nprivate static final int HIDDEN_UNTIL_INSTALLED\nprivate static final int INSTALL_PERMISSIONS_FIXED\nprivate static final int UPDATE_AVAILABLE\nprivate static final int UPDATED_SYSTEM_APP\nprivate static final int APK_IN_UPDATED_APEX\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)")
@Deprecated
private void __metadata() {}
//@formatter:on
// End of generated code
}