summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/LoadedApk.java11
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;