Merge "Start passing volume UUID to installd."
This commit is contained in:
@@ -20,7 +20,9 @@ import android.annotation.Nullable;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageStats;
|
import android.content.pm.PackageStats;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
|
|
||||||
import dalvik.system.VMRuntime;
|
import dalvik.system.VMRuntime;
|
||||||
|
|
||||||
import com.android.internal.os.InstallerConnection;
|
import com.android.internal.os.InstallerConnection;
|
||||||
@@ -42,9 +44,24 @@ public final class Installer extends SystemService {
|
|||||||
ping();
|
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) {
|
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");
|
StringBuilder builder = new StringBuilder("install");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(name);
|
builder.append(name);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(uid);
|
builder.append(uid);
|
||||||
@@ -128,9 +145,16 @@ public final class Installer extends SystemService {
|
|||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int remove(String name, int userId) {
|
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");
|
StringBuilder builder = new StringBuilder("remove");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(name);
|
builder.append(name);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(userId);
|
builder.append(userId);
|
||||||
@@ -146,9 +170,16 @@ public final class Installer extends SystemService {
|
|||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int fixUid(String name, int uid, int gid) {
|
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");
|
StringBuilder builder = new StringBuilder("fixuid");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(name);
|
builder.append(name);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(uid);
|
builder.append(uid);
|
||||||
@@ -157,27 +188,48 @@ public final class Installer extends SystemService {
|
|||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int deleteCacheFiles(String name, int userId) {
|
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");
|
StringBuilder builder = new StringBuilder("rmcache");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(name);
|
builder.append(name);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(userId);
|
builder.append(userId);
|
||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int deleteCodeCacheFiles(String name, int userId) {
|
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");
|
StringBuilder builder = new StringBuilder("rmcodecache");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(name);
|
builder.append(name);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(userId);
|
builder.append(userId);
|
||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int createUserData(String name, int uid, int userId, String seinfo) {
|
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");
|
StringBuilder builder = new StringBuilder("mkuserdata");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(name);
|
builder.append(name);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(uid);
|
builder.append(uid);
|
||||||
@@ -195,16 +247,30 @@ public final class Installer extends SystemService {
|
|||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int removeUserDataDirs(int userId) {
|
public int removeUserDataDirs(int userId) {
|
||||||
|
return removeUserDataDirs(null, userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int removeUserDataDirs(String uuid, int userId) {
|
||||||
StringBuilder builder = new StringBuilder("rmuser");
|
StringBuilder builder = new StringBuilder("rmuser");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(userId);
|
builder.append(userId);
|
||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int clearUserData(String name, int userId) {
|
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");
|
StringBuilder builder = new StringBuilder("rmuserdata");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(name);
|
builder.append(name);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(userId);
|
builder.append(userId);
|
||||||
@@ -231,15 +297,30 @@ public final class Installer extends SystemService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int freeCache(long freeStorageSize) {
|
public int freeCache(long freeStorageSize) {
|
||||||
|
return freeCache(null, freeStorageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int freeCache(String uuid, long freeStorageSize) {
|
||||||
StringBuilder builder = new StringBuilder("freecache");
|
StringBuilder builder = new StringBuilder("freecache");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(String.valueOf(freeStorageSize));
|
builder.append(String.valueOf(freeStorageSize));
|
||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public int getSizeInfo(String pkgName, int persona, String apkPath, String libDirPath,
|
public int getSizeInfo(String pkgName, int persona, String apkPath, String libDirPath,
|
||||||
String fwdLockApkPath, String asecPath, String[] instructionSets, PackageStats pStats) {
|
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) {
|
for (String instructionSet : instructionSets) {
|
||||||
if (!isValidInstructionSet(instructionSet)) {
|
if (!isValidInstructionSet(instructionSet)) {
|
||||||
Slog.e(TAG, "Invalid instruction set: " + instructionSet);
|
Slog.e(TAG, "Invalid instruction set: " + instructionSet);
|
||||||
@@ -249,6 +330,8 @@ public final class Installer extends SystemService {
|
|||||||
|
|
||||||
StringBuilder builder = new StringBuilder("getsize");
|
StringBuilder builder = new StringBuilder("getsize");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(pkgName);
|
builder.append(pkgName);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(persona);
|
builder.append(persona);
|
||||||
@@ -288,6 +371,11 @@ public final class Installer extends SystemService {
|
|||||||
return mInstaller.execute("movefiles");
|
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
|
* 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
|
* real location for backward compatibility. Note that no such symlink is created for
|
||||||
@@ -295,7 +383,8 @@ public final class Installer extends SystemService {
|
|||||||
*
|
*
|
||||||
* @return -1 on error
|
* @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) {
|
if (dataPath == null) {
|
||||||
Slog.e(TAG, "linkNativeLibraryDirectory dataPath is null");
|
Slog.e(TAG, "linkNativeLibraryDirectory dataPath is null");
|
||||||
return -1;
|
return -1;
|
||||||
@@ -305,6 +394,9 @@ public final class Installer extends SystemService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder builder = new StringBuilder("linklib");
|
StringBuilder builder = new StringBuilder("linklib");
|
||||||
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(dataPath);
|
builder.append(dataPath);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(nativeLibPath32);
|
builder.append(nativeLibPath32);
|
||||||
@@ -314,9 +406,16 @@ public final class Installer extends SystemService {
|
|||||||
return mInstaller.execute(builder.toString());
|
return mInstaller.execute(builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public boolean restoreconData(String pkgName, String seinfo, int uid) {
|
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");
|
StringBuilder builder = new StringBuilder("restorecondata");
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
|
builder.append(escapeNull(uuid));
|
||||||
|
builder.append(' ');
|
||||||
builder.append(pkgName);
|
builder.append(pkgName);
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
builder.append(seinfo != null ? seinfo : "!");
|
builder.append(seinfo != null ? seinfo : "!");
|
||||||
|
|||||||
Reference in New Issue
Block a user