android - 如何在没有应用程序源代码的情况下获取 Android 应用程序在主要 Activity 启动时调用的方法的踪迹?

标签 android profiling

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

以下是我在进程启动后获取跟踪的方式:

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

好像有一个 Activity 管理器选项--start-profiler,但是没有用。我尝试按如下方式使用它:

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

但是没有创建跟踪文件,应用程序也没有变慢。当分析被激活时,它运行得更慢。

我在 Mac Book Pro 上的 Android API 17、Intel x86 模拟器、Windows 7 x64(通过 Bootcamp)上进行了尝试。

最佳答案

我正在使用以下命令,它运行良好。

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

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

关于android - 如何在没有应用程序源代码的情况下获取 Android 应用程序在主要 Activity 启动时调用的方法的踪迹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24639338/

相关文章:

android - 如何使用大量图元在 Android Canvas 上绘制游戏

android - Linux下连接Nexus S到Eclipse

android - 用于在 Android 中离线测试服务器响应的透明代理

IE 中的 JavaScript 探查器

用于多个输入和平均结果的 Python 配置文件

Android 软件 NDK native c 代码在实际 Android 手机上的分析

Android Camera.Parameters.getZoomRatios() 只返回 1 个值

java - 制作一个创建对象并在单击时显示的按钮

iphone - 我必须在下面的代码中释放 NSDate 吗?

python - 分析 Python 脚本时按 percall 对 cProfile 输出进行排序