기본적으로 충돌을 추적하고 진단하는 데 도움이 되도록 모바일 애플리케이션에 대한 충돌 보고를 활성화합니다. 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 에이전트는 제거된 이름을 찾거나 업로드할 수 없습니다.페이지 에 난독화된 충돌 보고서가 표시되면
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.comcom.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 맵 파일을 수동으로 업로드하려면:
프로젝트의 빌드 디렉토리에서
mapping.txt
파일 찾기 예를 들어, 파일은 Android Studio를 사용하는 프로젝트의 경우<PROJECT_ROOT>/app/build/outputs/mapping/<BUILD_VARIANT>
디렉토리에 있습니다. 일반적으로release
변형은 애플리케이션의 최종 버전을 빌드할 때 사용됩니다. 다음 명령은 지도 파일을 찾는 데 유용합니다.bash$find <project_root> -name mapping.txt명령 터미널을 사용하여 ProGuard 또는 DexGuard 매핑 파일을 업로드합니다.
US account 의 경우:
bash$curl -v -F upload=@"<mapping.txt>" -H "X-APP-LICENSE-KEY:<APPLICATION_TOKEN>" https://mobile-symbol-upload.newrelic.com/symbolEU 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 또는 DexGuardmapping.txt
파일의 전체 경로입니다.<APPLICATION_TOKEN>
귀하의 모바일 모니터링 애플리케이션 토큰 입니다.
Android 네이티브 충돌 보고
New Relic Android 에이전트 버전 6.7.0 부터 기본 충돌을 추적하고 진단하는 데 도움이 되도록 보고 및 분석이 런타임 중에 기본 코드 수준에서 발생하는 신호 위반 및 기타 결함을 포함하도록 향상되었습니다.
여기에서 Android 네이티브 충돌 보고에 대해 자세히 알아보세요.