Android 난독 처리

중요

Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.

지원 타임라인 및 대안에 대해 자세히 알아보세요.

ProGuard, DexGuard 및 R8은 Android 앱의 코드를 최적화하고 난독 처리를 위한 도구입니다. 사용되지 않는 코드를 제거하고, 의미상 모호한 이름을 가진 클래스, 필드 및 메서드의 이름을 변경하여 코드 베이스를 더 작고 리버스 엔지니어링하기 어렵게 만듭니다. Android 앱에서 ProGuard 또는 R8로 난독 처리를 사용하도록 설정하려면 공식 Android 개발자 설명서를 따르세요.

Android 앱에서 ProGuard, DexGuard 또는 R8을 사용하도록 설정하면 스택 추적을 난독 처리해야 합니다. App Center는 각 빌드에서 만든 파일을 업로드할 때 Java, Kotlin 및 React Native Android 앱에 대한 스택 추적을 mapping.txt 자동으로 난독 처리합니다. 이 파일은 원래 클래스, 메서드 및 필드 이름을 난독 분석된 이름에 매핑하여 스택 추적을 읽을 수 있도록 합니다.

App Center 빌드 및 배포 서비스는 매핑 파일을 자동으로 생성하고 진단 서비스에 업로드할 수 있습니다. App Center를 사용하여 최종 사용자에게 앱을 빌드하고 자동으로 배포하는 경우 아래 단계에 설명된 대로 매핑 파일을 수동으로 가져오고 업로드할 필요가 없습니다.

mapping.txt 파일 업로드

App Center 포털

  1. mapping.txt 앱 모듈의 빌드 디렉터리에서 파일 다운로드
  2. App Center에 로그인하고 앱을 선택합니다.
  3. 왼쪽 메뉴에서 진단 섹션으로 이동합니다.
  4. 매핑 선택
  5. 오른쪽 위에 있는 매핑 업로드 단추를 클릭합니다.
  6. 버전 이름 및 버전 코드를 입력합니다(특정 빌드에 대한 매핑이 작동하려면 해당 빌드의 Gradle 구성과 일치해야 합니다).
  7. mapping.txt 앱 모듈의 빌드 디렉터리에서 파일을 업로드합니다.
  8. 저장 단추를 클릭합니다.

App Center API

API를 통해 매핑 파일을 업로드하는 프로세스에는 일련의 세 가지 API 호출이 포함됩니다. 하나는 백 엔드에 공간을 할당하고, 다른 하나는 파일을 업로드하고, 다른 하나는 업로드의 상태 업데이트합니다. 첫 번째 API 호출의 본문은 각각 build 버전 코드 및 version 버전 이름file_name에 해당하는 속성과 로 설정 symbol_typeAndroidProguard되어야 합니다.

  1. POSTsymbol_uploads API에 대한 요청을 트리거합니다. 이 호출은 파일의 백 엔드에 공간을 할당하고 및 upload_url 속성을 반환 symbol_upload_id 합니다.
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 속성을 사용하여 헤더 "x-ms-blob-type: BlockBlob"PUT 사용하여 요청을 수행하고 디스크에 파일의 위치를 제공합니다. 이 호출은 백 엔드 스토리지 계정에 파일을 업로드합니다. PUT Blob 요청 헤더 에 대해 자세히 알아봅니다.
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. 첫 번째 단계에서 반환된 PATCH 속성을 사용하여 symbol_upload_idsymbol_uploads API에 요청합니다. 요청 본문에서 업로드의 상태 업로드 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는 256MB보다 큰 파일에 대해 작동하지 않습니다. App Center CLI를 사용하여 이러한 파일을 업로드합니다. App Center CLI 리포지토리의 지침에 따라 App Center CLI를 설치할 수 있습니다.

App Center CLI

CLI를 사용하여 매핑 파일을 업로드할 수도 있습니다.

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

참고

올바른 mapping.txt 파일을 업로드한 경우 App Center에서 검사 수 없습니다. .apk 파일을 만든 직후 파일을 업로드하거나 나중에 업로드하려는 경우 코드 리포지토리에 푸시하는 것이 좋습니다.

App Center의 빌드에서 매핑 전달

빌드가 파일을 생성 mapping.txt 하도록 구성된 경우 App Center 빌드는 파일을 사용 가능한 다운로드로 생성합니다. 빌드를 자동으로 배포하거나 나중에 수동으로 배포하면 파일이 진단에 전달 mapping.txt 되어 들어오는 크래시 보고서를 난독 처리합니다. 빌드를 배포한 후에는 파일을 수동으로 업로드 mapping.txt 할 필요가 없습니다.

매핑 파일 삭제

  1. GETsymbols_list API에 요청합니다. 업로드한 매핑 파일의 ID를 검색합니다.
  2. 매핑 파일 ID를 DELETE 사용하여 symbols_upload API 에 요청합니다. 이렇게 하면 지정된 매핑 파일이 삭제됩니다.