Start passing volume UUID to installd.
This change adds new method overloads to provide volume UUID. The older methods remain for now, and pass through the "null" UUID to reference internal storage. Follows the existing pattern where null arguments are passed as "!". Bug: 19993667 Change-Id: Ia1b7c8550cabc13e4f6e1182eabb650f2c33e44f
This commit is contained in:
@@ -20,7 +20,9 @@ import android.annotation.Nullable;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageStats;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Slog;
|
||||
|
||||
import dalvik.system.VMRuntime;
|
||||
|
||||
import com.android.internal.os.InstallerConnection;
|
||||
@@ -42,9 +44,24 @@ public final class Installer extends SystemService {
|
||||
ping();
|
||||
}
|
||||
|
||||
private static String escapeNull(String arg) {
|
||||
if (TextUtils.isEmpty(arg)) {
|
||||
return "!";
|
||||
} else {
|
||||
return arg;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int install(String name, int uid, int gid, String seinfo) {
|
||||
return install(null, name, uid, gid, seinfo);
|
||||
}
|
||||
|
||||
public int install(String uuid, String name, int uid, int gid, String seinfo) {
|
||||
StringBuilder builder = new StringBuilder("install");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(name);
|
||||
builder.append(' ');
|
||||
builder.append(uid);
|
||||
@@ -146,9 +163,16 @@ public final class Installer extends SystemService {
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int remove(String name, int userId) {
|
||||
return remove(null, name, userId);
|
||||
}
|
||||
|
||||
public int remove(String uuid, String name, int userId) {
|
||||
StringBuilder builder = new StringBuilder("remove");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(name);
|
||||
builder.append(' ');
|
||||
builder.append(userId);
|
||||
@@ -164,9 +188,16 @@ public final class Installer extends SystemService {
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int fixUid(String name, int uid, int gid) {
|
||||
return fixUid(null, name, uid, gid);
|
||||
}
|
||||
|
||||
public int fixUid(String uuid, String name, int uid, int gid) {
|
||||
StringBuilder builder = new StringBuilder("fixuid");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(name);
|
||||
builder.append(' ');
|
||||
builder.append(uid);
|
||||
@@ -175,27 +206,48 @@ public final class Installer extends SystemService {
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int deleteCacheFiles(String name, int userId) {
|
||||
return deleteCacheFiles(null, name, userId);
|
||||
}
|
||||
|
||||
public int deleteCacheFiles(String uuid, String name, int userId) {
|
||||
StringBuilder builder = new StringBuilder("rmcache");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(name);
|
||||
builder.append(' ');
|
||||
builder.append(userId);
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int deleteCodeCacheFiles(String name, int userId) {
|
||||
return deleteCodeCacheFiles(null, name, userId);
|
||||
}
|
||||
|
||||
public int deleteCodeCacheFiles(String uuid, String name, int userId) {
|
||||
StringBuilder builder = new StringBuilder("rmcodecache");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(name);
|
||||
builder.append(' ');
|
||||
builder.append(userId);
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int createUserData(String name, int uid, int userId, String seinfo) {
|
||||
return createUserData(null, name, uid, userId, seinfo);
|
||||
}
|
||||
|
||||
public int createUserData(String uuid, String name, int uid, int userId, String seinfo) {
|
||||
StringBuilder builder = new StringBuilder("mkuserdata");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(name);
|
||||
builder.append(' ');
|
||||
builder.append(uid);
|
||||
@@ -213,16 +265,30 @@ public final class Installer extends SystemService {
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int removeUserDataDirs(int userId) {
|
||||
return removeUserDataDirs(null, userId);
|
||||
}
|
||||
|
||||
public int removeUserDataDirs(String uuid, int userId) {
|
||||
StringBuilder builder = new StringBuilder("rmuser");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(userId);
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int clearUserData(String name, int userId) {
|
||||
return clearUserData(null, name, userId);
|
||||
}
|
||||
|
||||
public int clearUserData(String uuid, String name, int userId) {
|
||||
StringBuilder builder = new StringBuilder("rmuserdata");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(name);
|
||||
builder.append(' ');
|
||||
builder.append(userId);
|
||||
@@ -249,15 +315,30 @@ public final class Installer extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int freeCache(long freeStorageSize) {
|
||||
return freeCache(null, freeStorageSize);
|
||||
}
|
||||
|
||||
public int freeCache(String uuid, long freeStorageSize) {
|
||||
StringBuilder builder = new StringBuilder("freecache");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(String.valueOf(freeStorageSize));
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int getSizeInfo(String pkgName, int persona, String apkPath, String libDirPath,
|
||||
String fwdLockApkPath, String asecPath, String[] instructionSets, PackageStats pStats) {
|
||||
return getSizeInfo(null, pkgName, persona, apkPath, libDirPath, fwdLockApkPath, asecPath,
|
||||
instructionSets, pStats);
|
||||
}
|
||||
|
||||
public int getSizeInfo(String uuid, String pkgName, int persona, String apkPath,
|
||||
String libDirPath, String fwdLockApkPath, String asecPath, String[] instructionSets,
|
||||
PackageStats pStats) {
|
||||
for (String instructionSet : instructionSets) {
|
||||
if (!isValidInstructionSet(instructionSet)) {
|
||||
Slog.e(TAG, "Invalid instruction set: " + instructionSet);
|
||||
@@ -267,6 +348,8 @@ public final class Installer extends SystemService {
|
||||
|
||||
StringBuilder builder = new StringBuilder("getsize");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(pkgName);
|
||||
builder.append(' ');
|
||||
builder.append(persona);
|
||||
@@ -306,6 +389,11 @@ public final class Installer extends SystemService {
|
||||
return mInstaller.execute("movefiles");
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int linkNativeLibraryDirectory(String dataPath, String nativeLibPath32, int userId) {
|
||||
return linkNativeLibraryDirectory(null, dataPath, nativeLibPath32, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Links the 32 bit native library directory in an application's data directory to the
|
||||
* real location for backward compatibility. Note that no such symlink is created for
|
||||
@@ -313,7 +401,8 @@ public final class Installer extends SystemService {
|
||||
*
|
||||
* @return -1 on error
|
||||
*/
|
||||
public int linkNativeLibraryDirectory(String dataPath, String nativeLibPath32, int userId) {
|
||||
public int linkNativeLibraryDirectory(String uuid, String dataPath, String nativeLibPath32,
|
||||
int userId) {
|
||||
if (dataPath == null) {
|
||||
Slog.e(TAG, "linkNativeLibraryDirectory dataPath is null");
|
||||
return -1;
|
||||
@@ -322,7 +411,10 @@ public final class Installer extends SystemService {
|
||||
return -1;
|
||||
}
|
||||
|
||||
StringBuilder builder = new StringBuilder("linklib ");
|
||||
StringBuilder builder = new StringBuilder("linklib");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(dataPath);
|
||||
builder.append(' ');
|
||||
builder.append(nativeLibPath32);
|
||||
@@ -332,9 +424,16 @@ public final class Installer extends SystemService {
|
||||
return mInstaller.execute(builder.toString());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public boolean restoreconData(String pkgName, String seinfo, int uid) {
|
||||
return restoreconData(null, pkgName, seinfo, uid);
|
||||
}
|
||||
|
||||
public boolean restoreconData(String uuid, String pkgName, String seinfo, int uid) {
|
||||
StringBuilder builder = new StringBuilder("restorecondata");
|
||||
builder.append(' ');
|
||||
builder.append(escapeNull(uuid));
|
||||
builder.append(' ');
|
||||
builder.append(pkgName);
|
||||
builder.append(' ');
|
||||
builder.append(seinfo != null ? seinfo : "!");
|
||||
|
||||
Reference in New Issue
Block a user