Revert "Log the apk optimization state in the MetricsLogger"
This reverts commit 0a8bea818c330d02161322901534992253a2f9ee.
E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: ActivityManager
E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.am.ProcessRecord.requiredAbi' on a null object reference
E AndroidRuntime: at com.android.server.am.ActivityMetricsLogger.logAppTransition(ActivityMetricsLogger.java:504)
E AndroidRuntime: at com.android.server.am.ActivityMetricsLogger.access$100(ActivityMetricsLogger.java:62)
Bug: 73626352
Change-Id: Idd50e0d2cf34e5393b4ae76ef8bc48b0067532eb
diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
index 36c1722..e2ceb31 100644
--- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
@@ -24,8 +24,6 @@
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_WINDOWS_DRAWN_DELAY_MS;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_CLASS_NAME;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_INSTANT_APP_LAUNCH_TOKEN;
-import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PACKAGE_OPTIMIZATION_COMPILATION_REASON;
-import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PACKAGE_OPTIMIZATION_COMPILATION_FILTER;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_TRANSITION_COLD_LAUNCH;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_TRANSITION_HOT_LAUNCH;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_TRANSITION_REPORTED_DRAWN_NO_BUNDLE;
@@ -38,8 +36,6 @@
import static com.android.server.am.MemoryStatUtil.readMemoryStatFromMemcg;
import android.content.Context;
-import android.content.pm.dex.ArtManagerInternal;
-import android.content.pm.dex.PackageOptimizationInfo;
import android.metrics.LogMaker;
import android.os.Handler;
import android.os.Looper;
@@ -52,7 +48,6 @@
import com.android.internal.logging.MetricsLogger;
import com.android.internal.os.SomeArgs;
-import com.android.server.LocalServices;
import java.util.ArrayList;
@@ -74,7 +69,7 @@
private static final long INVALID_START_TIME = -1;
private static final int MSG_CHECK_VISIBILITY = 0;
- private static final int MSG_LOG_APP_TRANSITION = 1;
+ private static final int MSG_LOG_APP_START_MEMORY_STATE_CAPTURE = 1;
// Preallocated strings we are sending to tron, so we don't have to allocate a new one every
// time we log.
@@ -97,9 +92,6 @@
private final SparseArray<StackTransitionInfo> mStackTransitionInfo = new SparseArray<>();
private final SparseArray<StackTransitionInfo> mLastStackTransitionInfo = new SparseArray<>();
private final H mHandler;
-
- private ArtManagerInternal mArtManagerInternal;
-
private final class H extends Handler {
public H(Looper looper) {
@@ -113,12 +105,12 @@
final SomeArgs args = (SomeArgs) msg.obj;
checkVisibility((TaskRecord) args.arg1, (ActivityRecord) args.arg2);
break;
- case MSG_LOG_APP_TRANSITION:
- logAppTransition(msg.arg1, msg.arg2, (StackTransitionInfo) msg.obj);
+ case MSG_LOG_APP_START_MEMORY_STATE_CAPTURE:
+ logAppStartMemoryStateCapture((StackTransitionInfo) msg.obj);
break;
}
}
- }
+ };
private final class StackTransitionInfo {
private ActivityRecord launchedActivity;
@@ -459,75 +451,54 @@
if (type == -1) {
return;
}
- mHandler.obtainMessage(MSG_LOG_APP_TRANSITION, mCurrentTransitionDeviceUptime,
- mCurrentTransitionDelayMs, info).sendToTarget();
+ final LogMaker builder = new LogMaker(APP_TRANSITION);
+ builder.setPackageName(info.launchedActivity.packageName);
+ builder.setType(type);
+ builder.addTaggedData(FIELD_CLASS_NAME, info.launchedActivity.info.name);
+ final boolean isInstantApp = info.launchedActivity.info.applicationInfo.isInstantApp();
+ if (info.launchedActivity.launchedFromPackage != null) {
+ builder.addTaggedData(APP_TRANSITION_CALLING_PACKAGE_NAME,
+ info.launchedActivity.launchedFromPackage);
+ }
+ String launchToken = info.launchedActivity.info.launchToken;
+ if (launchToken != null) {
+ builder.addTaggedData(FIELD_INSTANT_APP_LAUNCH_TOKEN, launchToken);
+ info.launchedActivity.info.launchToken = null;
+ }
+ builder.addTaggedData(APP_TRANSITION_IS_EPHEMERAL, isInstantApp ? 1 : 0);
+ builder.addTaggedData(APP_TRANSITION_DEVICE_UPTIME_SECONDS,
+ mCurrentTransitionDeviceUptime);
+ builder.addTaggedData(APP_TRANSITION_DELAY_MS, mCurrentTransitionDelayMs);
+ builder.setSubtype(info.reason);
+ if (info.startingWindowDelayMs != -1) {
+ builder.addTaggedData(APP_TRANSITION_STARTING_WINDOW_DELAY_MS,
+ info.startingWindowDelayMs);
+ }
+ if (info.bindApplicationDelayMs != -1) {
+ builder.addTaggedData(APP_TRANSITION_BIND_APPLICATION_DELAY_MS,
+ info.bindApplicationDelayMs);
+ }
+ builder.addTaggedData(APP_TRANSITION_WINDOWS_DRAWN_DELAY_MS, info.windowsDrawnDelayMs);
+ mMetricsLogger.write(builder);
+ StatsLog.write(
+ StatsLog.APP_START_CHANGED,
+ info.launchedActivity.appInfo.uid,
+ info.launchedActivity.packageName,
+ convertAppStartTransitionType(type),
+ info.launchedActivity.info.name,
+ info.launchedActivity.launchedFromPackage,
+ isInstantApp,
+ mCurrentTransitionDeviceUptime * 1000,
+ info.reason,
+ mCurrentTransitionDelayMs,
+ info.startingWindowDelayMs,
+ info.bindApplicationDelayMs,
+ info.windowsDrawnDelayMs,
+ launchToken);
+ mHandler.obtainMessage(MSG_LOG_APP_START_MEMORY_STATE_CAPTURE, info).sendToTarget();
}
}
- // This gets called on the handler without holding the activity manager lock.
- private void logAppTransition(int currentTransitionDeviceUptime, int currentTransitionDelayMs,
- StackTransitionInfo info) {
- final int type = getTransitionType(info);
- final LogMaker builder = new LogMaker(APP_TRANSITION);
- builder.setPackageName(info.launchedActivity.packageName);
- builder.setType(type);
- builder.addTaggedData(FIELD_CLASS_NAME, info.launchedActivity.info.name);
- final boolean isInstantApp = info.launchedActivity.info.applicationInfo.isInstantApp();
- if (info.launchedActivity.launchedFromPackage != null) {
- builder.addTaggedData(APP_TRANSITION_CALLING_PACKAGE_NAME,
- info.launchedActivity.launchedFromPackage);
- }
- String launchToken = info.launchedActivity.info.launchToken;
- if (launchToken != null) {
- builder.addTaggedData(FIELD_INSTANT_APP_LAUNCH_TOKEN, launchToken);
- info.launchedActivity.info.launchToken = null;
- }
- builder.addTaggedData(APP_TRANSITION_IS_EPHEMERAL, isInstantApp ? 1 : 0);
- builder.addTaggedData(APP_TRANSITION_DEVICE_UPTIME_SECONDS,
- currentTransitionDeviceUptime);
- builder.addTaggedData(APP_TRANSITION_DELAY_MS, currentTransitionDelayMs);
- builder.setSubtype(info.reason);
- if (info.startingWindowDelayMs != -1) {
- builder.addTaggedData(APP_TRANSITION_STARTING_WINDOW_DELAY_MS,
- info.startingWindowDelayMs);
- }
- if (info.bindApplicationDelayMs != -1) {
- builder.addTaggedData(APP_TRANSITION_BIND_APPLICATION_DELAY_MS,
- info.bindApplicationDelayMs);
- }
- builder.addTaggedData(APP_TRANSITION_WINDOWS_DRAWN_DELAY_MS, info.windowsDrawnDelayMs);
- final ArtManagerInternal artManagerInternal = getArtManagerInternal();
- final PackageOptimizationInfo packageOptimizationInfo = artManagerInternal == null
- ? PackageOptimizationInfo.createWithNoInfo()
- : artManagerInternal.getPackageOptimizationInfo(
- info.launchedActivity.info.applicationInfo,
- info.launchedActivity.app.requiredAbi);
- builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_REASON,
- packageOptimizationInfo.getCompilationReason());
- builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_FILTER,
- packageOptimizationInfo.getCompilationFilter());
- mMetricsLogger.write(builder);
- StatsLog.write(
- StatsLog.APP_START_CHANGED,
- info.launchedActivity.appInfo.uid,
- info.launchedActivity.packageName,
- convertAppStartTransitionType(type),
- info.launchedActivity.info.name,
- info.launchedActivity.launchedFromPackage,
- isInstantApp,
- currentTransitionDeviceUptime * 1000,
- info.reason,
- currentTransitionDelayMs,
- info.startingWindowDelayMs,
- info.bindApplicationDelayMs,
- info.windowsDrawnDelayMs,
- launchToken,
- packageOptimizationInfo.getCompilationReason(),
- packageOptimizationInfo.getCompilationFilter());
-
- logAppStartMemoryStateCapture(info);
- }
-
private int convertAppStartTransitionType(int tronType) {
if (tronType == TYPE_TRANSITION_COLD_LAUNCH) {
return StatsLog.APP_START_CHANGED__TYPE__COLD;
@@ -615,14 +586,4 @@
launchedActivity.appInfo.uid)
: null;
}
-
- private ArtManagerInternal getArtManagerInternal() {
- if (mArtManagerInternal == null) {
- // Note that this may be null.
- // ArtManagerInternal is registered during PackageManagerService
- // initialization which happens after ActivityManagerService.
- mArtManagerInternal = LocalServices.getService(ArtManagerInternal.class);
- }
- return mArtManagerInternal;
- }
}