diff options
| -rw-r--r-- | core/java/android/app/LoadedApk.java | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index fc7d9a553e31..b24d6e297d6c 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -64,6 +64,7 @@ import java.lang.ref.WeakReference; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URL; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -667,7 +668,17 @@ public final class LoadedApk { makePaths(mActivityThread, isBundledApp, mApplicationInfo, zipPaths, libPaths); String libraryPermittedPath = mDataDir; + if (isBundledApp) { + // For bundled apps, add the base directory of the app (e.g., + // /system/app/Foo/) to the permitted paths so that it can load libraries + // embedded in module apks under the directory. For now, GmsCore is relying + // on this, but this isn't specific to the app. Also note that, we don't + // need to do this for unbundled apps as entire /data is already set to + // the permitted paths for them. + libraryPermittedPath += File.pathSeparator + + Paths.get(getAppDir()).getParent().toString(); + // This is necessary to grant bundled apps access to // libraries located in subdirectories of /system/lib libraryPermittedPath += File.pathSeparator + defaultSearchPaths; |