webrtc 설치 시 안드로이드 빌드 완료 후 앱이 실행 되자마자
에러 메시지 없이 강제 종료(crash) 되는 현상 발생
https://velog.io/@lumpenop/TIL-RN-Firebase-Crashlytics
Firebase Crashlytics 를 통해 에러 메시지 확인 후
검색하여 해결..
아무래도 webrtc 설치 후 발생하는 문제 같다
구글에 글 2개 나오는.. 에러
https://github.com/react-native-webrtc/react-native-webrtc/issues/720
SDK 버전을 21에서 24 이상으로 올리거나
SDK 21 버전을 계속 사용하려면
android/gradle.properties 파일에
android.enableDexingArtifactTransform.desugaring=false
한 줄을 추가해주면 된다
SDK 21 버전에서 다른 Gradle 3.5 이상의 버전을 사용해야 할 경우 발생하는 에러 같다
desugaring
Desugaring은 새로운 Java 언어 기능과 API를 이전 버전의 Android 기기에서도 사용할 수 있게 해주는 프로세스입니다. 이는 주로 다음과 같은 목적으로 사용됩니다:
• 하위 호환성 제공: 최신 Java 기능을 낮은 API 레벨의 Android 기기에서도 사용 가능하게 함
• 개발 편의성 향상: 개발자가 최신 언어 기능을 자유롭게 사용할 수 있게 함
작동 방식
1. 컴파일 과정에서 적용: D8/R8 컴파일러가 desugaring을 수행함
2. 코드 변환: 최신 Java 문법을 이전 버전에서 실행 가능한 형태로 변환
3. 라이브러리 지원: 일부 Java 8+ 라이브러리를 낮은 API 레벨에서도 사용 가능하게 함
주요 특징
• Java 8+ 언어 기능 지원: 람다, 메서드 참조 등을 낮은 API 레벨에서 사용 가능
• 코어 라이브러리 desugaring: java.util.stream, java.time 등의 API를 지원
• 앱 크기 영향: desugaring 적용 시 앱 크기가 약간 증가할 수 있음
WebRTC와의 충돌:
• React Native WebRTC 라이브러리는 일부 네이티브 코드를 포함하고 있습니다.
• 이 네이티브 코드가 디슈가링 프로세스와 호환되지 않아 충돌이 발생할 수 있습니다.
메서드 불일치:
• 디슈가링 과정에서 `createEgl14` 메서드가 예상치 못한 방식으로 변환되어, 런타임에 해당 메서드를 찾을 수 없게 되는 것으로 보입니다.