天天看點

[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";
       }
           

繼續閱讀