Symlink application lib directory when on SD card
This will help legacy games that use dlopen() to directly access the
/data/data/<app>/lib directory before the
ApplicationInfo.nativeLibraryDir was part of the API.
Change-Id: Ie9f3e7239b6334708b5d086ffafe66a507f6d9da
diff --git a/services/java/com/android/server/Installer.java b/services/java/com/android/server/Installer.java
index 1f34eba..85eca60 100644
--- a/services/java/com/android/server/Installer.java
+++ b/services/java/com/android/server/Installer.java
@@ -327,4 +327,33 @@
public int moveFiles() {
return execute("movefiles");
}
+
+ public int linkNativeLibraryDirectory(String dataPath, String nativeLibPath) {
+ if (dataPath == null) {
+ Slog.e(TAG, "unlinkNativeLibraryDirectory dataPath is null");
+ return -1;
+ } else if (nativeLibPath == null) {
+ Slog.e(TAG, "unlinkNativeLibraryDirectory nativeLibPath is null");
+ return -1;
+ }
+
+ StringBuilder builder = new StringBuilder("linklib ");
+ builder.append(dataPath);
+ builder.append(' ');
+ builder.append(nativeLibPath);
+
+ return execute(builder.toString());
+ }
+
+ public int unlinkNativeLibraryDirectory(String dataPath) {
+ if (dataPath == null) {
+ Slog.e(TAG, "unlinkNativeLibraryDirectory dataPath is null");
+ return -1;
+ }
+
+ StringBuilder builder = new StringBuilder("unlinklib ");
+ builder.append(dataPath);
+
+ return execute(builder.toString());
+ }
}