Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +16 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.pm; import static android.content.pm.Flags.disallowSdkLibsToBeApps; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_APK; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_INSTALLER; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_UNKNOWN; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.INSTALL_FAILED_ALREADY_EXISTS; Loading Loading @@ -2210,6 +2211,7 @@ final class InstallPackageHelper { Map<String, PackageManager.Property> properties = parsedPackage.getProperties(); if (Flags.aslInApkAppMetadataSource() && properties.containsKey(PROPERTY_ANDROID_SAFETY_LABEL_PATH)) { // ASL file extraction is done in post-install ps.setAppMetadataFilePath(appMetadataFile.getAbsolutePath()); ps.setAppMetadataSource(APP_METADATA_SOURCE_APK); } else { Loading Loading @@ -2809,6 +2811,20 @@ final class InstallPackageHelper { } if (succeeded) { if (Flags.aslInApkAppMetadataSource() && pkgSetting.getAppMetadataSource() == APP_METADATA_SOURCE_APK) { if (!PackageManagerServiceUtils.extractAppMetadataFromApk(request.getPkg(), pkgSetting.getAppMetadataFilePath())) { synchronized (mPm.mLock) { PackageSetting setting = mPm.mSettings.getPackageLPr(packageName); if (setting != null) { setting.setAppMetadataFilePath(null) .setAppMetadataSource(APP_METADATA_SOURCE_UNKNOWN); } } } } // Clear the uid cache after we installed a new package. mPm.mPerUidReadTimeoutsCache = null; Loading services/core/java/com/android/server/pm/PackageManagerService.java +0 −22 Original line number Diff line number Diff line Loading @@ -19,8 +19,6 @@ import static android.Manifest.permission.MANAGE_DEVICE_ADMINS; import static android.Manifest.permission.SET_HARMFUL_APP_WARNINGS; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_APK; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_UNKNOWN; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED; Loading Loading @@ -5232,26 +5230,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService return null; } File file = new File(filePath); if (Flags.aslInApkAppMetadataSource() && !file.exists() && ps.getAppMetadataSource() == APP_METADATA_SOURCE_APK) { AndroidPackageInternal pkg = ps.getPkg(); if (pkg == null) { Slog.w(TAG, "Unable to to extract app metadata for " + packageName + ". APK missing from device"); return null; } if (!PackageManagerServiceUtils.extractAppMetadataFromApk(pkg, file)) { if (file.exists()) { file.delete(); } synchronized (mLock) { PackageSetting pkgSetting = mSettings.getPackageLPr(packageName); pkgSetting.setAppMetadataFilePath(null); pkgSetting.setAppMetadataSource(APP_METADATA_SOURCE_UNKNOWN); } return null; } } try { return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); } catch (FileNotFoundException e) { Loading services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +7 −1 Original line number Diff line number Diff line Loading @@ -1570,7 +1570,12 @@ public class PackageManagerServiceUtils { /** * Extract the app.metadata file from apk. */ public static boolean extractAppMetadataFromApk(AndroidPackage pkg, File appMetadataFile) { public static boolean extractAppMetadataFromApk(AndroidPackage pkg, String appMetadataFilePath) { if (appMetadataFilePath == null) { return false; } File appMetadataFile = new File(appMetadataFilePath); Map<String, Property> properties = pkg.getProperties(); if (!properties.containsKey(PROPERTY_ANDROID_SAFETY_LABEL_PATH)) { return false; Loading @@ -1596,6 +1601,7 @@ public class PackageManagerServiceUtils { } } catch (Exception e) { Slog.e(TAG, e.getMessage()); appMetadataFile.delete(); } } return false; Loading Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +16 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.pm; import static android.content.pm.Flags.disallowSdkLibsToBeApps; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_APK; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_INSTALLER; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_UNKNOWN; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.INSTALL_FAILED_ALREADY_EXISTS; Loading Loading @@ -2210,6 +2211,7 @@ final class InstallPackageHelper { Map<String, PackageManager.Property> properties = parsedPackage.getProperties(); if (Flags.aslInApkAppMetadataSource() && properties.containsKey(PROPERTY_ANDROID_SAFETY_LABEL_PATH)) { // ASL file extraction is done in post-install ps.setAppMetadataFilePath(appMetadataFile.getAbsolutePath()); ps.setAppMetadataSource(APP_METADATA_SOURCE_APK); } else { Loading Loading @@ -2809,6 +2811,20 @@ final class InstallPackageHelper { } if (succeeded) { if (Flags.aslInApkAppMetadataSource() && pkgSetting.getAppMetadataSource() == APP_METADATA_SOURCE_APK) { if (!PackageManagerServiceUtils.extractAppMetadataFromApk(request.getPkg(), pkgSetting.getAppMetadataFilePath())) { synchronized (mPm.mLock) { PackageSetting setting = mPm.mSettings.getPackageLPr(packageName); if (setting != null) { setting.setAppMetadataFilePath(null) .setAppMetadataSource(APP_METADATA_SOURCE_UNKNOWN); } } } } // Clear the uid cache after we installed a new package. mPm.mPerUidReadTimeoutsCache = null; Loading
services/core/java/com/android/server/pm/PackageManagerService.java +0 −22 Original line number Diff line number Diff line Loading @@ -19,8 +19,6 @@ import static android.Manifest.permission.MANAGE_DEVICE_ADMINS; import static android.Manifest.permission.SET_HARMFUL_APP_WARNINGS; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_APK; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_UNKNOWN; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED; Loading Loading @@ -5232,26 +5230,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService return null; } File file = new File(filePath); if (Flags.aslInApkAppMetadataSource() && !file.exists() && ps.getAppMetadataSource() == APP_METADATA_SOURCE_APK) { AndroidPackageInternal pkg = ps.getPkg(); if (pkg == null) { Slog.w(TAG, "Unable to to extract app metadata for " + packageName + ". APK missing from device"); return null; } if (!PackageManagerServiceUtils.extractAppMetadataFromApk(pkg, file)) { if (file.exists()) { file.delete(); } synchronized (mLock) { PackageSetting pkgSetting = mSettings.getPackageLPr(packageName); pkgSetting.setAppMetadataFilePath(null); pkgSetting.setAppMetadataSource(APP_METADATA_SOURCE_UNKNOWN); } return null; } } try { return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); } catch (FileNotFoundException e) { Loading
services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +7 −1 Original line number Diff line number Diff line Loading @@ -1570,7 +1570,12 @@ public class PackageManagerServiceUtils { /** * Extract the app.metadata file from apk. */ public static boolean extractAppMetadataFromApk(AndroidPackage pkg, File appMetadataFile) { public static boolean extractAppMetadataFromApk(AndroidPackage pkg, String appMetadataFilePath) { if (appMetadataFilePath == null) { return false; } File appMetadataFile = new File(appMetadataFilePath); Map<String, Property> properties = pkg.getProperties(); if (!properties.containsKey(PROPERTY_ANDROID_SAFETY_LABEL_PATH)) { return false; Loading @@ -1596,6 +1601,7 @@ public class PackageManagerServiceUtils { } } catch (Exception e) { Slog.e(TAG, e.getMessage()); appMetadataFile.delete(); } } return false; Loading