- PVSM.RU - https://www.pvsm.ru -
Всем день добрый! Это статья о том, как профайлить Unity игры на Android с Android Studio. Я расскажу о том, как настроить Android Studio и получить максимальное кол-во данных. Вопросы анализа и выводов на основе полученного результата находятся вне рамок данной статьи.
Для полноценного профилирования приложения вам потребуется телефон с Android 8 или новее (API 27). По опыту, профилирование с Android-ами более старых версий несёт больше приключений, чем пользы. По этой причине я рекомендую обзавестись полной линейкой Nexus устройств, так как они имеют старое железо и последние обновления Android-а.
Для получения результата, вам придётся настроить Unity проект определённым образом.
Android Studio и другие профайлеры используют simpleperf для сбора статистики, и ему подребуется доступ к карте памяти для записи временных файлов.
После того, как вы установили все настройки, соберите Unity проект. Вы должны получить папку с Gradle проектом.
Unity по умолчанию собирает проект из расчёта, что вы планируете собирать из него финальный APK. Потому вся отладочная информацию из него удалена, но к счастью её можно вернуть. Для этого вам нужно подменить libil2cpp.so и libunity.so на версии с отладочной информацией.
Это файл, который содержит весь C++ код, который IL2CPP сгенерировал из вашего C# кода. Unity генерирует всю необходимую для профилирования информацию, но для оптимизации размера APK, в процессе сборки вырезает её. Для того, чтобы вернуть её:
Это файл, который содержит low-level часть Unity Player. Так как мы делаем Release сборку, то Unity положила вам в проект файл без отладочной информации. Вам нужно подменить libunity.so на файл с символами.
Теперь вы можете начать профилировать в Android Studio, достаточно нажать кнопку запуска профайлера.
Android Studio запустит приложение и начнётся сэссия профилирования
По умолчанию, Android Studio показывается графики, но не производит сэмплирование данных. Для запуска процесса, вам нужно кликнуть на треке CPU, чтобы профайлер переключится на вид CPU. При этом сверху окна появится дропдаун и кнопка ‘Record’.
Выберите Sampled ‘Native’ (В Android Studio 3.3 — C/C++ Native), и нажмите кнопку ‘Record’.
Так как запись производится на диск устройства, по опыту лучше не записывать более 5-8 секунд, многие устройства будут фейлится и на меньшем кол-ве данных (список проверенных устройств смотрите в конце статьи).
Для получения результата нажмите ‘Stop’ и потом красный квадрат, чтобы прервать сессию. Сложно понять задумку авторов, но если вы не остановите запись полностью, то профайлер не всегда начинает анализ полученных данных и ваш отрезок с данным уедет в далёкие дали.
После этого остаётся только немного подождать, через 30-50 секунд профайлер выдаст вам результат. Если всё настроено верно, вы получите capture со всем именами функций
Мы для экспериментов использовали следующие устройства:
Все устройства были зарутованы, для Huawei Nexus 6P мы собрали ядро и AOSP [1]. По результату самыми беспроблемными и простыми для работы оказались Google и Sony. У Sony есть отличный сайт для разработчиков — Open Devices [2]. Huawei больше не позволяет разблокировать устройства лёгким образом, Samsung вызывает постоянные сложности дополнительными уровнями защиты. Moto G5P часто приводил к падению процесса сбора данных профайлера (simpleperf).
Автор: Anton Kruglyakov
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/unity3d/306616
Ссылки в тексте:
[1] AOSP: https://source.android.com/
[2] Open Devices: https://developer.sony.com/develop/open-devices/
[3] Источник: https://habr.com/ru/post/437602/?utm_source=habrahabr&utm_medium=rss&utm_campaign=437602
Нажмите здесь для печати.