如何在主要活动启动时获取Android应用程序调用的方法跟踪,而无需提供应用程序的源代码?

时间:2014-07-08 18:39:15

标签: android profiling

我需要从其主要活动启动的那一刻起获取Android应用程序调用的操作系统方法的痕迹。我可以在进程启动后启动探查器,但显然不会跟踪启动时调用的方法。

以下是我在过程开始后获取跟踪的方法:

adb install com.example.app.apk
adb shell rm ./mnt/sdcard/log.trace

adb shell am start com.example.App/com.example.App.MainActivity
adb shell am profile start com.example.App ./mnt/sdcard/log.trace
<do stuff with the app, click on the GUI etc.>
adb shell am profile stop

adb pull ./mnt/sdcard/log.trace

--start-profiler似乎有一个活动管理器选项,但它不起作用。我尝试按如下方式使用它:

adb shell am start com.example.App/com.example.App.MainActivity --start-profiler ./mnt/sdcard/log.trace

但是没有创建跟踪文件,并且应用程序根本没有减速。当分析被激活时,它运行得慢得多。

我试用了Android API 17,Intel x86模拟器,Mac Book Pro上的Windows 7 x64(通过Bootcamp)。

1 个答案:

答案 0 :(得分:3)

我正在使用以下命令,它工作正常。

adb shell am start -n com.example.App/com.example.App.MainActivity --start-profiler ./mnt/sdcard/log.trace

我认为您的代码中可能存在的问题可能是,如果应用程序已经启动,您就不会关闭该应用程序。因此,当您发出您指定的命令时,它不会以分析模式启动应用程序,而只是将其已经启动的实例带到前端,而没有分析支持。 如果要在启用了分析的情况下启动应用程序,请确保在使用分析器启动应用程序之前关闭应用程序(不在后台或最小化)。