天天看点

[RK3288][Android6.0] 调试笔记 --- 查看Activity对应调用的进程

Platform: Rockchip

OS: Android 6.0

Kernel: 3.10.92

遇到launcher自动重复启动的问题,需要查看是哪个进程调用的。

创建Activity都会调用到startActivityLocked(), 直接有对应的参数callingPackage,直接打印即可:

kris@:~/rk3288/frameworks/base$ g df services/core/java/com/android/server/am/ActivityStackSupervisor.java
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index d917c..ce6e2dc 
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -, +, @@ import android.util.ArraySet;


 import android.util.SparseIntArray;
 import android.view.Display;
@@ -, +, @@ public final class ActivityStackSupervisor implements DisplayListener {
             }
         }

+       Slog.e(TAG, "callingPackage:"+callingPackage);
+
         final int userId = aInfo != null ? UserHandle.getUserId(aInfo.applicationInfo.uid) : ;
         if (err == ActivityManager.START_SUCCESS) {
           

启动Music apk例子:

[RK3288][Android6.0] 调试笔记 --- 查看Activity对应调用的进程

home key启动launcher例子:

[RK3288][Android6.0] 调试笔记 --- 查看Activity对应调用的进程

android对应的apk是framwork-res.apk,在 AMS启动的时候有调用定义:

LoadedApk(ActivityThread activityThread) {
        mActivityThread = activityThread;
        mApplicationInfo = new ApplicationInfo();
        mApplicationInfo.packageName = "android";
        mPackageName = "android";
       }
           

继续阅读