1. SDK란?
Android SDK(Android Software Development Kit)는 포괄적인 개발 도구를 포함하는 소프트웨어 개발 키트이다.
SDK에는 API, 디버거, 라이브러리, QEMU 기반 핸드셋 애뮬레이터, 설명서, 샘플 코드 및 튜토리얼이 포함된다.
현재 지원되는 개발 플랫폼에는 리눅스, 맥, 윈도우가 포함된다.
2. SDK Version?
Android Studio에서 프로젝트를 새로 생성할 시, Minimum SDK를 선택해야 한다.
이때 Android Studio에서 사용자들이 어떤 API 버전을 얼마나 사용하고 있는지 확인할 수 있다.
안드로이드에서는 버전 이름을 오레오, 레드벨벳 케이크, 티라미슈 등으로 지정해두었다.
3. Google Play와 targetSDK?
실제 앱을 만들고 배포하는 과정에서 구글 플레이 스토어를 이용한다.
APK 파일을 업로드하는 경우 Google play의 targetSDK 수준 요구사항을 충족해야 한다.
이때 기존의 업로드가 되어있는 앱은 정해진 기한에 맞추어 API 버전을 올려줘야 한다.
API 버전을 올릴 때는 developer 사이트를 참고하거나, 해당하는 API 버전 대응이라고 검색하면 참고할만한 자료가 많이 나올 것이다.
4. targetSDK 31
SDK 31 버전에서도 변경된 사항들이 많았지만, 주목할만한 점은 두 가지였다.
- Manifest에 exported
- Pending Intent
5. Manifest exported
AndroidManifest.xml 파일의 activity, receiver, service 등에 설정할 수 있고, 다른 애플리케이션의 구성요소로 Activity를 시작할 수 있는지 설정하는 것이다.
쉽게 설명하면, 다른 앱에서 액티비티를 실행할 수 있는 경우 exported를 true로 설정해주고, 다른 앱에서 Activity를 시작할 수 없다면 false로 설정해준다.
간혹 Intent-filter를 사용하는 경우가 있는데 이때는 true로 설정해야한다. 만약, false로 설정하게 되면 예외를 발생시킬 수 있다.
6. Pending Intent
PendingIntent는 기본적으로 Intent를 가지고 있는 클래스이다. 이는 Intent를 당장 수행하진 않고 앱이 구동되지 않을 때 수행하도록 하는 특징이 있다.
예를 들면 푸시알람, 위젯, 알람 등이 있다.
보통 푸시알람을 터치하게 되었을 때 해당 앱으로 들어가게 되고, 개발자가 작성해둔 코드대로 특정 작업을 이어간다.
이번 31버전에서 달라진 점은 Flag를 주목하면 된다.
FLAG_CANCEL_CURRENT
→ 이전에 생성한 PendingIntent 취소 후 새로 생성
FLAG_NO_CREATE
→ 이미 생성된 PendingIntent 가 있다면 재사용 (없으면 Null 리턴)
FLAG_ONE_SHOT
→ 해당 PendingIntent 를 일회성으로 사용
FLAG_UPDATE_CURRENT
→ 이미 생성된 PendingIntent 가 있다면, Extra Data 만 갈아 끼움 (업데이트)
기존의 플래그들인데, 31버전부터는 위의 플래그들만 입력한다면 아래와 같은 오류가 발생한다.
java.lang.IllegalArgumentException: com.pys.test: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
따라서, 31버전 부터는 플래그에 FLAG_IMMUTABLE or FLAG_MUTABLE를 적용시켜주어야 한다.
위와 같은 플래그가 추가된 이유는 보안상의 이유이다. 또한, FLAG_IMMUTABLE이 권고된다.
참고 링크
- https://help.dfinery.io/hc/ko/articles/8507534420377--%EC%A4%91%EC%9A%94%EA%B3%B5%EC%A7%80-Android-Target-API-31-Android-12-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-%EC%95%88%EB%82%B4
- https://developer.android.com/about/versions/12/behavior-changes-12
- https://developer.android.com/about/versions/12/behavior-changes-all
동작 변경사항: Android 12를 타겟팅하는 앱 | Android 개발자 | Android Developers
Android 12를 타겟팅하는 앱에 영향을 주는 Android 12의 변경사항을 알아봅니다.
developer.android.com