ActivityManagerService: add SdkSandbox-Client-Package header

Add SdkSandbox-Client-Package header to dropbox reports generated for a
SDK sandbox crash.

Bug: 239806676
Test: manual (adb shell dumpsys dropbox)
Change-Id: Id32fbe91493ef8adcda01d534668d27e7619f943
This commit is contained in:
Will Burr
2022-08-19 12:35:30 +00:00
parent 786b3af759
commit c5f5941f0c

View File

@@ -8745,12 +8745,40 @@ public class ActivityManagerService extends IActivityManager.Stub
if (process.info.isInstantApp()) {
sb.append("Instant-App: true\n");
}
if (isSdkSandboxUid(process.uid)) {
final int appUid = Process.getAppUidForSdkSandboxUid(process.uid);
try {
String[] clientPackages = pm.getPackagesForUid(appUid);
// In shared UID case, don't add the package information
if (clientPackages.length == 1) {
appendSdkSandboxClientPackageHeader(sb, clientPackages[0], callingUserId);
}
} catch (RemoteException e) {
Slog.e(TAG, "Error getting packages for client app uid: " + appUid, e);
}
sb.append("SdkSandbox: true\n");
}
}
}
private void appendSdkSandboxClientPackageHeader(StringBuilder sb, String pkg, int userId) {
final IPackageManager pm = AppGlobals.getPackageManager();
sb.append("SdkSandbox-Client-Package: ").append(pkg);
try {
final PackageInfo pi = pm.getPackageInfo(pkg, 0, userId);
if (pi != null) {
sb.append(" v").append(pi.getLongVersionCode());
if (pi.versionName != null) {
sb.append(" (").append(pi.versionName).append(")");
}
}
} catch (RemoteException e) {
Slog.e(TAG, "Error getting package info for SDK sandbox client: " + pkg, e);
}
sb.append("\n");
}
private static String processClass(ProcessRecord process) {
if (process == null || process.getPid() == MY_PID) {
return "system_server";