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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (718)

我需要帮助在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测试应用程序位于此处

提问于
用户回答回答于

Android应用程序实际上是通过分叉受精卵进程启动的,因此您可以通过跟踪合子进程并遵循子进程(‘-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
用户回答回答于

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

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

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

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

扫码关注云+社区

领取腾讯云代金券