我需要在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。
发布于 2014-10-28 22:29:22
Android应用程序实际上是通过f 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
发布于 2013-06-13 22:18:08
这是我今天用来解决这个问题的一个丑陋的一行技巧。假设程序有一些已知的名称,只要进程出现,就尝试附加到它。在本例中,我对所有要打开的调用都感兴趣。
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
发布于 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
https://stackoverflow.com/questions/12166917
复制相似问题