[안드로이드] 안드로이드 15 (targetSdk 35) 이상 선언 시, 점검사항
기존 프로젝트에서 targetsdk 35 이상 선언 시 아래 사항을 점검해주시기 바랍니다. (Android 정책 적용 관련)
1. 공통 적용사항[MADP IDE로 사용하시는 경우 해당 SDK 지원 불가]
(1) java 17 버전으로 변경해야합니다.
(2) Android 15에서는 일부 하위 버전의 AndroidStudio와 호환되지 않는 변경사항이 포함되어 있기 때문에 Android 15 SDK를 사용해 최적의 개발을 하기 위해
최신 AndroidStudio (2024.1.2 출시버전 이상)를 사용하는 것을 권장하고 있습니다.
(3) sdk version을 35로 적용하기 위해서는 gradle version 8.x로 변경해야합니다. (하위 버전은 sdk-35의 android.jar 리소스를 로드할 수 없음)
[build.gradle 적용예시]
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:8.4.0'
}
}
[gradle/wrapper/gradle-wrapper.properties 변경 예시]
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
(4) build.gradle에 namespace 명시 필요
[build.gradle 예시]
android {
namespace "패키지명"
}
(5) 최소 sdk 버전 = 24 (Android 7.0)로 변경되어 targetsdk 35 선언 시 Android 7.0 이하의 단말기에서는 앱이 설치되지 않음을 참고해주세요
2. MADP 사용 시
Android 15를 제외한 모든 단말기는 4KB 페이지 크기로 사용되나, 16KB 페이지 크기를 지원해야하는 프로젝트의 경우 라이선스 변경이 필요합니다. 필요 시 기술지원 페이지를 통해 라이선스 재 발급을 요청해주세요
*16kb모드 사용 시 Android System Webview 최신 웹뷰를 사용(134.0.6986.0 이상버전. 아래 주소 참고)
설정 > 개발자옵션 > WebView 구현 > 버전 확인 (아래 웹뷰의 최신 버전을 다운받은 경우 해당 웹뷰로 선택)
Android System Webview Beta 버전 : https://play.google.com/store/apps/details?id=com.google.android.webview.beta
Android System Webview Dev 버전 : https://play.google.com/store/apps/details?id=com.google.android.webview.dev
3. PUSH 제품 사용 시
Android 15(targetSDK 35)를 지정시 foregroundServiceType에 대한 제약 사항이 생겨 라이브러리 패치 및 조치가 필요합니다
❗️미조치시 정상적으로 메시지를 수신받지 못하거나 notification이 6시간만 노출되는 등의 오동작의 소지가 있습니다.
사용중인 Push제품의 push-type 유형에 따라 아래 항목을 참고하여 조치하시기 바랍니다.
3-1 FCM 적용사항
Push 라이브러리를 최신 라이브러리로 교체
MADP 구조로 push.r(x) 플러그인 라이브러리 사용 시 : MADP IDE의 M-SDK Manager에서 라이브러리 업데이트 및 적용
push 5.1 버전 라이브러리 : https://developer.uracle.co.kr/reference/?pageid=2&mod=document&uid=120
push 5.2 버전 라이브러리 : https://developer.uracle.co.kr/reference/?uid=416&mod=document&pageid=1
3-2 UPNS[Uracle Push Notigfication Service] + FCM 적용사항
(1) Push 라이브러리를 최신 라이브러리로 교체 (1-1 FCM 적용사항 참고)
(2) AndroidManifest.xml 변경
(2-1) UPNSConnectService service 태그 제거
(2-2) AndroidManifest.xml에 permission 적용
<!--DATA SYNC 권한 제거--> <!--<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />-->
<!--SPESCIAL USE 권한 추가-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
앱을 개시하는 영역에서 special use 권한에 대해 앱 콘텐츠 > 포그라운드 서비스 권한 > 기타 > "데이터 보안상의 이유로 FCM이 아닌, 자체 푸시를 사용하고 있으며, 푸시 데이터의 동기화를 위해 사용" 으로 지정(하단 이미지(첨부파일) 참조)
3-3 UPNS[Uracle Push Notigfication Service] Only 적용사항
(1) 'UPNS[Uracle Push Notigfication Service] + FCM 적용사항'과 동일한 작업
(2) 별도로 구현하신 foreground service에 대해 다음과 같이 foregroundServiceType과 property를 수정
[AndroidManifest.xml 작성 예시]
<service android:name="[패키지명].[Service클래스명]"
android:exported="false"
android:foregroundServiceType="specialUse">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="push_server_message_data_sync"/>
</service>앱을 개시하는 영역에서 special use 권한에 대해 앱 콘텐츠 > 포그라운드 서비스 권한 > 기타 > "데이터 보안상의 이유로 FCM이 아닌, 자체 푸시를 사용하고 있으며, 푸시 데이터의 동기화를 위해 사용" 으로 지정(하단 이미지(첨부파일) 참조)
foregroundServiceType권한의 앱에 대해, 최초로 해당 정책을 적용하여 앱을 업데이트 할 시, 또는 앱 배포 시에 필수 작업으로 영상을 게시하도록 안드로이드 정책이 지정되었습니다.
포그라운드 서비스를 사용하는 앱에 대해 동영상 첨부가 필요하며, 배포 할 앱에서 해당 기능을 사용하여 어떤 작업을 하는지에 대한 영상을 심사하기 때문에 앱에서 푸시를 수신받는 부분에 대한 영상을 별도로 남겨서 YouTube 또는 구글 드라이브 등 주소를 첨부할 수 있는 방법으로 개시 후 해당 주소를 올리는 방식 등으로 적용이 필요합니다.
[앱콘텐츠 작성예시]