Android: где находится файл .trace при профилировании с Traceview и Genymotion?

android android-emulator genymotion android-traceview

3432 просмотра

2 ответа

12324 Репутация автора

Я читаю эту статью о запуске traceview в вашем приложении для Android: https://developer.android.com/studio/profile/traceview.html Я предполагаю, что эмулятор, о котором они говорят, это эмулятор Android, а не эмулятор Genymotion, который это тот, который я использую.

В нем говорится, что для извлечения файла трассировки из эмулятора на хост-компьютер вы можете просто запустить следующие команды:

adb pull /sdcard/startup.trace /tmp

Я запустил его на моем эмуляторе Genymotion, и файл не был найден. Затем я использовал Android Device Monitor, чтобы найти файл на устройстве, но в этом месте не было файла с именем startup.trace.

Я сделал это в своем коде:

public class MyApplication extends MultiDexApplication {

    public void onCreate() {
        super.onCreate();
        Debug.startMethodTracing("startup"); 
    }
  }

Затем я остановил трассировку в методе onResume своей активности, чтобы измерить время запуска моего приложения:

@Override
protected void onResume() {
    super.onResume();
    Debug.stopMethodTracing();
}

Я хочу, чтобы traceView измерял время моего запуска, но не знаю, где файл сохранен в моем эмуляторе Genymotion. Может кто-нибудь помочь мне с тем, где файл сохраняется?

Автор: Simon Источник Размещён: 18.07.2016 07:25

Ответы (2)


1 плюс

12324 Репутация автора

Решение

Таким образом, после тестирования с помощью простого приложения для Android, оно работает, как и планировалось.

Я создал небольшой репо, чтобы продемонстрировать это:

https://github.com/Winghin2517/TraceviewTest.git

Вы можете скачать его, запустить на своем эмуляторе genymotion и затем ввести на вкладке «Терминал» в Android Studios следующее:

adb pull /sdcard/startup.trace /tmp

Он извлечет файл трассировки из Genymotion. Затем вам нужно будет включить DDMS, сказать «Файл» -> «Открыть» и открыть файл startup.trace.

Android-приложение, которое я создал, демонстрирует время, необходимое для выхода 1000 сообщений в консоль. Вы можете видеть, что цветные полосы кожи представляют время, которое андроид использовал для вызова моего testCountметода:

введите описание изображения здесь

Вот мои результаты:

введите описание изображения здесь

Мой метод testCount занял 10 мс для завершения.

Затворник вызов к Log.eметоду также имеет смысл , поскольку мой цикл в моем коде 1000 обращений к log.eметоду.

Включая процессорное время - это включенное время процессора. Это сумма времени, проведенного в самой функции, а также сумма времени всех функций, которые она вызывает.

Excl CPU time - это исключительное время процессора. Это только время, проведенное в самой функции. Вы заметите, что это всегда то же самое, что «время вкл.» «Собственного» ребенка.

Автор: Simon Размещён: 28.07.2016 08:50

8 плюса

318 Репутация автора

Я не могу найти файл .trace из приведенного выше примера приложения (или любого приложения). Поскольку файл .trace не находится по адресу:

/sdcard/<myTraceFile>.trace

Я сделал трюк, используя команду find, чтобы найти местоположение моего файла трассировки следующим образом: -

$adb shell
$cd /sdcard
$find |grep .trace

Я получил мой файл по адресу:

./Android/data/test.com.trackstartuptime/files/startup.trace

Для приведенного выше примера приложения. Теперь используйте это местоположение для adb pull как: -

$adb pull /sdcard/Android/data/test.com.trackstartuptime/files/startup.trace <my_location>
Автор: charlie Размещён: 08.08.2017 11:28
Вопросы из категории :
32x32