Поделиться через


Деобфускация Android

Это важно

Центр приложений Visual Studio был прекращен 31 марта 2025 г., за исключением функций аналитики и диагностики, которые будут поддерживаться до 30 июня 2026 г. Подробнее.

ProGuard, DexGuard и R8 — это средства для оптимизации и скрытия кода приложений Android. Он удаляет неиспользуемый код, переименовывает классы, поля и методы с семантически скрытыми именами, что делает кодовую базу меньше и сложнее для проведения обратного проектирования. Чтобы включить маскировку с помощью ProGuard или R8 в приложении Android, следуйте официальной документации разработчика Android.

При включении ProGuard, DexGuard или R8 в вашем приложении для Android, трассировки стека должны быть деобфускированы. App Center автоматически декодирует трассировки стека для приложений Java, Kotlin и React Native Android при отправке mapping.txt файла, созданного при каждой сборке. Этот файл сопоставляет исходный класс, метод и имена полей с закодированными именами, делая трассировки стека возможными для чтения.

Служба сборки и распространения Центра приложений может автоматически создавать файлы сопоставления и отправлять их в службу диагностики. Если вы используете Центр приложений для создания и автоматического распространения приложения для конечных пользователей, вам не нужно вручную получать и отправлять файлы сопоставления, как описано в приведенных ниже шагах.

Отправка файла mapping.txt

Портал Центра приложений

  1. mapping.txt Скачивание файла из каталога сборки модуля приложения
  2. Войдите в Центр приложений и выберите приложение
  3. В меню слева перейдите к разделу "Диагностика"
  4. Выбор сопоставлений
  5. Нажмите кнопку "Отправить сопоставления" в правом верхнем углу
  6. Заполните Имя версии и Код версии (они должны соответствовать конфигурации Gradle сборки, чтобы сопоставление работало для конкретной сборки).
  7. mapping.txt Отправьте файл из каталога сборки модуля приложения.
  8. Нажмите кнопку Сохранить.

API Центра приложений

Процесс отправки файлов сопоставления через API включает в себя ряд трех вызовов API: один для выделения пространства на серверной части, один для отправки файла и один для обновления состояния отправки. Тело первого вызова API должно установить symbol_type, AndroidProguard, build и version свойства, которые соответствуют коду версии и имени версии соответственно, а также file_name.

  1. POST Активируйте запрос к API symbol_uploads. Этот запрос выделяет пространство в серверной системе для вашего файла и возвращает свойства symbol_upload_id и upload_url.
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. Используя свойство, возвращенное на первом шаге, выполните upload_url запрос с заголовком: PUT и укажите путь к вашему файлу на диске. Этот запрос отправляет файл на наши серверные учетные записи хранения. Узнайте больше о заголовках запросов PUT для BLOB.
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. PATCH Выполните запрос к API symbol_uploads с помощью свойства symbol_upload_id возвращенного на первом этапе. В тексте запроса укажите, нужно ли задать состояние отправки committed (успешно завершено) процесса отправки или aborted (неудачно завершено).
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

Замечание

API отправки символов не работает для файлов, размер которых превышает 256 МБ. Используйте интерфейс командной строки Центра приложений для отправки этих файлов. Вы можете установить CLI App Center, следуя инструкциям в репозитории CLI App Center.

Интерфейс командной строки Центра приложений

Вы также можете использовать интерфейс командной строки для отправки файлов сопоставления:

appcenter crashes upload-mappings --mapping {mapping file} --version-name {version name} --version-code {version code}

Замечание

Центр приложений не может проверить, отправлен ли правильный mapping.txt файл. Мы рекомендуем отправить файл непосредственно после создания файла .apk или отправить его в репозиторий кода, если вы хотите отправить его позже.

Пересылка сопоставления из сборки в Центре приложений

Если сборка настроена для создания mapping.txt файла, Центр приложений создает файл как доступный для загрузки. Автоматическое распространение сборки или вручное распространение его позже перенаправит файл в систему диагностики mapping.txt, чтобы расшифровать входящие отчеты о сбоях. После распространения сборки не требуется вручную отправить mapping.txt файл.

Удаление файла сопоставления

  1. GET Выполните запрос к API symbols_list. Это извлекает идентификаторы для файлов сопоставления, которые вы загрузили.
  2. DELETE Выполните запрос к API symbols_upload с идентификатором файла сопоставления. При этом удаляется указанный файл сопоставления.