Трассировка системы что это за программа на андроид
Оптимизация производительности Android: используйте TraceView, чтобы найти виновника Caton
предисловие
Прочитайте статью сегодня«Оптимизация производительности Android (1) ускорение запуска 35%»Очень хорошо, если вам интересно, вы можете посмотреть.
Чтобы определить проблему трудоемкого запуска, автор использовал TraceView.
Я знал это раньше, но я не использовал этот инструмент. Сегодня я буду изучать его со всеми (ง • ̀_ • ́) ง.
Что такое TraceView
TraceView - это инструмент, встроенный в Android SDK, его можно загрузитьtrace Документы, отображаемые графическиВремя выполнения кода, номер и стек вызововДля облегчения нашего анализа.
Файл трассировки является своего рода файлом информации журнала, который может быть сгенерирован кодом, Android Studio или DDMS.
Используя инструменты, предоставляемые Android SDK, можно сгенерировать множество файлов журналов, чтобы мы могли проанализировать текущую память приложения, макет и т. Д. Ниже приведены скриншоты нескольких файлов:
Во многих случаях телефон зависает, потому что операция занимает слишком много времени. Слишком больно находить виновника в огромном коде. В это время должно быть отражено значение TraceView.
Создать файл трассировки
Существует три способа создания файлов трассировки:
- Используйте код
- Используйте Android Studio
- Используйте DDMS
1. Используйте код для генерации файлов трассировки
Код очень прост. Когда вы вызываете начальный код, система создает файл трассировки и генерирует данные трассировки. Когда вы вызываете код завершения, данные трассировки будут записаны в файл трассировки.
Затем с помощью команды adb экспортируйте файл трассировки на компьютер:
Преимущество использования кода для генерации трассировки состоит в том, что легко контролировать начало и конец трассировки. Недостатком является то, что шаги немного больше.
2. Используйте Android Studio для генерации файлов трассировки
Android Monitor, встроенный в Android Studio, может легко генерировать файлы трассировки на компьютер.
В столбце, контролируемом процессором, будет кнопка, похожая на тревогу, которая отображается серым цветом, когда приложение не запускается:
После запуска приложения эта кнопка станет ярче, и нажмите, чтобы начать трассировку, что эквивалентно коду, вызывающему startMethodTracing:
График трассировки, автоматически загружаемый Android Studio после генерации трассировки, выглядит следующим образом:
Из этого рисунка вы можете получить обзор времени выполнения, количества раз и отношений вызовов некоторых методов, а также вы можете искать и фильтровать определенный контент.
Вы можете переключать различные потоки в верхнем левом углу, что фактически является недостатком прямого использования Android Studio для просмотра файла трассировки:Время выполнения разных потоков нельзя сравнивать визуально.
Если навести указатель мыши на желтый прямоугольник, отобразится время начала и окончания соответствующего метода, а также доля времени, занятого вами и вызовом других методов:
3. Используйте DDMS для генерации файлов трассировки
DDMS - это Dalvik Debug Monitor Server, который является средством отладки и мониторинга Android и предоставляет нам снимки экрана, просмотр журналов, уровни просмотра и использование памяти. Можно сказать, что он является предшественником Android Monitor, встроенного в Android Studio сегодня.
Дважды щелкните по Shift, чтобы вызвать глобальный поиск, для поиска «Android Device Monitor»:
Или напрямую установите сочетание клавиш Android Device Monitor в настройках:
Откройте Android Device Monitor, откройте файл трассировки в DDMS, DDMS запустит TraceView для загрузки файла трассировки:
Рисунок выше представляет схему TraceView:
- Верхняя часть показываетВремя выполнения разных потоков
- Разные цвета указывают на разные методы
- Чем дольше тот же цвет, тем дольше время выполнения, как показано в главном потоке
- Пробел указывает на то, что в этот период нет содержимого выполнения
- Cpu Time / Call: этот метод усредняет процессорное время
- Real Time / Call: среднее время выполнения, включая время переключения и блокировки,> = время процессора
- Звонки + повторные звонки / итого: звонки, время рекурсии
Нажмите любой из методов ниже, чтобы увидеть подробную информацию:
- Родители: где вызвать выбранный метод
- Дети: метод, вызываемый выбранным методом
Найдите проблемы на основе отображаемого содержимого TraceView
Как использовать TraceView при поиске проблем:
- Посмотрите из верхней части, какие потоки выполняются долго? Когда начнется казнь? Чередовать время с основным потоком?
- Какие методы требуют много времени для выполнения
- Нажмите на процессор / время вызова в TraceView и сортируйте время процессора от высокого до низкого
- Нажмите на Calls + Recur Calls / Total в TraceView, отсортированные по количеству звонков сверху вниз
После сортировки затем проверьте, есть ли код проекта или код зависимой библиотеки один за другим. Если это так, нажмите, чтобы просмотреть подробные сведения, чтобы выяснить, является ли этот метод или вспомогательный метод вызова, проблемой, и дополнительно найти проблему.
Решите проблему, что TraceView в DDMS не может быть найден и не может быть найден
В Traceview слишком много информации, и вы можете воспользоваться поиском внизу, чтобы найти:
Тем не менее, TraceView в DDMS содержит ошибки, а поиск недоступен. Многие люди подали проблему в Google в течение 5 лет, и она не была решена. ╮ (╯_╰) ╭:
Решение состоит в том, чтобы использовать TraceView в SDK напрямую:
Откройте TraceView в SDK напрямую:
Затем откройте файл трассировки, сгенерированный ранее:
Если вам не удается открыть трассировку напрямую, вы можете открыть ее через командную строку traceview:
Хотя подсказка устарела, поиск по крайней мере легче, чем Android Device Monitor.
Сценарии использования TraceView
Когда страница или операция застряли, вы можете использовать TraceView, чтобы найти код проблемы.
Например, запуск, загрузка списка картинок и т. Д.
подводить итоги
В Android SDK предусмотрено множество инструментов, помогающих нам обнаруживать проблемы.После обучения использованию этих инструментов нам все еще необходимо повысить осведомленность о требованиях к производительности.
Еще один момент, не оптимизировать преждевременно!
Связанное Чтение
Кто и как пользуется функцией трассировки системы Android?
Трассировка системы Android на смартфоне — инструмент, позволяющий пошагово рассмотреть все процессы, которые запущены на устройстве. Эта возможность доступна в разделе для разработчиков. О том, что конкретно представляет из себя трассировка и зачем она нужна, расскажем далее.
Что такое трассировка системы Android?
Трассировка системы — инструмент, необходимый для разработчиков мобильных приложений и ПО. Он представляет собой запись активности устройство за короткий период времени (несколько секунд). Все процессы, которые в этот момент были запущены на устройстве, записываются в файл трассировки. Этот файл — визуализация процессов смартфона в виде графиков, которые делятся на кадры. Если в каком-то кадре что-то пошло не так, система покажет предупреждение, содержащее информацию о самом кадре.
Разработчики используют трассировку для отладки приложений и быстрого поиска ошибок в коде. Отчет трассировки выявляет проблемы, такие как прерывание пользовательского интерфейса или высокое энергопотребление. Запись трассировки может быть представлена в разных видах:
- Профилировщик CPU. Он проверяет использование процессора и активность потоков приложения.
- Приложение System Tracing. Сохраняет активность устройства в файл трассировки.
- Systrace. Устаревший инструмент. Записывает активность устройства за короткий период времени в сжатый текстовый файл.
- Perfetto. Новый инструмент, обладающий более широким набором данных о процессах устройства.
Трассировка системы Android обычно используется только при тестировании приложений с целью определения ошибок и слабых мест, а также их устранения. Обычным пользователям этот инструмент не пригодится, хотя его поздние версии и стали более упрощенными с появлением подсказок о том, в чем заключается слабые стороны конкретного приложения.
(13 оценок, среднее: 4,92 из 5)Более подробный обзор полезных функций режима разработчика на смартфоне читайте здесь.
Добрый день прибавит или не прибавит памяти но я уже начал поочерёдно отключать навязанные сервисы как и системы Андроида, потому что после всех обновлений в моём смартфоне происходят непонятные вещи то исчезла строка в браузере для вывода файла чтобы не забыть на главный экран, но изредка появляется на короткое время а потом исчезает, создаётся впечатление что я отправляю файл не себе на экран а кому то другому неизвестному, поэтому я теперь если начинает проявляться главная строка в браузере вместо нужного мне файла, отправляю туда файл в виде голых баб которые мне присылают в виде приза или загнали мне вирус пускай смотрят кому это интересно, то не могу скачать нужное мне приложение в плей маркете, короче говоря думаю а не зачистить мне все обновления в плей маркете может всё станет на свои места. Одна есть просьба к вам подскажите как можно и где есть в системе Андроида
У тебя повысится производительность не пугайся и ставь на максимум
полное отключениее блокировки экрана не без ущерба для своих данных в телефоне, потому что когда я вводил свой первый пароль для блокировки экрана было всё нормально, но второй пароль я ввёл сам не зная какой, потому что клавиатура стала глючить и так получилось что введёный мною пароль даже для меня стал непонятным и теперь я не могу разблокировать свой смартфон так же как и заблокировать, какое приложение в системе Андроида можно отключить а потом включить для блокировки экрана чтобы не без утраты своих данных как и сайтов, жду вашего ответа. Да и ещё мой смартфон недавно был взломан и все мои файлы исчезли с моего главного экрана неизвестными и поэтому я теперь не могу ни заблокировать заново ни разблокировать мой телефон.У тебя повысится производительность
А если поставить на 64тыс КБ чё будет ?
У меня нет трассировки системы,почему?
Через Activity открывается.
Хотелось бы подробнее узнать как его можно удалить со своего устройства, лично мне он не нужен, тем более занимает лишнее место в приложении которого у меня их и так мало, что не могу установить нужное для меня приложение.
Это не приложение, а часть системы Android. Удалить это нельзя технически, да и памяти это вам не прибавит)
В Android Studio 4.0 мы пересмотрели UI профайлера (Profiler), чтобы обеспечить интуитивно понятный рабочий процесс записи работы центрального процессора. Мы продолжали вносить улучшения, основываясь на ваших отзывах, и добавили больше функций в версию 4.1.
Мы расскажем о том, что нового появилось в Android Studio для сист е мной трассировки (System Trace), одной из редко используемых, но мощных конфигураций записи работы ЦП. В отличие от метода Java или трассировки функций C/C++, системная трассировка накапливает действия устройств (например, планирование работы процессора) и системные процессы Android (например, SurfaceFlinger). Кроме того, вы можете настроить код с помощью пользовательских событий, вызвав API Trace в приложении. Таким образом, ваши пользовательские события будут записываться в коллекцию вместе с системными. Они могут пригодиться, когда вы будете исследовать проблемы производительности, такие как шероховатость UI или высокое энергопотребление.
Потоки в едином представлении
Записи работы процессора теперь отделены от основной временной шкалы профайлера для облегчения анализа. В этом выделенном представлении данные трассировки организованы в разделы в левой части окна Profiler.
Вы можете перемещать разделы вверх и вниз, чтобы реорганизовать список или отдельные элементы внутри них, просто перетаскивая их.
Мы услышали, что выбор потока для просмотра его диаграммы вызовов (или событий для системной трассировки) довольно громоздок, поэтому объединили все действия потока в одно представление, отображающее его состояния и диаграммы вызовов одновременно. По умолчанию мы сортируем потоки по степени их нагруженности, но вы можете перетащить мышкой любой отдельный поток, чтобы изменить порядок.
Вы также можете свернуть или развернуть каждый поток, щелкнув один раз значок треугольника или дважды щелкнув на его имени. Обратите внимание, что для трассировки метода Java или функции C/C++ мы сворачиваем все потоки по умолчанию из-за глубоких стеков вызовов, так что вы сразу можете взглянуть на все данные конкретного потока.
Трассировка функций C/C++, показывающая потоки, свернутые по умолчаниюСобытия системной трассировки теперь раскрашены так, чтобы было проще увидеть отличия:
Интуитивная навигация
Новый UI трассировки имеет обновленную схему навигации по временной шкале. Мы заменили старую горизонтальную полосу прокрутки на представление master-detail.
Вверху вы увидите временную шкалу, которая отображает только продолжительность трассировки, а не весь сеанс профилирования. С помощью селектора можно быстро сузить его до определенного временного диапазона, для которого в нижеприведенных разделах отображаются подробные данные.
Используйте селектор диапазона, чтобы сфокусироваться на небольшом фрагменте временной шкалыОттуда вы можете выполнять более точные навигационные действия:
- Увеличение/уменьшение масштаба с помощью Ctrl (или Cmd на Mac) + колесико мыши.
- Панорамирование вида путем перетаскивания мышкой влево и вправо, удерживая нажатой клавишу пробела.
- Клавиши WASD для масштабирования и панорамирования вида, как в устаревшем UI SysTrace в chrome://tracing .
Начиная с Android Studio 4.1 Canary 9, вы можете использовать мышь в разделе потоков (Threads), чтобы уточнить выбор. Можно выбрать прямоугольную область, которую можно увеличить, нажав кнопку Zoom to Selection в правом верхнем углу (клавиша “M”). Можно даже выбрать несколько потоков. Это полезно, когда вы перетаскиваете похожие потоки рядом друг с другом, проверяя все потоки сразу. Например, вы можете анализировать нескольких рабочих потоков, часто встречающихся в играх.
Выбор поля комбинированный с перетаскиванием и масштабированиемПанель анализа
Говоря об анализе, мы хотим выделить новую панель анализа (Analysis Panel), представленную в Android Studio 4.0, в правой колонке окна Profiler.
Здесь вы можете найти аналитические данные, полученные из записанной трассировки, которую вы выбрали. Если вы выбираете поток, фрейм стека или событие трассировки из левого столбца, панель анализа покажет информацию, конкретную для вашего выбора. Например, если выбран поток, отображаются его состояния, а также другая полезная информация.
Чтобы сделать эту панель анализа полезной, мы изучали способы получения полезных аналитических данных. В дополнение к Top Down, Flame Chart и Bottom Up, уже присутствующим в профайлере центрального процессора, мы добавили вкладку со сводкой (Summary) в Android Studio 4.1 Canary 10 для распределения состояния потока, статистики событий трассировки и т.д. Например, довольно часто нам нужно узнать больше о повторяющемся событии трассировки. На вкладке со сводкой отображаются основные статистические данные (количество, минимум, максимум и т. д.), а также наиболее продолжительные события выбранного события трассировки. Вы даже можете перейти к другому событию, выбрав строку таблицы.
Статистика и наиболее продолжительные события трассировкиПовышение стабильности и производительности
И последнее, но не менее важное: мы улучшили стабильность и производительность записи работы ЦП.
- Исправили несколько ошибок, которые могут привести к сбоям записи.
- Построили системную трассировку на основе Perfetto в качестве бэкенда на Android API level 28 и более поздних версиях с использованием новейших инструментов.
- Оптимизировали код профайлера, чтобы значительно снизить потребление памяти (до 80%) при разборе записанной трассировки, что позволяет открывать и анализировать более длинные записи. Помните, что вы можете увеличить максимальный размер кучи Android Studio при работе с очень длинными трассировками.
Загрузите последнюю версию превью Android Studio 4.1, чтобы попробовать эти функции. Как и всегда, мы ценим ваши отзывы.
Медлительность Android по сравнению с iOS всегда была мифом, в который почему-то верили миллионы человек. Просто дизайнеры Apple скрыли задержку от запуска приложения до его фактического открытия анимацией, а в Google до этого не додумались. Таким же мифом является склонность Android к засорению и замедлению через какое-то время после начала использования. Дескать, системные кластеры забиваются и уже не могут обеспечивать былой уровень быстродействия. Вот только никто не говорит, что обычно «замедляются» именно старые устройства и только в сравнении с новыми. Но это не значит, что разогнать Android нельзя совсем. Можно.
Разогнать Android можно. Для этого в настройках ОС есть специальные параметры
В Android есть так называемое меню разработчиков. Несмотря на то что оно действительно предназначается для создателей программного обеспечения, рядовые пользователи очень любят включать его, а потом что-то там настраивать и менять, якобы улучшая работу своего устройства. Зачастую это, само собой, совершенно не так. Однако есть несколько надстроек, которые могут позволить хоть немного, но ускорить Android, сделав его чуть отзывчивее, быстрее и податливее. Главное – не переборщить.
Настройки разработчика Android
Для начала нам потребуется активировать меню разработчиков. Если оно у вас уже есть, переходите сразу к третьему пункту инструкции, а если нет – начинайте с первого. Но помните, что активация этих параметров может привести к повышенному ресурсопотреблению и сокращению времени автономной работы.
- Перейдите в «Настройки» и откройте раздел «Об устройстве»;
- Найдите вкладку «Номер сборки» и 10 раз быстро на неё нажмите;
Все необходимые параметры скрыты в меню разработчиков
- Вернитесь назад, а затем перейдите в меню «Для разработчиков»;
- Пролистайте вниз и включите параметр «Ускорить работу GPU»;
- Пролистайте далее и включите пункт «Включить 4x MSAA»;
Активируйте три этих параметра и отключите анимацию
- Затем включите пункт «Отключить аппаратное наложение»;
- В разделе «Скорость анимации» выберите значение x0,5 или x0.
Как ускорить Android
Разогнать Android можно и в играх, и при работе с интерфейсом
Эти три параметра действительно способны разогнать интерфейс вашего смартфона. Вот как это происходит:
Ускорение работы GPU активирует графический ускоритель при отрисовке двумерных элементов. Казалось бы, зачем вообще это нужно? А, между тем, весь интерфейс вашего смартфона и большинство сайтов целиком состоят из 2D-элементов. Активировав ускорение, вы заставите смартфон задействовать графический сопроцессор при обработке всех этих компонентов, а поскольку их в повседневной жизни встречается довольно много, то и прирост быстродействия будет заметен в большинстве задач.
Включение параметра 4x MSAA способно напрямую повлиять на ваше восприятие игр. Независимо от того, двумерная или трёхмерная игра запущена на вашем устройстве, этот пункт повышает контурную детализацию, минимизируя рябь и подёргивания на краях рисованных объектов. В результате создаётся ощущение более плавной обработки видимых графических компонентов. Если хотите, это совсем дешёвый аналог режима 120 Гц, повышающего частоту обновления и делающего картинку более плавной.
Повысить быстродействие смартфона
Отключение аппаратного наложения позволяет задействовать графический сопроцессор при отрисовке компонентов экрана, за счёт чего высвобождается ресурс центрального процессора, и он больше не нагружается в базовых задачах. Может показаться, что этот параметр полностью противоречит первому, но это не совсем так. Вернее, совсем не так. Просто они отвечают за разные процессы.
Смените раскрытые пароли. Что это значит и как реагировать
Изменение скорости анимации – это чисто визуальный, или, если хотите, косметический показатель. В действительности он не повышает скорость запуска приложений, просто он удаляет анимацию, которая по умолчанию заполняет «пустоту» от момента запуска приложения до момента его активации. Но если раньше такая пустота действительно была, и её требовалось чем-то заполнять, то современные смартфоны её практически не допускают. В результате кажется, что приложения из-за анимации запускаются чуть дольше.
Прочитайте статью сегодня«Оптимизация производительности Android (1) ускорение запуска 35%»Очень хорошо, если вам интересно, вы можете посмотреть.
Чтобы определить проблему трудоемкого запуска, автор использовал TraceView.
Я знал это раньше, но я не использовал этот инструмент. Сегодня я буду изучать его со всеми (ง • ̀_ • ́) ง.
Что такое TraceView
Файл трассировки является своего рода файлом информации журнала, который может быть сгенерирован кодом, Android Studio или DDMS.
Используя инструменты, предоставляемые Android SDK, можно сгенерировать множество файлов журналов, чтобы мы могли проанализировать текущую память приложения, макет и т. Д. Ниже приведены скриншоты нескольких файлов:
Во многих случаях телефон зависает, потому что операция занимает слишком много времени. Слишком больно находить виновника в огромном коде. В это время должно быть отражено значение TraceView.
Создать файл трассировки
Существует три способа создания файлов трассировки:
- Используйте код
- Используйте Android Studio
- Используйте DDMS
1. Используйте код для генерации файлов трассировки
Код очень прост. Когда вы вызываете начальный код, система создает файл трассировки и генерирует данные трассировки. Когда вы вызываете код завершения, данные трассировки будут записаны в файл трассировки.
Затем с помощью команды adb экспортируйте файл трассировки на компьютер:
adb pull /sdcard/shixintrace.trace /tmp
Преимущество использования кода для генерации трассировки состоит в том, что легко контролировать начало и конец трассировки. Недостатком является то, что шаги немного больше.
2. Используйте Android Studio для генерации файлов трассировки
Android Monitor, встроенный в Android Studio, может легко генерировать файлы трассировки на компьютер.
В столбце, контролируемом процессором, будет кнопка, похожая на тревогу, которая отображается серым цветом, когда приложение не запускается:
После запуска приложения эта кнопка станет ярче, и нажмите, чтобы начать трассировку, что эквивалентно коду, вызывающему startMethodTracing:
График трассировки, автоматически загружаемый Android Studio после генерации трассировки, выглядит следующим образом:
Из этого рисунка вы можете получить обзор времени выполнения, количества раз и отношений вызовов некоторых методов, а также вы можете искать и фильтровать определенный контент.
Вы можете переключать различные потоки в верхнем левом углу, что фактически является недостатком прямого использования Android Studio для просмотра файла трассировки:Время выполнения разных потоков нельзя сравнивать визуально.
Если навести указатель мыши на желтый прямоугольник, отобразится время начала и окончания соответствующего метода, а также доля времени, занятого вами и вызовом других методов:
3. Используйте DDMS для генерации файлов трассировки
Дважды щелкните по Shift, чтобы вызвать глобальный поиск, для поиска «Android Device Monitor»:
Или напрямую установите сочетание клавиш Android Device Monitor в настройках:
Откройте Android Device Monitor, откройте файл трассировки в DDMS, DDMS запустит TraceView для загрузки файла трассировки:
Рисунок выше представляет схему TraceView:
- Верхняя часть показываетВремя выполнения разных потоков
- Разные цвета указывают на разные методы
- Чем дольше тот же цвет, тем дольше время выполнения, как показано в главном потоке
- Пробел указывает на то, что в этот период нет содержимого выполнения
- Cpu / Call: этот метод усредняет процессорное время
- Real / Call: среднее время выполнения, включая время переключения и блокировки,> = время процессора
- Звонки + повторные звонки / итого: звонки, время рекурсии
Нажмите любой из методов ниже, чтобы увидеть подробную информацию:
- Родители: где вызвать выбранный метод
- Дети: метод, вызываемый выбранным методом
Найдите проблемы на основе отображаемого содержимого TraceView
Как использовать TraceView при поиске проблем:
- Посмотрите из верхней части, какие потоки выполняются долго? Когда начнется казнь? Чередовать время с основным потоком?
- Какие методы требуют много времени для выполнения
- Нажмите на процессор / время вызова в TraceView и сортируйте время процессора от высокого до низкого
- Нажмите на Calls + Recur Calls / Total в TraceView, отсортированные по количеству звонков сверху вниз
После сортировки затем проверьте, есть ли код проекта или код зависимой библиотеки один за другим. Если это так, нажмите, чтобы просмотреть подробные сведения, чтобы выяснить, является ли этот метод или вспомогательный метод вызова, проблемой, и дополнительно найти проблему.
Решите проблему, что TraceView в DDMS не может быть найден и не может быть найден
В Traceview слишком много информации, и вы можете воспользоваться поиском внизу, чтобы найти:
Тем не менее, TraceView в DDMS содержит ошибки, а поиск недоступен. Многие люди подали проблему в Google в течение 5 лет, и она не была решена. ╮ (╯_╰) ╭:
Решение состоит в том, чтобы использовать TraceView в SDK напрямую:
Откройте TraceView в SDK напрямую:
Затем откройте файл трассировки, сгенерированный ранее:
Если вам не удается открыть трассировку напрямую, вы можете открыть ее через командную строку traceview:
Хотя подсказка устарела, поиск по крайней мере легче, чем Android Device Monitor.
Сценарии использования TraceView
Когда страница или операция застряли, вы можете использовать TraceView, чтобы найти код проблемы.
Например, запуск, загрузка списка картинок и т. Д.
подводить итоги
В Android SDK предусмотрено множество инструментов, помогающих нам обнаруживать проблемы.После обучения использованию этих инструментов нам все еще необходимо повысить осведомленность о требованиях к производительности.
Еще один момент, не оптимизировать преждевременно!
Связанное Чтение
Оптимизация производительности Android: используйте Lint для оптимизации кода и удаления избыточных ресурсов
Оптимизация производительности Android: начало многопоточной серии
Thanks
Трассировки стека ошибок: деобфускация или добавление отладочных символов
Если вы разработали свое приложение или игру на языке Java и используете ProGuard для оптимизации и обфускации приложения, то можете загрузить файл сопоставления ProGuard в Play Console. Для приложений, созданных на основе нативного кода, например С++, можно использовать файлы с отладочными символами. Оба типа файлов необходимо загружать отдельно для каждой версии приложения. Это поможет вам проанализировать и устранить сбои и ошибки ANR.
Важно! Для деобфускации приложений, скомпилированных в Java, поддерживаются только файлы сопоставления, совместимые с ReTrace. Этот же формат используется в файлах ProGuard и R8.
Шаг 1. Сгенерируйте файл деобфускации или файл отладочных символов
Чтобы выполнить деобфускацию или добавление отладочных символов в случае сбоев и ошибок ANR в конкретной версии приложения, сначала нужно сгенерировать необходимые файлы. Каждый файл создается для одной конкретной версии приложения.
Java: файл сопоставления ProGuard
Для деобфускации Java-приложений вам потребуется файл сопоставления ProGuard. О том, как его создать, рассказывается на сайте Google Developers.
Нативный код: файл отладочных символов
Плагин Android Gradle 4.1 или более поздней версии
Если для сборки вы используете набор Android App Bundle, файл с отладочными символами может добавляться в нее автоматически. Для этого включите следующую строку в файл build.gradle вашего приложения:
Примечание. Размер файла отладочных символов не должен превышать 300 МБ. Если отладочные символы занимают слишком много места, размер файла можно уменьшить. Для этого укажите значение SYMBOL_TABLE вместо FULL.
Если же вы выбрали формат APK, добавьте указанный выше параметр в файл build.gradle, и файл отладочных символов будет создан отдельно. Загрузите полученный файл в Google Play Console (см. шаг 2). В процессе сборки плагин Android Gradle создает этот файл в следующем местоположении:
- app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip
Плагин Android Gradle 4.0 или более ранней версии (и другие системы сборки)
В процессе сборки APK-файла или набора App Bundle плагин Android Gradle сохраняет исходные копии библиотек (то есть не обработанные с помощью команды strip) в каталоге проекта. Пример структуры такого каталога:
Примечание. Если вы используете другую систему сборки, внесите изменения, чтобы структура каталогов, в которых сохраняются эти библиотеки, соответствовала указанной выше.
- Заархивируйте содержимое следующего каталога:
- $ cd app/build/intertes/cmake/universal/release/obj
- $ zip -r symbols.zip
- Загрузите вручную файл symbols.zip в Play Console (см. шаг 2).
Размер файла с отладочными символами не должен превышать 300 МБ. Если он слишком велик, вероятнее всего, в файлах SO содержится таблица имен (названия функций), а также сведения для отладки DWARF (названия файлов и строки кода). Эта информация не нужна для добавления отладочных символов. Чтобы удалить ее, выполните следующую команду:
Примечание. $OBJCOPY указывает на определенную версию двоичного интерфейса приложения, к которой применяется команда strip. Например: ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy.
Шаг 2. Загрузите файл деобфускации или файл отладочных символов
Теперь вам нужно загрузить полученные файлы в Play Console.
Важно! Этот шаг предназначен только для разработчиков APK-файлов. Если вы используете набор Android App Bundle и плагин Android Gradle 4.1 или более поздней версии, выполнять его не требуется. Файл деобфускации будет автоматически взят из набора, поэтому вам можно сразу переходить к шагу 3. Узнайте больше о наборах App Bundle на сайте для разработчиков Android.
Как загрузить файлы с помощью Play Console
Для этого выполните следующие действия:
Как загрузить файлы с помощью Google Play Developer API
Шаг 3. Посмотрите трассировки стека ошибок после деобфускации
После того как вы загрузите эти файлы в Play Console, к последующим сбоям и ошибкам ANR будет применяться деобфускация. Трассировки стека для них можно посмотреть на странице приложения Сбои и ANR.
Важно! Деобфускация будет применяться только к тем сбоям и ошибкам ANR, которые возникнут после загрузки файла сопоставления. К более ранним сбоям и ошибкам ANR она не применяется.
Часто задаваемые вопросы
Я не хочу применять деобфускацию или добавлять символы в Play Console. Можно ли сделать это в офлайн-режиме?
Почему после загрузки файла деобфускации или файла с отладочными символами ошибки ANR и сбои по-прежнему обфусцируются?
Деобфускация применяется только к ошибкам ANR и сбоям, возникающим после загрузки файла сопоставления или файла с отладочными символами. Подождите, пока информация о новых сбоях и ошибках ANR будет получена с устройств пользователей. После этого вы сможете просматривать в Play Console данные с деобфускацией.
Почему после загрузки файла деобфускации или файла с отладочными символами ошибки ANR и сбои деобфусцированы только частично?
Потому что файл деобфускации или файл с отладочными символами загружен не полностью. Убедитесь, что вы загружаете файл с отладочными символами для всего приложения, особенно если используете комплексный или многоэтапный процесс сборки. Нередко частичная деобфускация связана с использованием сторонних библиотек. В этом случае нужно запросить файлы деобфускации у поставщика библиотеки.
Почему после загрузки файла деобфускации или файла с отладочными символами число ошибок ANR и сбоев уменьшается, но они становятся критичнее?
Без файлов деобфускации одинаковые ошибки ANR или сбои на 32- и 64-разрядных устройствах либо на устройствах ARM и Intel будут показаны отдельно. После загрузки файлов деобфускации мы можем объединить эти сбои в группы, чтобы нагляднее показать наиболее серьезные ошибки ANR и сбои в вашем приложении.
Что, если я забуду загрузить файл?
Если вы забудете загрузить файл для новой версии приложения, ошибки ANR и сбои снова будут обфусцироваться. Загрузите файл, следуя инструкциям выше. Деобфускация применяется только к ошибкам ANR и сбоям, возникающим после загрузки файла сопоставления или файла отладочных символов. Подождите, пока информация о новых сбоях и ошибках ANR будет получена с устройств пользователей. После этого вы сможете просматривать в Play Console данные с деобфускацией.
Чтобы не забывать загружать файлы, рекомендуем использовать в процессе сборки наборы App Bundle и плагин Android Gradle 4.1 или более поздней версии. В этом случае вы сможете настроить автоматическое добавление файла отладочных символов в набор App Bundle, как указано на сайте для разработчиков Android.
Что, если я загружу не тот файл?
После того как он будет загружен, деобфускация будет применяться только к последующим ошибкам ANR и сбоям. Подождите, пока информация о новых сбоях и ошибках ANR будет получена с устройств пользователей. После этого вы сможете просматривать в Play Console данные с деобфускацией.
Совет. Чтобы избежать ошибок при загрузке файла, рекомендуем использовать в процессе сборки наборы App Bundle и плагин Android Gradle 4.1 или более поздней версии. В этом случае вы сможете настроить автоматическое добавление файла отладочных символов в набор App Bundle, как указано на сайте для разработчиков Android.
Я использую формат APK. Как перейти к работе с наборами App Bundle?
Мое приложение содержит и нативный, и Java-код. Можно ли одновременно загрузить файл отладочных символов для нативного кода и файл деобфускации для Java?
Почему в некоторых ошибках ANR не показывается трассировка стека?
Иногда система обнаруживает ошибку ANR, но при этом не получает трассировку стека. В этом случае запись об ошибке ANR сохраняется, чтобы вам было проще выявлять проблемы со стабильностью приложения, а трассировка стека не отображается. Чтобы было удобнее находить и исправлять похожие ошибки ANR без трассировки стека, они объединяются в группы по типу и классу действия.
Читайте также: