• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

이 한글 문서는 사용자의 편의를 위해 기계 번역되었습니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

Android 에이전트 충돌 보고

기본적으로 충돌을 추적하고 진단하는 데 도움이 되도록 모바일 애플리케이션에 대한 충돌 보고를 활성화합니다. Android 애플리케이션이 충돌하면 에이전트는 뉴렐릭 수집기 에 충돌 보고서를 업로드합니다. ProGuard 또는 DexGuard를 사용하는 경우 충돌 세부 정보가 자동으로 처리되고 난독 해제됩니다.

Crash analysis UI 에서 충돌에 대한 자세한 정보를 보거나 이메일 로 충돌 공지를 받을 수 있습니다. 추가 조사를 위해 지원 폴트 시스템과 통합 할 수도 있습니다.

ProGuard 또는 DexGuard 파일 업로드

Android 에이전트는 ProGuard 및 DexGuard를 지원합니다. DexGuard는 ProGuard의 확장이며 충돌 기호화 및 난독화된 코드 맵을 처리할 때 ProGuard와 동일하게 작동합니다.

ProGuard는 의미상 모호한 레이블로 클래스, 필드 및 메서드의 이름을 변경하여 코드를 난독화합니다. DexGuard는 난독화 및 보안의 또 다른 추가 계층을 추가하지만 그 외에는 ProGuard와 동일하게 작동합니다. ProGuard 또는 DexGuard가 활성화된 경우 충돌로 인해 생성된 스택 추적은 사람이 읽을 수 없는 이러한 난독화된 레이블로만 구성됩니다.

SDK 설치 또는 업그레이드 지침에 따라 ProGuard 또는 DexGuard를 구성 하고 충돌 보고를 활성화합니다. 애플리케이션 토큰이 포함된 newrelic.properties 파일을 생성해야 합니다.

mapping.txt 파일 사용

에이전트는 ProGuard/DexGuard 사용 빌드 중에 생성된 mapping.txt 파일을 사용합니다. 이 파일은 난독화된 레이블 이름으로 구성되며 난독화된 텍스트 레이블과 일반 텍스트 레이블 간의 역 매핑을 제공합니다. 최종 애플리케이션을 생성한 빌드 중에 생성된 mapping.txt 사본을 사용해야 합니다. 애플리케이션의 빌드 ID는 APK가 생성될 때마다 변경되며 매핑 파일의 빌드 ID는 업로드된 각 충돌 보고서에 포함된 ID와 일치해야 합니다.

프로젝트에서 New Relic 앱 토큰이 포함된 newrelic.properties 파일을 생성하면 각 빌드 후에 ProGuard 또는 DexGuard mapping.txt 파일이 자동으로 업로드됩니다.

예외

다음 상황 중 하나가 발생하면 mapping.txt 대체 파일을 수동으로 업로드 해야 합니다.

  • DexGuard -printmapping 옵션을 사용하여 mapping.txt 파일의 이름을 바꾸면 Android 에이전트는 제거된 이름을 찾거나 업로드할 수 없습니다.

  • Crashes

    페이지 에 난독화된 충돌 보고서가 표시되면 mapping.txt 파일을 업로드하지 않은 것일 수 있습니다.

지도 처리

중요

에이전트 버전 5.27.0 에서는 빌드 중에 에이전트 플러그인 프로세스가 매핑되는 방식이 변경되었습니다.

일부 변형 빌드에 대해 지도가 보고됩니다.

에이전트는 Release 빌드 유형 변형에 의해 생성된 mapping.txt 파일에만 태그를 지정하고 보고합니다. 이 동작은 New Relic Gradle 플러그인 확장을 통해 구성하거나 비활성화할 수 있습니다.

변형에는 고유한 빌드 ID가 할당됩니다.

Gradle 빌드를 실행하는 동안 해당 호출 중에 빌드된 앱의 모든 변형을 나타내기 위해 단일 고유 ID(빌드 ID)가 생성되었습니다. 이로 인해 공통 앱 코드 기반을 사용자 지정하기 위해 변형을 사용하는 고객에 대한 불일치 충돌 보고서가 종종 발생했습니다.

이제 각 변종은 고유한 ID로 식별되며, 이는 변종 ProGuard 맵을 New Relic에 보고할 때 사용됩니다. New Relic Gradle 플러그인 확장을 통해 이 동작을 비활성화할 수 있습니다.

업로드 전에 지도 압축

앱이 커질수록 연결된 지도도 커지므로 지도를 보고할 때 업로드 시간이 길어집니다. 지도 보고 시간이 지나치게 긴 경우 에이전트는 전송 전에 지도를 압축할 수 있습니다.

압축된 지도 업로드를 활성화하려면 앱의 newrelic.properties 파일에 다음을 추가하세요.

com.newrelic.compressed_uploads=true

매핑 업로드 호스트 구성

리디렉션된 서버에 지도를 보내려면 앱의 newrelic.properties 파일에 다음을 추가하세요.

