Android Target SDK 34에 대하여
최근에 회사에서 React Native 프로젝트를 0.73.x
로 업그레이드를 하며 Android에서 Target API를 33
-> 34
로 올렸더니 예기치 못한 버그가 발생했다.
BroadcastReceiver를 등록해줄 때 항상 EXPORT를 어떻게 할것인지 명시해주어야 했는데, react-native-blob-util
과 react-native-share
의 내부 코드에서 registerReciever
를 쓰고 있었고 그 부분을 지원하지 않는 버전을 회사 프로젝트에서 쓰고 있어서 기능이 제대로 동작하지 않았다.
원래 Target API를 올린다는 것은 이 코드베이스가 지원하는 버전을 설정하는 것이기 때문에 API 34에서 바뀐 점들을 확인하고 갔어야 했는데 잘 확인하지 않은 불찰이 있었다.
Android Target API 34
이 Docs에서 변화사항들을 확인할 수 있다.
큰 변화는 없는데, 대략 다음과 같은 것들이 있다.
ForegroundService
는 타입이 명시되어야 한다.BluetoothAdapter
가getProfileConnectionState()
를 호출할 때BLUETOOTH_CONNECT
권한이 필요해졌다.- Open JDK 17에 맞게 내부적인 코어 코드를 갈아끼우고 있다고 한다.
- Photo, Video등 갤러리에 Partial Access가 도입되었고 관련 권한도 사용해야 되게 되었다.
- Full Screen Intent Notification의 보안이 강화되었다.
- Implicit Intent가 보안이 강화되었다.
- Runtime에 등록되는
BroadcastReceiver
는 Export type을 명시해주어야 한다. - 등등
Comments