최근에 회사에서 React Native 프로젝트를 0.73.x 로 업그레이드를 하며 Android에서 Target API를 33 -> 34 로 올렸더니 예기치 못한 버그가 발생했다.

BroadcastReceiver를 등록해줄 때 항상 EXPORT를 어떻게 할것인지 명시해주어야 했는데, react-native-blob-utilreact-native-share의 내부 코드에서 registerReciever를 쓰고 있었고 그 부분을 지원하지 않는 버전을 회사 프로젝트에서 쓰고 있어서 기능이 제대로 동작하지 않았다.

원래 Target API를 올린다는 것은 이 코드베이스가 지원하는 버전을 설정하는 것이기 때문에 API 34에서 바뀐 점들을 확인하고 갔어야 했는데 잘 확인하지 않은 불찰이 있었다.

Android Target API 34

Docs에서 변화사항들을 확인할 수 있다.

큰 변화는 없는데, 대략 다음과 같은 것들이 있다.

  • ForegroundService는 타입이 명시되어야 한다.
  • BluetoothAdaptergetProfileConnectionState() 를 호출할 때 BLUETOOTH_CONNECT 권한이 필요해졌다.
  • Open JDK 17에 맞게 내부적인 코어 코드를 갈아끼우고 있다고 한다.
  • Photo, Video등 갤러리에 Partial Access가 도입되었고 관련 권한도 사용해야 되게 되었다.
  • Full Screen Intent Notification의 보안이 강화되었다.
  • Implicit Intent가 보안이 강화되었다.
  • Runtime에 등록되는 BroadcastReceiver는 Export type을 명시해주어야 한다.
  • 등등

Categories:

Updated:

Comments