Android MQTT 라이브러리를 os 12 이상에서 사용한다면??

킹정인·2023년 4월 28일
1

이번 8월 31일부터 스토어 정책 상 안드로이드 os 13 타겟팅이 필수 항목으로 변경됩니다. 😂
따라서 os 12 와 os 13 타겟팅을 대응하시는 분들이 많을텐데요!

MQTT 라이브러리 (org.eclipse.paho.android.service.MqttService) 를 사용하고 계신 분들!
MQTT 라이브러리를 새로이 적용하시는 분들은 아래 에러 메시지를 보실 수 있습니다 😅

java.lang.IllegalArgumentException: app id: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
    Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.

안드로이드 os 12 이상을 타겟팅하는 앱은 PendingIntent 의 flag 에 변경 가능 여부 flag를 뜻하는 FLAG_IMMUTABLE 나 FLAG_MUTABLE 를 추가해야합니다.

에러 메시지 내용에 따라 'PendingIntent' 의 flag 를 변경해주어야 하는데요..
문제가 되는 부분은 MQTT 라이브러리의 아래 코드입니다.😥

AlarmPingSender.kt

	@Override
	public void start() {
		//...
		pendingIntent = PendingIntent.getBroadcast(service, 0, new Intent(
				action), PendingIntent.FLAG_UPDATE_CURRENT);

		//...
	}

네.. 원격 저장소를 통해 받은 라이브러리이므로 수정을 할 수 없으니 두가지 선택지가 있습니다.

  1. github 를 방문하여 소스를 복사하고 수정한다.
  2. MQTT 를 대체한다..😱

두번째 방법은 있을 수 없는 일이므로 첫번째 방법을 수행해야겠죠?

첫번째 방법을 위해 GitHub 의 어느 한 귀인께서! PendingIntent 만을 수정한 라이브러리를 배포해주셨습니다.👏👏👏

Github 주소🔥
https://github.com/hannesa2/paho.mqtt.android

심지어 StackOverFlow 의 어느 귀인께서는 마이그레이션 방법까지 친히 알려주시네요🔥
https://stackoverflow.com/a/71839305

유용하셨다면.. 개발자들의 삽질 시간을 아껴주시는 이 고마운 귀인분들께 감사 인사와 함께 GitHub Star 를 눌러봅시다🌠🌠🌠🌠

profile
🕶안드로이드 개발자입니다! 🕶

2개의 댓글

comment-user-thumbnail
2023년 9월 15일

https://github.com/hannesa2/paho.mqtt.android 이것을 어디로 다운로드 받아야 하나요?

1개의 답글