am 52af2ca9: DO NOT MERGE - Remove data dirs if a new install fails dexopt.
* commit '52af2ca919c068f1c9389fa4c979d2fe3105af40': DO NOT MERGE - Remove data dirs if a new install fails dexopt.
This commit is contained in:
@@ -217,6 +217,7 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
static final int SCAN_UPDATE_TIME = 1<<6;
|
||||
static final int SCAN_DEFER_DEX = 1<<7;
|
||||
static final int SCAN_BOOTING = 1<<8;
|
||||
static final int SCAN_DELETE_DATA_ON_FAILURES = 1<<9;
|
||||
|
||||
static final int REMOVE_CHATTY = 1<<16;
|
||||
|
||||
@@ -332,7 +333,6 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
new HashMap<String, PackageParser.Package>();
|
||||
|
||||
// Information for the parser to write more useful error messages.
|
||||
File mScanningPath;
|
||||
int mLastScanError;
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
@@ -4144,7 +4144,6 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
mLastScanError = PackageManager.INSTALL_FAILED_INVALID_APK;
|
||||
return null;
|
||||
}
|
||||
mScanningPath = scanFile;
|
||||
|
||||
if ((parseFlags&PackageParser.PARSE_IS_SYSTEM) != 0) {
|
||||
pkg.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
|
||||
@@ -4164,7 +4163,7 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
if (mAndroidApplication != null) {
|
||||
Slog.w(TAG, "*************************************************");
|
||||
Slog.w(TAG, "Core android package being redefined. Skipping.");
|
||||
Slog.w(TAG, " file=" + mScanningPath);
|
||||
Slog.w(TAG, " file=" + scanFile);
|
||||
Slog.w(TAG, "*************************************************");
|
||||
mLastScanError = PackageManager.INSTALL_FAILED_DUPLICATE_PACKAGE;
|
||||
return null;
|
||||
@@ -4644,6 +4643,10 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
if ((scanMode&SCAN_NO_DEX) == 0) {
|
||||
if (performDexOptLI(pkg, forceDex, (scanMode&SCAN_DEFER_DEX) != 0, false)
|
||||
== DEX_OPT_FAILED) {
|
||||
if ((scanMode & SCAN_DELETE_DATA_ON_FAILURES) != 0) {
|
||||
removeDataDirsLI(pkg.packageName);
|
||||
}
|
||||
|
||||
mLastScanError = PackageManager.INSTALL_FAILED_DEXOPT;
|
||||
return null;
|
||||
}
|
||||
@@ -4721,6 +4724,10 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
PackageParser.Package clientPkg = clientLibPkgs.get(i);
|
||||
if (performDexOptLI(clientPkg, forceDex, (scanMode&SCAN_DEFER_DEX) != 0, false)
|
||||
== DEX_OPT_FAILED) {
|
||||
if ((scanMode & SCAN_DELETE_DATA_ON_FAILURES) != 0) {
|
||||
removeDataDirsLI(pkg.packageName);
|
||||
}
|
||||
|
||||
mLastScanError = PackageManager.INSTALL_FAILED_DEXOPT;
|
||||
return null;
|
||||
}
|
||||
@@ -9075,7 +9082,7 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
replacePackageLI(pkg, parseFlags, scanMode, args.user,
|
||||
installerPackageName, res);
|
||||
} else {
|
||||
installNewPackageLI(pkg, parseFlags, scanMode, args.user,
|
||||
installNewPackageLI(pkg, parseFlags, scanMode | SCAN_DELETE_DATA_ON_FAILURES, args.user,
|
||||
installerPackageName, res);
|
||||
}
|
||||
synchronized (mPackages) {
|
||||
|
||||
Reference in New Issue
Block a user