首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:如何使用ADB shell启动应用程序

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

Stack Overflow用户
提问于 2012-08-29 04:18:53
回答 4查看 21.7K关注 0票数 8

我需要在SDK模拟器中使用Android应用程序的帮助。

下面是我的设置:

我有一个Android SDK模拟器运行的Android API4.03ADB shell连接到模拟器。

我可以使用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

EN

回答 4

Stack Overflow用户

发布于 2014-10-28 22:29:22

Android应用程序实际上是通过f zygote进程启动的,所以您可以通过跟踪zygote进程和以下子进程(‘-f’)来跟踪应用程序初始化:

代码语言:javascript
复制
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
票数 9
EN

Stack Overflow用户

发布于 2013-06-13 22:18:08

这是我今天用来解决这个问题的一个丑陋的一行技巧。假设程序有一些已知的名称,只要进程出现,就尝试附加到它。在本例中,我对所有要打开的调用都感兴趣。

代码语言:javascript
复制
while true; do
  while ! ps  | grep -q -i MyProgram; do :; done;
  ps | grep -i MyProgram | while read a b c; do
   strace -e open -f -p $b;
  done;
done
票数 4
EN

Stack Overflow用户

发布于 2014-08-20 04:48:08

这是一个一行代码,在am启动应用程序后,grabs the process id并通过管道将其发送到strace。您不会执行最初的几条指令,但它足够早地满足我的需要。

am start -n com.packagename.here\.ActivityName && set `ps | grep com.packagename.here` && strace -p $2

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12166917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档