# Please only provide the host name as the value without https:// at the beginning or / at the end, for example: xyz.api.com
com.newrelic.mapping_upload_host=xyz.api.com

지연된 충돌 보고

중요

에이전트 버전 6.0.0 에서는 에이전트 플러그인이 런타임 시 충돌을 처리하는 방식이 변경되었습니다.

충돌 보고서 중복을 해결하기 위해 지연된 충돌 보고가 이제 기본 충돌 보고 동작입니다. 이 경우 충돌 보고서는 발생할 때 기록되지만 다음 애플리케이션이 실행될 때까지 업로드되지 않습니다.

이전 충돌 보고 동작은 계속 사용할 수 있습니다. 응용 프로그램 프로세스가 종료되기 전에 충돌이 발생하는 즉시 업로드합니다. NewRelic.withCrashReportingEnabled(boolean) API 메서드를 사용할 수 있습니다. 예를 들어:

NewRelic
.withApplicationToken("<appToken>")
.withCrashReportingEnabled(true)
.start(this.getApplication());

충돌 보고 비활성화

다른 충돌 보고 도구를 사용하려는 경우 에이전트 초기화 전에 NewRelic.disableFeature(FeatureFlag.CrashReporting) 를 호출하여 충돌 보고를 비활성화할 수 있습니다. 예를 들어:

NewRelic.disableFeature(FeatureFlag.CrashReporting);
NewRelic
.withApplicationToken("<appToken>")
.start(this.getApplication());

크래시 리포터 디버그

Android용 충돌 보고는 이미 등록된 경우 포착되지 않은 예외 처리기를 연결하여 다른 충돌 보고 프레임워크와 함께 작동하도록 설계되었습니다.

  • 다른 프레임워크가 발견되지 않은 경우(또는 New Relic이 등록된 첫 번째 프레임워크인 경우) 디버그 로그에는 다음이 포함됩니다.

    Installing New Relic crash handler.
  • 다른 핸들러가 이미 등록된 경우 디버그 로그에는 다음이 포함됩니다.

    Installing New Relic crash handler and chaining previous exception handler.

New Relic이 예외를 포착할 때마다 DEBUG 레벨에 기록됩니다 . 예를 들어:

A crash has been detected in <className>.

New Relic이 예외를 포착했지만 어떤 이유로 인해 충돌 보고가 비활성화된 경우 다음 메시지가 기록됩니다.

A crash has been detected but crash reporting is disabled.

충돌 보고서가 표시되지 않으면 디버그 로그에서 이와 같은 메시지를 확인하세요.

수동으로 ProGuard 또는 DexGuard 맵 파일 업로드

일부 비정상적인 상황에서는 ProGuard 또는 DexGuard 매핑 파일을 자동으로 업로드하지 못할 수 있습니다. 이는 종종 애플리케이션 토큰이 포함된 newrelic.properties 파일을 잘못 생성하기 때문입니다. 그러면 자세한 로그 메시지와 함께 빌드 오류 또는 경고가 발생합니다.

ProGuard 또는 DexGuard 맵 파일을 수동으로 업로드하려면:

  1. 프로젝트의 빌드 디렉토리에서 mapping.txt 파일 찾기 예를 들어, 파일은 Android Studio를 사용하는 프로젝트의 경우 <PROJECT_ROOT>/app/build/outputs/mapping/<BUILD_VARIANT> 디렉토리에 있습니다. 일반적으로 release 변형은 애플리케이션의 최종 버전을 빌드할 때 사용됩니다. 다음 명령은 지도 파일을 찾는 데 유용합니다.

    bash
    $
    find <project_root> -name mapping.txt
  2. 명령 터미널을 사용하여 ProGuard 또는 DexGuard 매핑 파일을 업로드합니다.

    • US account 의 경우:

      bash
      $
      curl -v -F upload=@"<mapping.txt>" -H "X-APP-LICENSE-KEY:<APPLICATION_TOKEN>" https://mobile-symbol-upload.newrelic.com/symbol
    • EU account 의 경우:

      bash
      $
      curl -v -F upload=@"<mapping.txt>" -H "X-APP-LICENSE-KEY:<APPLICATION_TOKEN>" https://mobile-symbol-upload.eu.newrelic.com/symbol

    명령에서 다음을 바꿉니다.

    • <mapping.txt> ProGuard 또는 DexGuard mapping.txt 파일의 전체 경로입니다.
    • <APPLICATION_TOKEN> 귀하의 모바일 모니터링 애플리케이션 토큰 입니다.

Android 네이티브 충돌 보고

New Relic Android 에이전트 버전 6.7.0 부터 기본 충돌을 추적하고 진단하는 데 도움이 되도록 보고 및 분석이 런타임 중에 기본 코드 수준에서 발생하는 신호 위반 및 기타 결함을 포함하도록 향상되었습니다.

여기에서 Android 네이티브 충돌 보고에 대해 자세히 알아보세요.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.