diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/Installer.java | 108 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 3 |
2 files changed, 90 insertions, 21 deletions
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java index d8f6b80970c0..bff68d85b4e5 100644 --- a/services/core/java/com/android/server/pm/Installer.java +++ b/services/core/java/com/android/server/pm/Installer.java @@ -204,35 +204,70 @@ public final class Installer extends SystemService { outputPath, dexFlags, compilerFilter, volumeUuid, sharedLibraries); } - public boolean mergeProfiles(int uid, String pkgName) throws InstallerException { - return mInstaller.mergeProfiles(uid, pkgName); + public boolean mergeProfiles(int uid, String packageName) throws InstallerException { + checkLock(); + try { + return mInstalld.mergeProfiles(uid, packageName); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } - public boolean dumpProfiles(String gid, String packageName, String codePaths) + public boolean dumpProfiles(int uid, String packageName, String codePaths) throws InstallerException { - return mInstaller.dumpProfiles(gid, packageName, codePaths); + checkLock(); + try { + return mInstalld.dumpProfiles(uid, packageName, codePaths); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void idmap(String targetApkPath, String overlayApkPath, int uid) throws InstallerException { - mInstaller.execute("idmap", targetApkPath, overlayApkPath, uid); + checkLock(); + try { + mInstalld.idmap(targetApkPath, overlayApkPath, uid); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void rmdex(String codePath, String instructionSet) throws InstallerException { assertValidInstructionSet(instructionSet); - mInstaller.execute("rmdex", codePath, instructionSet); + checkLock(); + try { + mInstalld.rmdex(codePath, instructionSet); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void rmPackageDir(String packageDir) throws InstallerException { - mInstaller.execute("rmpackagedir", packageDir); + checkLock(); + try { + mInstalld.rmPackageDir(packageDir); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } - public void clearAppProfiles(String pkgName) throws InstallerException { - mInstaller.execute("clear_app_profiles", pkgName); + public void clearAppProfiles(String packageName) throws InstallerException { + checkLock(); + try { + mInstalld.clearAppProfiles(packageName); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } - public void destroyAppProfiles(String pkgName) throws InstallerException { - mInstaller.execute("destroy_app_profiles", pkgName); + public void destroyAppProfiles(String packageName) throws InstallerException { + checkLock(); + try { + mInstalld.destroyAppProfiles(packageName); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void createUserData(String uuid, int userId, int userSerial, int flags) @@ -256,11 +291,21 @@ public final class Installer extends SystemService { public void markBootComplete(String instructionSet) throws InstallerException { assertValidInstructionSet(instructionSet); - mInstaller.execute("markbootcomplete", instructionSet); + checkLock(); + try { + mInstalld.markBootComplete(instructionSet); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void freeCache(String uuid, long freeStorageSize) throws InstallerException { - mInstaller.execute("freecache", uuid, freeStorageSize); + checkLock(); + try { + mInstalld.freeCache(uuid, freeStorageSize); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } /** @@ -268,29 +313,54 @@ public final class Installer extends SystemService { * directory to the real location for backward compatibility. Note that no * such symlink is created for 64 bit shared libraries. */ - public void linkNativeLibraryDirectory(String uuid, String dataPath, String nativeLibPath32, + public void linkNativeLibraryDirectory(String uuid, String packageName, String nativeLibPath32, int userId) throws InstallerException { - mInstaller.execute("linklib", uuid, dataPath, nativeLibPath32, userId); + checkLock(); + try { + mInstalld.linkNativeLibraryDirectory(uuid, packageName, nativeLibPath32, userId); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void createOatDir(String oatDir, String dexInstructionSet) throws InstallerException { - mInstaller.execute("createoatdir", oatDir, dexInstructionSet); + checkLock(); + try { + mInstalld.createOatDir(oatDir, dexInstructionSet); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void linkFile(String relativePath, String fromBase, String toBase) throws InstallerException { - mInstaller.execute("linkfile", relativePath, fromBase, toBase); + checkLock(); + try { + mInstalld.linkFile(relativePath, fromBase, toBase); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void moveAb(String apkPath, String instructionSet, String outputPath) throws InstallerException { - mInstaller.execute("move_ab", apkPath, instructionSet, outputPath); + checkLock(); + try { + mInstalld.moveAb(apkPath, instructionSet, outputPath); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } public void deleteOdex(String apkPath, String instructionSet, String outputPath) throws InstallerException { - mInstaller.execute("delete_odex", apkPath, instructionSet, outputPath); + checkLock(); + try { + mInstalld.deleteOdex(apkPath, instructionSet, outputPath); + } catch (RemoteException | ServiceSpecificException e) { + throw new InstallerException(e.getMessage()); + } } private static void assertValidInstructionSet(String instructionSet) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 27fb35c643b8..2ab1c6c0662f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -7554,9 +7554,8 @@ public class PackageManagerService extends IPackageManager.Stub { final int sharedGid = UserHandle.getSharedAppGid(pkg.applicationInfo.uid); try { List<String> allCodePaths = pkg.getAllCodePathsExcludingResourceOnly(); - String gid = Integer.toString(sharedGid); String codePaths = TextUtils.join(";", allCodePaths); - mInstaller.dumpProfiles(gid, packageName, codePaths); + mInstaller.dumpProfiles(sharedGid, packageName, codePaths); } catch (InstallerException e) { Slog.w(TAG, "Failed to dump profiles", e); } |