Merge "Allow profiling for standalone system server jars."

This commit is contained in:
Islam Elbanna 2022-10-18 09:21:53 +00:00 committed by Gerrit Code Review
commit bda789c641
2 changed files with 14 additions and 4 deletions

View File

@ -517,7 +517,12 @@ public class ZygoteInit {
if (shouldProfileSystemServer() && (Build.IS_USERDEBUG || Build.IS_ENG)) {
try {
Log.d(TAG, "Preparing system server profile");
prepareSystemServerProfile(systemServerClasspath);
final String standaloneSystemServerJars =
Os.getenv("STANDALONE_SYSTEMSERVER_JARS");
final String systemServerPaths = standaloneSystemServerJars != null
? String.join(":", systemServerClasspath, standaloneSystemServerJars)
: systemServerClasspath;
prepareSystemServerProfile(systemServerPaths);
} catch (Exception e) {
Log.wtf(TAG, "Failed to set up system server profile", e);
}
@ -603,12 +608,12 @@ public class ZygoteInit {
* permissions. From the installer perspective the system server is a regular package which can
* capture profile information.
*/
private static void prepareSystemServerProfile(String systemServerClasspath)
private static void prepareSystemServerProfile(String systemServerPaths)
throws RemoteException {
if (systemServerClasspath.isEmpty()) {
if (systemServerPaths.isEmpty()) {
return;
}
String[] codePaths = systemServerClasspath.split(":");
String[] codePaths = systemServerPaths.split(":");
final IInstalld installd = IInstalld.Stub
.asInterface(ServiceManager.getService("installd"));

View File

@ -339,6 +339,11 @@ public class ArtManagerService extends android.content.pm.dex.IArtManager.Stub {
String classpath = String.join(":", Os.getenv("BOOTCLASSPATH"),
Os.getenv("SYSTEMSERVERCLASSPATH"));
final String standaloneSystemServerJars = Os.getenv("STANDALONE_SYSTEMSERVER_JARS");
if (standaloneSystemServerJars != null) {
classpath = String.join(":", classpath, standaloneSystemServerJars);
}
// Create the snapshot.
createProfileSnapshot(BOOT_IMAGE_ANDROID_PACKAGE, BOOT_IMAGE_PROFILE_NAME, classpath,
/*appId*/ -1, callback);