Remove "unlinklib" command from installd
unlinklib is no longer necessary since libraries are now either stored
in an ASEC container or in /data/app-lib
Replace lib directory with a symlink to the /data/app-lib directory even
if it's a dangling link. That way developers don't name something "lib"
in their directory which gets blown away during an update.
Change-Id: I142cf13dba9c13aafbaf0ff8d5e9872cbf1cc910
diff --git a/services/java/com/android/server/pm/Installer.java b/services/java/com/android/server/pm/Installer.java
index 4268ae0..85de349 100644
--- a/services/java/com/android/server/pm/Installer.java
+++ b/services/java/com/android/server/pm/Installer.java
@@ -369,10 +369,10 @@
*/
public int linkNativeLibraryDirectory(String dataPath, String nativeLibPath) {
if (dataPath == null) {
- Slog.e(TAG, "unlinkNativeLibraryDirectory dataPath is null");
+ Slog.e(TAG, "linkNativeLibraryDirectory dataPath is null");
return -1;
} else if (nativeLibPath == null) {
- Slog.e(TAG, "unlinkNativeLibraryDirectory nativeLibPath is null");
+ Slog.e(TAG, "linkNativeLibraryDirectory nativeLibPath is null");
return -1;
}
@@ -383,16 +383,4 @@
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());
- }
}
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index b5ae214..e19a803 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -4468,9 +4468,11 @@
throws IOException {
if (!nativeLibraryDir.isDirectory()) {
nativeLibraryDir.delete();
+
if (!nativeLibraryDir.mkdir()) {
throw new IOException("Cannot create " + nativeLibraryDir.getPath());
}
+
try {
Libcore.os.chmod(nativeLibraryDir.getPath(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH
| S_IXOTH);
@@ -4478,6 +4480,8 @@
throw new IOException("Cannot chmod native library directory "
+ nativeLibraryDir.getPath(), e);
}
+ } else if (!SELinux.restorecon(nativeLibraryDir)) {
+ throw new IOException("Cannot set SELinux context for " + nativeLibraryDir.getPath());
}
/*