Android:如何使用ADB shell启动应用程序

use*_*295 7 shell android runtime adb strace

我需要帮助在SDK模拟器中支持Android应用程序.

这是我的设置:

我有一个运行Android API 4.03 ADB shell的Android SDK模拟器连接到模拟器.

我可以使用ADB install filename.apk安装APK

我可以使用ADB shell运行应用程序 am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList

我尝试使用(ADB shell)strace am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList但我什么都没得到!

如何跟踪Android应用程序及其安装的运行时行为?

(PS测试应用程序位于此处.

mah*_*mah 10

"am start"命令不会直接运行您的应用程序; 它只是告诉Android做任何必要的事情,在你的例子中,开始一个特定的活动.

strace命令通常用于strace commandname command args启动commandname- 它很容易,但在这个Android用例中,没有帮助.但是,strace有一个-p对你有帮助的选项:strace -p <process id>让你开始用指定的id跟踪进程.

如果您ps在Android系统上键入,您可以使用名称找到该进程com.akproduction.notepad(可能;默认情况下,进程是以其Android包命名的,但可以在清单中更改它).然后你就可以开始支撑它,无论它发生在哪里.

如果你需要在过程的早期发现事情,你需要修改代码以使其延迟,直到你准备好跟踪它,或者你至少需要在启动之前让进程运行活动.第二个选项通常就像启动活动一样简单,然后使用后退按钮,然后准备好跟踪,然后再次启动活动 - 但这始终是应用程序特定于代码的.


Pau*_*hue 8

Android应用程序实际上是通过分支zygote进程启动的,因此您可以通过跟踪zygote进程和跟踪子进程('-f')来跟踪应用程序初始化:

setenforce 0  # In Android 4.3 and later, if SELinux is enabled, strace will fail with "strace: wait: Permission denied"

set `ps | grep zygote` ; strace -p $2 -f -tt -T -s 500 -o /sdcard/strace.txt
Run Code Online (Sandbox Code Playgroud)