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

Важно!

Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio до полного прекращения его использования, существует несколько рекомендуемых вариантов, на которые можно перейти.

Узнайте больше о сроках поддержки и альтернативных вариантах.

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

Если в приложении Android включены ProGuard, DexGuard или R8, трассировки стека должны быть удалены. Центр приложений автоматически отменяет трассировку стека для приложений 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_typeAndroidProguard, 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 : "x-ms-blob-type: BlockBlob" и укажите расположение файла на диске. Этот вызов отправляет файл в серверные учетные записи хранения. Дополнительные сведения о заголовках запросов BLOB-объектов PUT .
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 центра приложений.

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

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

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 с идентификатором файла сопоставления. При этом будет удален указанный файл сопоставления.