개선 및 향상
AGP 9.4 지원: 뉴렐릭 Gradle 플러그인에 안드로이드 Gradle 플러그인(AGP) 9.4.x에 대한 지원을 추가했습니다.
분산 추적 헤더 최적화: 독점적인 newrelic 요청 헤더를 제거하고 W3C 표준 traceparent 및 tracestate 헤더에만 의존하여 분산 추적을 간소화했습니다.
WebView 브라우저 에이전트 감지: 활성 WebView가 뉴렐릭 브라우저 에이전트를 활용하고 있는지 감지하고 추적하는 지원 가능성 메트릭을 추가했습니다.
SDK 크기 최적화 지침: 개발자가 비활성화된 기능에 대해 사용되지 않는 에이전트 코드를 제거할 수 있도록 ProGuard/R8 트리 셰이킹 규칙을 다루는 문서를 추가했습니다.
버그 수정
세션 리플레이 크래시 수정: 세션 리플레이에서 Curtains를 초기화할 때 메인 스레드에서 NullPointerException을 일으키는 멀티스레딩 경합 조건을 수정했습니다.
HTTP2 페이로드 크기 추적: 헤더가 없는 HTTP/2 및 Ktor 스트림에 대해 네트워크 요청 페이로드 크기(bytesReceived)가 0바이트로 잘못 보고되는 문제를 해결했습니다.
리소스 누수 해결: SessionReplayFileManager 내에서 BufferedWriter 인스턴스를 올바르게 닫아 정적 분석 관찰 결과(CWE-404)를 해결했습니다.
지지 성명
최소한 3개월에 한 번씩 에이전트를 업데이트하는 것이 좋습니다. 모바일 모니터링 에이전트 EOL 정책 에서 Android 에이전트 지원에 대한 구체적인 정책과 날짜를 찾아보세요.
버그 수정
- 리액트 네이티브 소스 맵 업로드를 위한 리전/기본 소스 맵 API 호스트를 올바르게 수정했습니다.
지지 성명
최소한 3개월에 한 번씩 에이전트를 업데이트하는 것이 좋습니다. 모바일 모니터링 에이전트 EOL 정책 에서 Android 에이전트 지원에 대한 구체적인 정책과 날짜를 찾아보세요.
버그 수정
- 리액트 네이티브 소스 맵을 업로드하기 위한 엔드포인트 URL을 수정했습니다.
지지 성명
최소한 3개월에 한 번씩 에이전트를 업데이트하는 것이 좋습니다. 모바일 모니터링 에이전트 EOL 정책 에서 Android 에이전트 지원에 대한 구체적인 정책과 날짜를 찾아보세요.
새로운 기능 및 개선 사항
- 세션 리플레이를 위한 오프라인 스토리지를 추가했습니다: 네트워크 연결 없음, 앱 강제 종료, 프로세스 종료 또는 메모리 부족으로 인한 종료로 인해 즉시 전송할 수 없는 리플레이 페이로드는 이제 손실되지 않고 디스크에 유지되며 다음 번 성공적인 수집 시에 전달됩니다.
- 리액트 네이티브 앱의 하이브리드 오류 보고를 위한 기본 지원을 추가했으며, 이는 곧 출시될 리액트 네이티브 에이전트 릴리스와 함께 활성화될 예정입니다. 처리되지 않은 JavaScript 오류는 에이전트 이벤트로 캡처되고, 세션 리플레이와 연관되며, 정확한 심볼리케이션을 위해 앱 버전으로 태그가 지정됩니다.
- Gradle 빌드 중 리액트 네이티브 JavaScript 소스 맵의 자동 업로드를 위한 기본 지원을 추가했으며, 이는 다가오는 리액트 네이티브 에이전트 출시와 함께 활성화될 예정입니다.
- 빌드 타겟별 ProGuard/DexGuard 매핑 파일 업로드를 추가하여, 여러 DexGuard 패키징 타겟이 있는 애플리케이션이 각 타겟에 대해 올바르게 일치하는 크래시 난독화 해제를 받을 수 있도록 했습니다.
- 애플리케이션 종료 정보(AEI) 이벤트가 재시작 후 생성된 세션이 아닌 실제로 크래시가 발생한 세션의 세션 속성을 전달하도록 세션 범위의 속성 저장소를 추가했습니다.
- 이제 이벤트 지속성이 기본적으로 활성화되므로, 버퍼링된 이벤트 및 분석 데이터가 앱 종료 시에도 유지되며 다음 출시 시 복구됩니다.
- 안드로이드 Gradle 플러그인(AGP) 9.x에 대한 지원을 추가하여 지원 상한선을 9.3.0으로 높였습니다.
버그 수정
- Activity 재개 시점이 아닌 출시부터 첫 번째 렌더링된 프레임까지의 초기 디스플레이 시간(TTID)을 측정하도록 콜드 스타트 타이밍을 수정했습니다.
- 이전 크래시 이후 오래된 백업 파일로 인해 크래시 스토어가 복구되지 못하는 크래시 복구 문제를 수정했습니다.
- 예외 저장소에 기록할 때 발생할 수 있는 잠재적인 속도 저하를 방지하기 위해, 처리된 예외가 호출 스레드 외부에서 유지되도록 수정했습니다.
- 빌드별 빌드 ID 및 메트릭 값을 컴파일된 소스에 직접 포함하여 발생하는 Gradle 빌드 캐시 무효화 문제를 수정했습니다 — 이제 이러한 값은 안드로이드 리소스로 대신 생성되어 불필요한 재컴파일 및 다시 빌드 시간을 줄여주며, shrinkResources가 활성화된 경우 리소스가 제거되지 않도록 보호됩니다.
지지 성명
최소한 3개월에 한 번씩 에이전트를 업데이트하는 것이 좋습니다. 모바일 모니터링 에이전트 EOL 정책 에서 Android 에이전트 지원에 대한 구체적인 정책과 날짜를 찾아보세요.
버그 수정
세션 리플레이 이미지 압축이 메인 스레드에서 실행되던 성능 문제를 수정했습니다. 이제 비동기적으로 실행되어 캡처 중 오버헤드를 줄입니다.
세션 리플레이에서 점진적인 뷰 추가를 자연스러운 뷰 순서로 내보내어 렌더링 정확도 문제를 해결했습니다.
너무 오래 대기열에 있는 데이터를 삭제하는 TTL(Time-To-Live)을 적용하여 오래된 오프라인 페이로드가 전송될 수 있는 문제를 수정했습니다.
종료 수집 중에 세션 속성이 손실될 수 있는 문제를 해결했습니다.
앱 종료 시 버퍼링된 이벤트가 삭제되는 문제를 수정하여, 데이터 손실을 방지하기 위해 최종 수집 시 전송되도록 보장합니다.
기기 회전 중 전환 시 세션 연속성이 손실될 수 있는 타이밍 문제를 수정했습니다.
HTTP 헤더 처리를 스레드로부터 안전하게 만들어 동시 액세스 시 발생할 수 있는 오류를 해결했습니다.
시작 타임스탬프가 설정되지 않은 경우 앱 시작 메트릭이 잘못 계산될 수 있는 문제를 수정했습니다.
활성 네트워크 연결 없이 에이전트가 크래시를 보고하려고 시도하여 오프라인 디바이스에서 불필요한 오류를 발생시키는 문제를 해결했습니다.
stop()의 ABI 불일치로 인해 종료 중 발생할 수 있는 네이티브(NDK) 크래시를 수정했습니다.DexGuard APK를 직접 생성하는 빌드에 대한 ProGuard 맵 업로드를 수정했습니다.
맵 업로드 중 Gradle 설정 캐시 호환성을 개선했습니다.
호스트 애플리케이션과의 충돌을 방지하기 위해 Gradle 플러그인에 번들로 제공되는
commons-io의존성을 재배치했습니다.지지 성명
최소 3개월마다 에이전트를 업데이트하는 것이 좋습니다. 모바일 모니터링 에이전트 EOL 정책에서 안드로이드 에이전트 지원에 대한 구체적인 정책 및 날짜를 확인하세요.