다음을 통해 공유


Android 난독 처리

중요합니다

Visual Studio App Center는 2026년 6월 30일까지 계속 지원되는 분석 및 진단 기능을 제외하고 2025년 3월 31일에 사용 중지되었습니다. 자세히 알아보기.

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

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

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 호출의 본문은 symbol_typeAndroidProguard로 설정하고, 각각 버전 코드 및 버전 이름에 해당하는 buildversion 속성, 그리고 file_name와 함께 설정되어야 합니다.

  1. POST symbol_uploads API에 대한 요청을 트리거합니다. 이 호출은 파일의 백 엔드에 공간을 할당하고 a symbol_upload_idupload_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" 를 포함하고 디스크에 파일의 위치를 제공합니다. 이 호출은 백 엔드 스토리지 계정에 파일을 업로드합니다. 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}

비고

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

App Center 빌드 프로세스에서 매핑을 전달하기

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

매핑 파일 삭제

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