Loading services/core/java/com/android/server/pm/PackageManagerService.java +68 −33 Original line number Diff line number Diff line Loading @@ -10592,6 +10592,7 @@ public class PackageManagerService extends IPackageManager.Stub { DumpState dumpState = new DumpState(); boolean fullPreferred = false; boolean checkin = false; String packageName = null; Loading @@ -10606,7 +10607,8 @@ public class PackageManagerService extends IPackageManager.Stub { // Right now we only know how to print all. } else if ("-h".equals(opt)) { pw.println("Package manager dump options:"); pw.println(" [-h] [-f] [cmd] ..."); pw.println(" [-h] [-f] [--checkin] [cmd] ..."); pw.println(" --checkin: dump for a checkin"); pw.println(" -f: print details of intent filters"); pw.println(" -h: print this help"); pw.println(" cmd may be one of:"); Loading @@ -10624,6 +10626,8 @@ public class PackageManagerService extends IPackageManager.Stub { pw.println(" <package.name>: info about given package"); pw.println(" k[eysets]: print known keysets"); return; } else if ("--checkin".equals(opt)) { checkin = true; } else if ("-f".equals(opt)) { dumpState.setOptionEnabled(DumpState.OPTION_SHOW_FILTERS); } else { Loading Loading @@ -10672,9 +10676,14 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (checkin) { pw.println("vers,1"); } // reader synchronized (mPackages) { if (dumpState.isDumping(DumpState.DUMP_VERIFIERS) && packageName == null) { if (!checkin) { if (dumpState.onTitlePrinted()) pw.println(); pw.println("Verifiers:"); Loading @@ -10683,6 +10692,10 @@ public class PackageManagerService extends IPackageManager.Stub { pw.print(" (uid="); pw.print(getPackageUid(mRequiredVerifierPackage, 0)); pw.println(")"); } else if (mRequiredVerifierPackage != null) { pw.print("vrfy,"); pw.print(mRequiredVerifierPackage); pw.print(","); pw.println(getPackageUid(mRequiredVerifierPackage, 0)); } } if (dumpState.isDumping(DumpState.DUMP_LIBS) && packageName == null) { Loading @@ -10691,6 +10704,7 @@ public class PackageManagerService extends IPackageManager.Stub { while (it.hasNext()) { String name = it.next(); SharedLibraryEntry ent = mSharedLibraries.get(name); if (!checkin) { if (!printedHeader) { if (dumpState.onTitlePrinted()) pw.println(); Loading @@ -10698,14 +10712,29 @@ public class PackageManagerService extends IPackageManager.Stub { printedHeader = true; } pw.print(" "); } else { pw.print("lib,"); } pw.print(name); if (!checkin) { pw.print(" -> "); } if (ent.path != null) { if (!checkin) { pw.print("(jar) "); pw.print(ent.path); } else { pw.print(",jar,"); pw.print(ent.path); } } else { if (!checkin) { pw.print("(apk) "); pw.print(ent.apk); } else { pw.print(",apk,"); pw.print(ent.apk); } } pw.println(); } Loading @@ -10714,16 +10743,22 @@ public class PackageManagerService extends IPackageManager.Stub { if (dumpState.isDumping(DumpState.DUMP_FEATURES) && packageName == null) { if (dumpState.onTitlePrinted()) pw.println(); if (!checkin) { pw.println("Features:"); } Iterator<String> it = mAvailableFeatures.keySet().iterator(); while (it.hasNext()) { String name = it.next(); if (!checkin) { pw.print(" "); } else { pw.print("feat,"); } pw.println(name); } } if (dumpState.isDumping(DumpState.DUMP_RESOLVERS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_RESOLVERS)) { if (mActivities.dump(pw, dumpState.getTitlePrinted() ? "\nActivity Resolver Table:" : "Activity Resolver Table:", " ", packageName, dumpState.isOptionEnabled(DumpState.OPTION_SHOW_FILTERS))) { Loading @@ -10746,7 +10781,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (dumpState.isDumping(DumpState.DUMP_PREFERRED)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_PREFERRED)) { for (int i=0; i<mSettings.mPreferredActivities.size(); i++) { PreferredIntentResolver pir = mSettings.mPreferredActivities.valueAt(i); int user = mSettings.mPreferredActivities.keyAt(i); Loading @@ -10760,7 +10795,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (dumpState.isDumping(DumpState.DUMP_PREFERRED_XML)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_PREFERRED_XML)) { pw.flush(); FileOutputStream fout = new FileOutputStream(fd); BufferedOutputStream str = new BufferedOutputStream(fout); Loading @@ -10782,11 +10817,11 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (dumpState.isDumping(DumpState.DUMP_PERMISSIONS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_PERMISSIONS)) { mSettings.dumpPermissionsLPr(pw, packageName, dumpState); } if (dumpState.isDumping(DumpState.DUMP_PROVIDERS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_PROVIDERS)) { boolean printedSomething = false; for (PackageParser.Provider p : mProviders.mProviders.values()) { if (packageName != null && !packageName.equals(p.info.packageName)) { Loading Loading @@ -10823,19 +10858,19 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (dumpState.isDumping(DumpState.DUMP_KEYSETS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_KEYSETS)) { mSettings.mKeySetManager.dump(pw, packageName, dumpState); } if (dumpState.isDumping(DumpState.DUMP_PACKAGES)) { mSettings.dumpPackagesLPr(pw, packageName, dumpState); mSettings.dumpPackagesLPr(pw, packageName, dumpState, checkin); } if (dumpState.isDumping(DumpState.DUMP_SHARED_USERS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_SHARED_USERS)) { mSettings.dumpSharedUsersLPr(pw, packageName, dumpState); } if (dumpState.isDumping(DumpState.DUMP_MESSAGES) && packageName == null) { if (!checkin && dumpState.isDumping(DumpState.DUMP_MESSAGES) && packageName == null) { if (dumpState.onTitlePrinted()) pw.println(); mSettings.dumpReadMessagesLPr(pw, dumpState); Loading services/core/java/com/android/server/pm/Settings.java +56 −16 Original line number Diff line number Diff line Loading @@ -2889,8 +2889,44 @@ final class Settings { ApplicationInfo.FLAG_CANT_SAVE_STATE, "CANT_SAVE_STATE", }; void dumpPackageLPr(PrintWriter pw, String prefix, PackageSetting ps, SimpleDateFormat sdf, Date date, List<UserInfo> users) { void dumpPackageLPr(PrintWriter pw, String prefix, String checkinTag, PackageSetting ps, SimpleDateFormat sdf, Date date, List<UserInfo> users) { if (checkinTag != null) { pw.print(checkinTag); pw.print(","); pw.print(ps.realName != null ? ps.realName : ps.name); pw.print(","); pw.print(ps.appId); pw.print(","); pw.print(ps.versionCode); pw.print(","); pw.print(ps.firstInstallTime); pw.print(","); pw.print(ps.lastUpdateTime); pw.print(","); pw.print(ps.installerPackageName != null ? ps.installerPackageName : "?"); pw.println(); for (UserInfo user : users) { pw.print(checkinTag); pw.print("-"); pw.print("usr"); pw.print(","); pw.print(user.id); pw.print(","); pw.print(ps.getInstalled(user.id) ? "I" : "i"); pw.print(ps.getBlocked(user.id) ? "B" : "b"); pw.print(ps.getStopped(user.id) ? "S" : "s"); pw.print(ps.getNotLaunched(user.id) ? "l" : "L"); pw.print(","); pw.print(ps.getEnabled(user.id)); String lastDisabledAppCaller = ps.getLastDisabledAppCaller(user.id); pw.print(","); pw.print(lastDisabledAppCaller != null ? lastDisabledAppCaller : "?"); pw.println(); } return; } pw.print(prefix); pw.print("Package ["); pw.print(ps.realName != null ? ps.realName : ps.name); pw.print("] ("); Loading Loading @@ -3052,7 +3088,7 @@ final class Settings { } } void dumpPackagesLPr(PrintWriter pw, String packageName, DumpState dumpState) { void dumpPackagesLPr(PrintWriter pw, String packageName, DumpState dumpState, boolean checkin) { final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); final Date date = new Date(); boolean printedSomething = false; Loading @@ -3063,26 +3099,27 @@ final class Settings { continue; } if (packageName != null) { if (!checkin && packageName != null) { dumpState.setSharedUser(ps.sharedUser); } if (!printedSomething) { if (!checkin && !printedSomething) { if (dumpState.onTitlePrinted()) pw.println(); pw.println("Packages:"); printedSomething = true; } dumpPackageLPr(pw, " ", ps, sdf, date, users); dumpPackageLPr(pw, " ", checkin ? "pkg" : null, ps, sdf, date, users); } printedSomething = false; if (mRenamedPackages.size() > 0) { if (!checkin && mRenamedPackages.size() > 0) { for (final Map.Entry<String, String> e : mRenamedPackages.entrySet()) { if (packageName != null && !packageName.equals(e.getKey()) && !packageName.equals(e.getValue())) { continue; } if (!checkin) { if (!printedSomething) { if (dumpState.onTitlePrinted()) pw.println(); Loading @@ -3090,8 +3127,11 @@ final class Settings { printedSomething = true; } pw.print(" "); } else { pw.print("ren,"); } pw.print(e.getKey()); pw.print(" -> "); pw.print(checkin ? " -> " : ","); pw.println(e.getValue()); } } Loading @@ -3103,13 +3143,13 @@ final class Settings { && !packageName.equals(ps.name)) { continue; } if (!printedSomething) { if (!checkin && !printedSomething) { if (dumpState.onTitlePrinted()) pw.println(); pw.println("Hidden system packages:"); printedSomething = true; } dumpPackageLPr(pw, " ", ps, sdf, date, users); dumpPackageLPr(pw, " ", checkin ? "dis" : null, ps, sdf, date, users); } } } Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +68 −33 Original line number Diff line number Diff line Loading @@ -10592,6 +10592,7 @@ public class PackageManagerService extends IPackageManager.Stub { DumpState dumpState = new DumpState(); boolean fullPreferred = false; boolean checkin = false; String packageName = null; Loading @@ -10606,7 +10607,8 @@ public class PackageManagerService extends IPackageManager.Stub { // Right now we only know how to print all. } else if ("-h".equals(opt)) { pw.println("Package manager dump options:"); pw.println(" [-h] [-f] [cmd] ..."); pw.println(" [-h] [-f] [--checkin] [cmd] ..."); pw.println(" --checkin: dump for a checkin"); pw.println(" -f: print details of intent filters"); pw.println(" -h: print this help"); pw.println(" cmd may be one of:"); Loading @@ -10624,6 +10626,8 @@ public class PackageManagerService extends IPackageManager.Stub { pw.println(" <package.name>: info about given package"); pw.println(" k[eysets]: print known keysets"); return; } else if ("--checkin".equals(opt)) { checkin = true; } else if ("-f".equals(opt)) { dumpState.setOptionEnabled(DumpState.OPTION_SHOW_FILTERS); } else { Loading Loading @@ -10672,9 +10676,14 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (checkin) { pw.println("vers,1"); } // reader synchronized (mPackages) { if (dumpState.isDumping(DumpState.DUMP_VERIFIERS) && packageName == null) { if (!checkin) { if (dumpState.onTitlePrinted()) pw.println(); pw.println("Verifiers:"); Loading @@ -10683,6 +10692,10 @@ public class PackageManagerService extends IPackageManager.Stub { pw.print(" (uid="); pw.print(getPackageUid(mRequiredVerifierPackage, 0)); pw.println(")"); } else if (mRequiredVerifierPackage != null) { pw.print("vrfy,"); pw.print(mRequiredVerifierPackage); pw.print(","); pw.println(getPackageUid(mRequiredVerifierPackage, 0)); } } if (dumpState.isDumping(DumpState.DUMP_LIBS) && packageName == null) { Loading @@ -10691,6 +10704,7 @@ public class PackageManagerService extends IPackageManager.Stub { while (it.hasNext()) { String name = it.next(); SharedLibraryEntry ent = mSharedLibraries.get(name); if (!checkin) { if (!printedHeader) { if (dumpState.onTitlePrinted()) pw.println(); Loading @@ -10698,14 +10712,29 @@ public class PackageManagerService extends IPackageManager.Stub { printedHeader = true; } pw.print(" "); } else { pw.print("lib,"); } pw.print(name); if (!checkin) { pw.print(" -> "); } if (ent.path != null) { if (!checkin) { pw.print("(jar) "); pw.print(ent.path); } else { pw.print(",jar,"); pw.print(ent.path); } } else { if (!checkin) { pw.print("(apk) "); pw.print(ent.apk); } else { pw.print(",apk,"); pw.print(ent.apk); } } pw.println(); } Loading @@ -10714,16 +10743,22 @@ public class PackageManagerService extends IPackageManager.Stub { if (dumpState.isDumping(DumpState.DUMP_FEATURES) && packageName == null) { if (dumpState.onTitlePrinted()) pw.println(); if (!checkin) { pw.println("Features:"); } Iterator<String> it = mAvailableFeatures.keySet().iterator(); while (it.hasNext()) { String name = it.next(); if (!checkin) { pw.print(" "); } else { pw.print("feat,"); } pw.println(name); } } if (dumpState.isDumping(DumpState.DUMP_RESOLVERS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_RESOLVERS)) { if (mActivities.dump(pw, dumpState.getTitlePrinted() ? "\nActivity Resolver Table:" : "Activity Resolver Table:", " ", packageName, dumpState.isOptionEnabled(DumpState.OPTION_SHOW_FILTERS))) { Loading @@ -10746,7 +10781,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (dumpState.isDumping(DumpState.DUMP_PREFERRED)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_PREFERRED)) { for (int i=0; i<mSettings.mPreferredActivities.size(); i++) { PreferredIntentResolver pir = mSettings.mPreferredActivities.valueAt(i); int user = mSettings.mPreferredActivities.keyAt(i); Loading @@ -10760,7 +10795,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (dumpState.isDumping(DumpState.DUMP_PREFERRED_XML)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_PREFERRED_XML)) { pw.flush(); FileOutputStream fout = new FileOutputStream(fd); BufferedOutputStream str = new BufferedOutputStream(fout); Loading @@ -10782,11 +10817,11 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (dumpState.isDumping(DumpState.DUMP_PERMISSIONS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_PERMISSIONS)) { mSettings.dumpPermissionsLPr(pw, packageName, dumpState); } if (dumpState.isDumping(DumpState.DUMP_PROVIDERS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_PROVIDERS)) { boolean printedSomething = false; for (PackageParser.Provider p : mProviders.mProviders.values()) { if (packageName != null && !packageName.equals(p.info.packageName)) { Loading Loading @@ -10823,19 +10858,19 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (dumpState.isDumping(DumpState.DUMP_KEYSETS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_KEYSETS)) { mSettings.mKeySetManager.dump(pw, packageName, dumpState); } if (dumpState.isDumping(DumpState.DUMP_PACKAGES)) { mSettings.dumpPackagesLPr(pw, packageName, dumpState); mSettings.dumpPackagesLPr(pw, packageName, dumpState, checkin); } if (dumpState.isDumping(DumpState.DUMP_SHARED_USERS)) { if (!checkin && dumpState.isDumping(DumpState.DUMP_SHARED_USERS)) { mSettings.dumpSharedUsersLPr(pw, packageName, dumpState); } if (dumpState.isDumping(DumpState.DUMP_MESSAGES) && packageName == null) { if (!checkin && dumpState.isDumping(DumpState.DUMP_MESSAGES) && packageName == null) { if (dumpState.onTitlePrinted()) pw.println(); mSettings.dumpReadMessagesLPr(pw, dumpState); Loading
services/core/java/com/android/server/pm/Settings.java +56 −16 Original line number Diff line number Diff line Loading @@ -2889,8 +2889,44 @@ final class Settings { ApplicationInfo.FLAG_CANT_SAVE_STATE, "CANT_SAVE_STATE", }; void dumpPackageLPr(PrintWriter pw, String prefix, PackageSetting ps, SimpleDateFormat sdf, Date date, List<UserInfo> users) { void dumpPackageLPr(PrintWriter pw, String prefix, String checkinTag, PackageSetting ps, SimpleDateFormat sdf, Date date, List<UserInfo> users) { if (checkinTag != null) { pw.print(checkinTag); pw.print(","); pw.print(ps.realName != null ? ps.realName : ps.name); pw.print(","); pw.print(ps.appId); pw.print(","); pw.print(ps.versionCode); pw.print(","); pw.print(ps.firstInstallTime); pw.print(","); pw.print(ps.lastUpdateTime); pw.print(","); pw.print(ps.installerPackageName != null ? ps.installerPackageName : "?"); pw.println(); for (UserInfo user : users) { pw.print(checkinTag); pw.print("-"); pw.print("usr"); pw.print(","); pw.print(user.id); pw.print(","); pw.print(ps.getInstalled(user.id) ? "I" : "i"); pw.print(ps.getBlocked(user.id) ? "B" : "b"); pw.print(ps.getStopped(user.id) ? "S" : "s"); pw.print(ps.getNotLaunched(user.id) ? "l" : "L"); pw.print(","); pw.print(ps.getEnabled(user.id)); String lastDisabledAppCaller = ps.getLastDisabledAppCaller(user.id); pw.print(","); pw.print(lastDisabledAppCaller != null ? lastDisabledAppCaller : "?"); pw.println(); } return; } pw.print(prefix); pw.print("Package ["); pw.print(ps.realName != null ? ps.realName : ps.name); pw.print("] ("); Loading Loading @@ -3052,7 +3088,7 @@ final class Settings { } } void dumpPackagesLPr(PrintWriter pw, String packageName, DumpState dumpState) { void dumpPackagesLPr(PrintWriter pw, String packageName, DumpState dumpState, boolean checkin) { final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); final Date date = new Date(); boolean printedSomething = false; Loading @@ -3063,26 +3099,27 @@ final class Settings { continue; } if (packageName != null) { if (!checkin && packageName != null) { dumpState.setSharedUser(ps.sharedUser); } if (!printedSomething) { if (!checkin && !printedSomething) { if (dumpState.onTitlePrinted()) pw.println(); pw.println("Packages:"); printedSomething = true; } dumpPackageLPr(pw, " ", ps, sdf, date, users); dumpPackageLPr(pw, " ", checkin ? "pkg" : null, ps, sdf, date, users); } printedSomething = false; if (mRenamedPackages.size() > 0) { if (!checkin && mRenamedPackages.size() > 0) { for (final Map.Entry<String, String> e : mRenamedPackages.entrySet()) { if (packageName != null && !packageName.equals(e.getKey()) && !packageName.equals(e.getValue())) { continue; } if (!checkin) { if (!printedSomething) { if (dumpState.onTitlePrinted()) pw.println(); Loading @@ -3090,8 +3127,11 @@ final class Settings { printedSomething = true; } pw.print(" "); } else { pw.print("ren,"); } pw.print(e.getKey()); pw.print(" -> "); pw.print(checkin ? " -> " : ","); pw.println(e.getValue()); } } Loading @@ -3103,13 +3143,13 @@ final class Settings { && !packageName.equals(ps.name)) { continue; } if (!printedSomething) { if (!checkin && !printedSomething) { if (dumpState.onTitlePrinted()) pw.println(); pw.println("Hidden system packages:"); printedSomething = true; } dumpPackageLPr(pw, " ", ps, sdf, date, users); dumpPackageLPr(pw, " ", checkin ? "dis" : null, ps, sdf, date, users); } } } Loading