Как получить трассировку методов, называемых Android-приложением при запуске основной активности, без использования исходного кода приложения?

Мне нужно получить след методов ОС, которые вызывается приложением 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, Windows 7 x64 на Mac Book Pro (через Bootcamp).

Я использую следующую команду, и она работает отлично.

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

Возможная проблема в вашем коде, по-моему, может быть, вы не закрываете приложение, если оно уже запущено. Поэтому, когда вы выдаете команду, которую вы указали, она не запускает приложение в режиме профилирования, а просто возвращает свой уже запущенный экземпляр на передний план, который не поддерживает профилирование. Если вы хотите запустить приложение с включенным профилированием, убедитесь, что приложение закрыто (не в фоновом режиме или сведено к минимуму), прежде чем запускать его с помощью профилировщика.

Intereting Posts
Android Multitouch Game Ошибка эмулятора: в конфигурации AVD отсутствует файл ядра График с узлами на Android Запрос разрешения на Android M, когда Min SDK – L Повторное кодирование содержимого h.264 с другой скоростью передачи данных с помощью Android MediaCodec Добавить различные прослушиватели для текста в TextView Приложение не установлено для этого пользователя Внутри проекта Eclipse Android запускаются классы Java с основными (String args), поскольку приложение Java вызывает «Недопустимый макет java.lang.String at value» HTTP-запросы с базовой аутентификацией Локальное тестирование для Android-приложения с использованием Cloud Endpoints для Google App Engine Прямая передача видео с беспроводной IP-камеры на мобильный телефон Android ListView не отображает все элементы до взаимодействия с Отобразить dial dial dial-dial – Набрать номер во время разговора – DTMF Window.close () не работает в веб-браузере Android? Как хранить данные для виджета?