iOS 기호화
중요
Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.
macOS, tvOS 및 iOS 크래시 보고서는 크래시가 발생했을 때 앱의 실행 중인 모든 스레드에 대한 스택 추적을 표시합니다. 스택 추적에는 메모리 주소만 포함됩니다. 클래스 이름, 메서드, 파일 이름 또는 충돌을 이해하는 데 필요한 줄 번호가 아닙니다.
변환된 메모리 주소를 얻으려면 기호화에 필요한 모든 정보가 포함된 dSYM 패키지를 App Center에 업로드해야 합니다. Apple의 공식 개발자 설명서에서 기호화에 대해 자세히 알아볼 수 있습니다.
App Center 빌드 및 배포 서비스는 유효한 dSYM 및 원본 맵 .zip
파일을 자동으로 생성하고 진단 서비스에 파일을 업로드할 수 있습니다. App Center를 사용하여 최종 사용자에게 앱을 빌드하고 자동으로 배포하는 경우 기호 파일을 수동으로 가져오고 업로드할 필요가 없습니다.
구성되지 않은 크래시
심볼을 업로드하기 전에 몇 가지 세부 정보를 볼 수 있도록 앱 센터 진단 섹션에 심볼이 없는 크래시가 표시됩니다. 이러한 크래시에서 누락된 기호는 "unsymbolicated" 탭에 표시됩니다. 누락된 기호가 업로드되면 심볼화되지 않은 크래시 그룹이 기호화된 크래시 그룹으로 대체됩니다.
번들 .dSYM
찾기
- Xcode에서 창 메뉴를 열고 이끌이를 선택합니다.
- 보관 탭 을 선택합니다.
- 왼쪽 사이드바에서 앱을 선택합니다.
- 최신 보관 파일을 마우스 오른쪽 단추로 클릭하고 Finder에 표시를 선택합니다.
- Finder에서 파일을 마우스 오른쪽 단추로 클릭하고
.xcarchive
패키지 콘텐츠 표시를 선택합니다. - dSYM 번들을 포함하는 라는
dSYMs
폴더가 표시됩니다. - dSYM 번들의 zip 파일을 만듭니다.
Xcode 대신 Visual Studio를 사용하는 경우 iOS 크래시 로그를 심볼화하기 위해 dSYM 파일을 어디에서 찾을 수 있나요? 를 참조하여 dSYM 파일을 찾습니다.
기호 업로드
App Center 포털
- App Center에 로그인하고 앱을 선택합니다.
- 왼쪽 메뉴에서 진단 섹션으로 이동하고 기호를 선택합니다.
- 오른쪽 위 모서리에서 기호 업로드를 클릭하고 파일을 업로드합니다.
- App Center에서 기호를 인덱싱하면 크래시가 기호화됩니다.
iOS 앱 React Native
React Native iOS 파일에 대한 기호 파일을 가져오려면 Mac의 dSYM 패키지와 앱의 JavaScript 소스 맵을 사용하여 ZIP 파일을 만듭니다. 소스 맵의 이름을 로 지정 index.ios.map
해야 합니다. 아래 명령은 릴리스 빌드에 대한 소스 맵을 생성합니다.
react-native bundle --entry-file index.ios.js --platform ios --dev false --reset-cache --bundle-output unused.jsbundle --sourcemap-output index.ios.map
App Center API
API를 통해 기호를 업로드하는 프로세스에는 일련의 세 가지 API 호출이 포함됩니다. 하나는 백 엔드에 공간을 할당하고, 다른 하나는 파일을 업로드하고, 다른 하나는 업로드의 상태 업데이트합니다. 첫 번째 API 호출의 본문은 로 설정 symbol_type
Apple
해야 합니다.
POST
symbol_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}'
- 첫 번째 단계에서 반환된
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}'
- 첫 번째 단계에서 반환된
PATCH
속성을 사용하여symbol_upload_id
symbol_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-symbols --symbol {symbol file}
비트 코드
비트 코드는 애플 자체에 의해 App Store 전송 된 애플 리 케이 션을 다시 컴파일 하 고 최신 최적화를 적용할 수 있도록 애플에 의해 도입 되었다. Bitcode를 사용하도록 설정하면 저장소의 앱에 대해 생성된 기호가 자체 빌드 시스템의 기호와 다릅니다.
App Center 크래시 보고는 아직 비트 코드 사용 앱에서 충돌의 기호화를 완전히 지원하지 않습니다. 그 동안 비트 코드를 사용하지 않도록 설정하는 것이 좋습니다. 비트코드를 사용하지 않도록 설정하면 기호 관리가 크게 간소화되며 현재 iOS 앱에 대해 알려진 단점이 없습니다.
앱에 대한 비트 코드 사용 안 함
- Xcode에서 프로젝트 탐색기에서 최상위 요소를 클릭하여 프로젝트 설정을 엽니다.
- 빌드 설정 페이지로 이동합니다.
bitcode
검색- 결과에서 값을 예에서 아니요로 변경합니다.
- 앱 다시 빌드
이러한 간단한 단계를 사용하면 App Center 크래시 보고가 평소와 같이 작동합니다.
비트 코드 사용 앱에 대한 기호 검색
비트 코드를 사용하도록 설정하려면 다음 단계에 따라 적절한 dSYM 파일을 다운로드할 수 있습니다.
- Xcode의 구성 도우미 열기
- iTunes Connect에 업로드한 앱의 특정 보관 파일을 선택합니다.
- "dSYM 다운로드" 단추를 클릭합니다. 이 단계에서는 Bitcode 컴파일된 dSYM 파일을 원래 보관 파일에 삽입합니다.
- App Center에서 해당 앱 및 버전에 기호 업로드
Xcode 구성 도우미가 새 기호를 제공하지 않는 경우 다음 단계에 따라 iTunes Connect 포털에서 dSYM 파일을 다운로드해야 합니다.
- iTunes Connect 포털에서 앱 선택
- 맨 위에 있는 활동 탭 선택
- 누락된 기호가 있는 앱의 빌드 버전을 선택합니다.
- dSYM 다운로드 링크를 클릭합니다.
- 다운로드한 파일을 App Center에 업로드합니다. 이 파일에는 App Center가 충돌을 심볼화하는 데 필요한 기호가 포함되어 있습니다.
기호 문제 해결
기호를 업로드하고 비트 코드를 사용하지 않도록 설정한 후에도 크래시가 여전히 동기화되지 않은 상태로 표시되는 경우 업로드된 dSYM 파일이 App Center에 필요한 파일과 일치하지 않기 때문일 수 있습니다. dSYM 파일을 업로드할 때 App Center는 UUID에 따라 올바른 앱 버전과 일치합니다.
dwarfdump라는 CLI 도구를 사용하여 dSYM 파일에 올바른 UUID가 있는지 여부를 두 번 검사 수 있습니다.
- dSYM 파일에서 UUID를 찾습니다.
dwarfdump --u CrashProbeiOS.app.dSYM
- 결과는 다음과 같이 표시됩니다.
UUID:ADF53C85-4638-3EFF-A33C-42C13A18E915 (armv7)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
UUID:D449E33D-7E74-379D-8B79-15EE104ED1DF (arm64)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
- 반환된 UUID가 디버그 기호 대화 상자에 표시된 UUID와 일치하는 경우 두 번 검사.
기호 무시
App Center에 크래시 보고서를 완전히 심볼화할 기호 파일이 모두 없는 경우 크래시가 동기화되지 않은 탭에 나열됩니다. 필요한 기호는 액세스 권한이 있는 경우 이 페이지에서 업로드됩니다.
기호를 업로드할 수 없는 경우 테이블에서 행을 선택하고 버전 무시 단추를 클릭하여 무시됨으로 표시할 수 있습니다. 이 단추는 App Center에 크래시를 처리하고 파일의 기호를 사용하여 가능한 한 완전히 기호화하도록 지시합니다. 처리가 완료되면 크래시 탭에 부분적으로 기호화된 상태로 표시됩니다. 무시됨으로 표시된 것과 동일한 기호 ID에 의존하는 새로운 크래시가 시스템 내부로 들어오고 흐르는 동안 해제된 탭을 무시합니다.