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

标签 android shell 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 应用及其安装的运行时行为?

(附:测试应用位于 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/

相关文章:

java - 如何在 Android 中反序列化 Drupal JSON 服务字符串?

android - MPAndroidChart 如何设置 x 轴到图表底部?

android - 为什么不应该在 Android 应用程序中使用 System.exit(0)?

java - Play Location Services getLastLocation 返回 null

c++ - 如何使用从 shell 脚本调用的 gdb 运行程序,该脚本又通过 boost::process 从 c++ 调用

运行时的 C++ 变量类型

linux + ksh + 向下舍入或向上舍入 - float

linux - 为什么在编写 linux 服务时出现 Exec 格式错误?

Java 奇怪的行为。 .jar 无法打开

python-3.x - 是否可以在不使用类变量的情况下在运行时在实例上创建 pyqtSignals?