我需要有关在 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 应用及其安装的运行时行为?
(附:测试应用位于 here 。
最佳答案
“am start”命令不会直接运行您的应用程序;它只是告诉 Android 做任何必要的事情,在你的例子中,开始一个特定的 Activity 。
strace
命令通常用于 strace commandname command args
并启动 commandname
-- 简单,但在这个 Android 用例中,没有帮助。但是,strace 有一个 -p
对你有帮助的选项:strace -p <process id>
将让您开始跟踪具有指定 ID 的进程。
如果您输入 ps
在您的 Android 系统上,您可以找到名称为 com.akproduction.notepad
的进程(可能;默认情况下,进程以其 Android 包命名,但可以在 list 中更改它)。然后您就可以开始跟踪它,无论它在哪里。
如果您需要在流程的早期捕捉事物,您将需要修改代码使其延迟,直到您准备好跟踪它,或者至少在开始 Activity 之前需要让流程运行。第二种选择通常很简单,只需启动 Activity,然后使用后退按钮,然后准备好跟踪,然后再次启动 Activity —— 但这始终是特定于应用程序的代码。
关于Android:如何使用 ADB shell 启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12166917/