Intereting Posts
Воспроизведение видео на Android с альфа-каналом Различные стили в зависимости от состояния кнопок? – Android Как обновить предыдущий фрагмент после закрытия активности, которая была запущена внутри адаптера? Как получить результаты теста при использовании «adb shell am instrument» Использование API распознавания речи Android из Google Glass Доступ к шрифту под папкой активов из файла XML в Android Сообщение об ошибке logatat от datarouter Не удалось получить конфигурации API со статусом: 404 – Google App Engine Как хорошо показать мягкую клавиатуру в фрагменте на Android? Хорошее решение для сохранения элементов списка, когда пользователь поворачивает телефон и сохраняет все данные в ArrayAdapter Ошибка библиотеки Appcompat: не найден ресурс, соответствующий указанному имени Настройка Firebase Analaytics + Диспетчер тегов Google (GTM) для каждого варианта сборки Как использовать правильное перетаскивание вида на Android Разрывы строк с WCF, JSON и клиентом, отличным от Windows Live Streaming для Android с помощью Phonegap?

Как получить трассировку методов, называемых 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

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