summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kenny Root <kroot@google.com> 2010-10-05 13:13:36 -0700
committer Android Git Automerger <android-git-automerger@android.com> 2010-10-05 13:13:36 -0700
commitf2cc2e522177683145b2daa0de0ed898b865824d (patch)
tree450110e6e06db0aad0437324ffe9bcc26b1f2338
parent5d722580afbca277ebc760d5b2c0400f4bca1a8d (diff)
parent8735c4cda00de26127d694bfbc81e192c4caca44 (diff)
am 8735c4cd: Merge "Get correct native library path on reinstall" into gingerbread
Merge commit '8735c4cda00de26127d694bfbc81e192c4caca44' into gingerbread-plus-aosp * commit '8735c4cda00de26127d694bfbc81e192c4caca44': Get correct native library path on reinstall
-rw-r--r--services/java/com/android/server/PackageManagerService.java23
1 files changed, 16 insertions, 7 deletions
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index dbf92ba2aaf2..58ea4db6d643 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -3241,8 +3241,6 @@ class PackageManagerService extends IPackageManager.Stub {
}
}
- pkg.applicationInfo.nativeLibraryDir = pkgSetting.nativeLibraryPathString;
-
/*
* Set the data dir to the default "/data/data/<package name>/lib"
* if we got here without anyone telling us different (e.g., apps
@@ -3252,10 +3250,14 @@ class PackageManagerService extends IPackageManager.Stub {
* This happens during an upgrade from a package settings file that
* doesn't have a native library path attribute at all.
*/
- if (pkgSetting.nativeLibraryPathString == null && pkg.applicationInfo.dataDir != null) {
- final String nativeLibraryPath = new File(dataPath, LIB_DIR_NAME).getPath();
- pkg.applicationInfo.nativeLibraryDir = nativeLibraryPath;
- pkgSetting.nativeLibraryPathString = nativeLibraryPath;
+ if (pkg.applicationInfo.nativeLibraryDir == null && pkg.applicationInfo.dataDir != null) {
+ if (pkgSetting.nativeLibraryPathString == null) {
+ final String nativeLibraryPath = new File(dataPath, LIB_DIR_NAME).getPath();
+ pkg.applicationInfo.nativeLibraryDir = nativeLibraryPath;
+ pkgSetting.nativeLibraryPathString = nativeLibraryPath;
+ } else {
+ pkg.applicationInfo.nativeLibraryDir = pkgSetting.nativeLibraryPathString;
+ }
}
pkgSetting.uidError = uidError;
@@ -8051,7 +8053,7 @@ class PackageManagerService extends IPackageManager.Stub {
if (p != null) {
if (!p.codePath.equals(codePath)) {
// Check to see if its a disabled system app
- if((p != null) && ((p.pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0)) {
+ if ((p.pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0) {
// This is an updated system app with versions in both system
// and data partition. Just let the most recent version
// take precedence.
@@ -8062,6 +8064,13 @@ class PackageManagerService extends IPackageManager.Stub {
// let's log a message about it.
Slog.i(TAG, "Package " + name + " codePath changed from " + p.codePath
+ " to " + codePath + "; Retaining data and using new");
+ /*
+ * Since we've changed paths, we need to prefer the new
+ * native library path over the one stored in the
+ * package settings since we might have moved from
+ * internal to external storage or vice versa.
+ */
+ p.nativeLibraryPathString = nativeLibraryPathString;
}
}
if (p.sharedUser != sharedUser) {