diff options
| author | 2010-10-05 13:13:36 -0700 | |
|---|---|---|
| committer | 2010-10-05 13:13:36 -0700 | |
| commit | f2cc2e522177683145b2daa0de0ed898b865824d (patch) | |
| tree | 450110e6e06db0aad0437324ffe9bcc26b1f2338 | |
| parent | 5d722580afbca277ebc760d5b2c0400f4bca1a8d (diff) | |
| parent | 8735c4cda00de26127d694bfbc81e192c4caca44 (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.java | 23 |
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) { |