【问题标题】:How to obtain trace of methods called by Android app on main activity launch, without app's source code being available?在没有应用程序源代码可用的情况下,如何获取 Android 应用程序在主要活动启动时调用的方法的跟踪?
【发布时间】:2014-08-29 15:10:32
【问题描述】:

我需要从其主要活动启动的那一刻起获取 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)上进行了测试。

【问题讨论】:

    标签: android profiling


    【解决方案1】:

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

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

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

    【讨论】:

    • adb shell am start -n com.example.App/com.example.App.MainActivity -S -P ./mnt/sdcard/log.trace -S 首先停止应用程序,-P 将分析输出定向到该文件。
    【解决方案2】:

    现在你不能使用那条路径,因为

    avc:  denied  { write } for  scontext=u:r:system_server:s0
    tcontext=u:object_r:sdcardfs:s0 tclass=file System server has no access to file
    context u:object_r:sdcardfs:s0 (from path /sdcard/log.trace, context
    u:r:system_server:s0) Error: Unable to open file: sdcard/log.trace Consider using a
    file under /data/local/tmp/
    

    你必须使用

    /data/local/tmp/all.trace
    

    例如:

    adb shell am start -n "ru.myPackage/ru.myPackage.ActivitySplash" --start-profiler -S -P /data/local/tmp/all.trace
    

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2012-06-17
      相关资源
      最近更新 更多