Loading core/java/android/content/pm/PackageParser.java +1 −0 Original line number Diff line number Diff line Loading @@ -353,6 +353,7 @@ public class PackageParser { public final static int PARSE_IGNORE_PROCESSES = 1<<3; public final static int PARSE_FORWARD_LOCK = 1<<4; public final static int PARSE_ON_SDCARD = 1<<5; public final static int PARSE_IS_SYSTEM_DIR = 1<<6; public int getParseError() { return mParseError; Loading services/java/com/android/server/PackageManagerService.java +11 −24 Original line number Diff line number Diff line Loading @@ -851,7 +851,8 @@ class PackageManagerService extends IPackageManager.Stub { mFrameworkInstallObserver = new AppDirObserver( mFrameworkDir.getPath(), OBSERVER_EVENTS, true); mFrameworkInstallObserver.startWatching(); scanDirLI(mFrameworkDir, PackageParser.PARSE_IS_SYSTEM, scanDirLI(mFrameworkDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanMode | SCAN_NO_DEX); // Collect all system packages. Loading @@ -859,7 +860,8 @@ class PackageManagerService extends IPackageManager.Stub { mSystemInstallObserver = new AppDirObserver( mSystemAppDir.getPath(), OBSERVER_EVENTS, true); mSystemInstallObserver.startWatching(); scanDirLI(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM, scanMode); scanDirLI(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanMode); if (mInstaller != null) { if (DEBUG_UPGRADE) Log.v(TAG, "Running installd update commands"); Loading Loading @@ -2711,8 +2713,6 @@ class PackageManagerService extends IPackageManager.Stub { SharedUserSetting suid = null; PackageSetting pkgSetting = null; boolean removeExisting = false; if ((pkg.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) == 0) { // Only system apps can use these features. pkg.mOriginalPackages = null; Loading Loading @@ -2903,7 +2903,7 @@ class PackageManagerService extends IPackageManager.Stub { if (!verifySignaturesLP(pkgSetting, pkg, parseFlags, (scanMode&SCAN_UPDATE_SIGNATURE) != 0)) { if ((parseFlags&PackageParser.PARSE_IS_SYSTEM) == 0) { if ((parseFlags&PackageParser.PARSE_IS_SYSTEM_DIR) == 0) { mLastScanError = PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE; return null; } Loading @@ -2922,7 +2922,10 @@ class PackageManagerService extends IPackageManager.Stub { return null; } } removeExisting = true; // File a report about this. String msg = "System package " + pkg.packageName + " signature changed; retaining data."; reportSettingsProblem(Log.WARN, msg); } // Verify that this new package doesn't have any content providers Loading Loading @@ -2955,23 +2958,6 @@ class PackageManagerService extends IPackageManager.Stub { final String pkgName = pkg.packageName; if (removeExisting) { boolean useEncryptedFSDir = useEncryptedFilesystemForPackage(pkg); if (mInstaller != null) { int ret = mInstaller.remove(pkgName, useEncryptedFSDir); if (ret != 0) { String msg = "System package " + pkg.packageName + " could not have data directory erased after signature change."; reportSettingsProblem(Log.WARN, msg); mLastScanError = PackageManager.INSTALL_FAILED_REPLACE_COULDNT_DELETE; return null; } } Slog.w(TAG, "System package " + pkg.packageName + " signature changed: existing data removed."); mLastScanError = PackageManager.INSTALL_SUCCEEDED; } if (pkg.mAdoptPermissions != null) { // This package wants to adopt ownership of permissions from // another package. Loading Loading @@ -4500,7 +4486,8 @@ class PackageManagerService extends IPackageManager.Stub { if ((event&ADD_EVENTS) != 0) { if (p == null) { p = scanPackageLI(fullPath, (mIsRom ? PackageParser.PARSE_IS_SYSTEM : 0) | (mIsRom ? PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR: 0) | PackageParser.PARSE_CHATTY | PackageParser.PARSE_MUST_BE_APK, SCAN_MONITOR | SCAN_NO_PATHS); Loading Loading
core/java/android/content/pm/PackageParser.java +1 −0 Original line number Diff line number Diff line Loading @@ -353,6 +353,7 @@ public class PackageParser { public final static int PARSE_IGNORE_PROCESSES = 1<<3; public final static int PARSE_FORWARD_LOCK = 1<<4; public final static int PARSE_ON_SDCARD = 1<<5; public final static int PARSE_IS_SYSTEM_DIR = 1<<6; public int getParseError() { return mParseError; Loading
services/java/com/android/server/PackageManagerService.java +11 −24 Original line number Diff line number Diff line Loading @@ -851,7 +851,8 @@ class PackageManagerService extends IPackageManager.Stub { mFrameworkInstallObserver = new AppDirObserver( mFrameworkDir.getPath(), OBSERVER_EVENTS, true); mFrameworkInstallObserver.startWatching(); scanDirLI(mFrameworkDir, PackageParser.PARSE_IS_SYSTEM, scanDirLI(mFrameworkDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanMode | SCAN_NO_DEX); // Collect all system packages. Loading @@ -859,7 +860,8 @@ class PackageManagerService extends IPackageManager.Stub { mSystemInstallObserver = new AppDirObserver( mSystemAppDir.getPath(), OBSERVER_EVENTS, true); mSystemInstallObserver.startWatching(); scanDirLI(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM, scanMode); scanDirLI(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanMode); if (mInstaller != null) { if (DEBUG_UPGRADE) Log.v(TAG, "Running installd update commands"); Loading Loading @@ -2711,8 +2713,6 @@ class PackageManagerService extends IPackageManager.Stub { SharedUserSetting suid = null; PackageSetting pkgSetting = null; boolean removeExisting = false; if ((pkg.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) == 0) { // Only system apps can use these features. pkg.mOriginalPackages = null; Loading Loading @@ -2903,7 +2903,7 @@ class PackageManagerService extends IPackageManager.Stub { if (!verifySignaturesLP(pkgSetting, pkg, parseFlags, (scanMode&SCAN_UPDATE_SIGNATURE) != 0)) { if ((parseFlags&PackageParser.PARSE_IS_SYSTEM) == 0) { if ((parseFlags&PackageParser.PARSE_IS_SYSTEM_DIR) == 0) { mLastScanError = PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE; return null; } Loading @@ -2922,7 +2922,10 @@ class PackageManagerService extends IPackageManager.Stub { return null; } } removeExisting = true; // File a report about this. String msg = "System package " + pkg.packageName + " signature changed; retaining data."; reportSettingsProblem(Log.WARN, msg); } // Verify that this new package doesn't have any content providers Loading Loading @@ -2955,23 +2958,6 @@ class PackageManagerService extends IPackageManager.Stub { final String pkgName = pkg.packageName; if (removeExisting) { boolean useEncryptedFSDir = useEncryptedFilesystemForPackage(pkg); if (mInstaller != null) { int ret = mInstaller.remove(pkgName, useEncryptedFSDir); if (ret != 0) { String msg = "System package " + pkg.packageName + " could not have data directory erased after signature change."; reportSettingsProblem(Log.WARN, msg); mLastScanError = PackageManager.INSTALL_FAILED_REPLACE_COULDNT_DELETE; return null; } } Slog.w(TAG, "System package " + pkg.packageName + " signature changed: existing data removed."); mLastScanError = PackageManager.INSTALL_SUCCEEDED; } if (pkg.mAdoptPermissions != null) { // This package wants to adopt ownership of permissions from // another package. Loading Loading @@ -4500,7 +4486,8 @@ class PackageManagerService extends IPackageManager.Stub { if ((event&ADD_EVENTS) != 0) { if (p == null) { p = scanPackageLI(fullPath, (mIsRom ? PackageParser.PARSE_IS_SYSTEM : 0) | (mIsRom ? PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR: 0) | PackageParser.PARSE_CHATTY | PackageParser.PARSE_MUST_BE_APK, SCAN_MONITOR | SCAN_NO_PATHS); Loading