diff options
author | Johan Redestig <johan.redestig@sonymobile.com> | 2014-01-30 09:39:00 +0100 |
---|---|---|
committer | Johan Redestig <johan.redestig@sonymobile.com> | 2014-01-30 09:45:23 +0100 |
commit | 41a17c2e72d61be0a060bf43b669623462a23f13 (patch) | |
tree | 1383387e1cbf7767424ea1b2965408c11f620b91 /services | |
parent | db3278ab429860161e5baa26f141de95a48de0cb (diff) | |
download | frameworks_base-41a17c2e72d61be0a060bf43b669623462a23f13.zip frameworks_base-41a17c2e72d61be0a060bf43b669623462a23f13.tar.gz frameworks_base-41a17c2e72d61be0a060bf43b669623462a23f13.tar.bz2 |
Use canonical path for /vendor/app
It wasn't possible to start apps installed in /vendor/app
on a device where /vendor was a symbolic link to /system/vendor.
This is currently the default configuration for android (see
init.rc)
During installation a dex file is created at:
/data/dalvik-cache/vendor@app@blah.blah.apk@classes.dex
But dalvik would fail to start this app with the following error:
I/dalvikvm( 3453): Unable to open or create cache for /system/vendor/app/blah.apk \
(/data/dalvik-cache/system@vendor@app@blah.blah.apk@classes.dex)
Note that dalvik were trying to start /system/vendor/app while the
app was installed in /vendor. There was a conflict between the
package manager and dalvik on how to interpret paths. This change
makes the package manager consistent with dalvik.
Change-Id: I1c7e3c3ae45f97dd742cbf06f7965a7405c821a7
Diffstat (limited to 'services')
-rwxr-xr-x | services/java/com/android/server/pm/PackageManagerService.java | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 7e244b9..7ea1fce 100755 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -1301,6 +1301,11 @@ public class PackageManagerService extends IPackageManager.Stub { // Collect all vendor packages. File vendorAppDir = new File("/vendor/app"); + try { + vendorAppDir = vendorAppDir.getCanonicalFile(); + } catch (IOException e) { + // failed to look up canonical path, continue with original one + } mVendorInstallObserver = new AppDirObserver( vendorAppDir.getPath(), OBSERVER_EVENTS, true, false); mVendorInstallObserver.startWatching(); |