1) Android 11 플랫폼에서 실행되는 모든 앱
개인정보 보호
Android 11에서는 사용자 개인정보 보호를 강화하기 위해 다음을 비롯한 변경사항과 제한사항이 도입되었습니다.
- 일회성 권한: 사용자에게 위치, 마이크 및 카메라 권한에 관한 추가 임시 액세스 권한을 부여하는 옵션을 제공합니다.
- 권한 대화상자 공개 상태: 반복적인 권한 거부는 '다시 묻지 않음'을 의미합니다.
- 데이터 액세스 분석: 앱 자체 코드와 종속 라이브러리 코드 모두에서 앱이 비공개 데이터에 액세스하는 위치에 관한 유용한 정보를 얻습니다.
- 시스템 알림 창 권한: 요청에 따라 앱의 특정 클래스에 SYSTEM_ALERT_WINDOW 권한이 자동으로 부여됩니다. 또한 ACTION_MANAGE_OVERLAY_PERMISSION 인텐트 작업이 포함된 인텐트에 따라 항상 사용자가 시스템 설정의 화면으로 이동됩니다.
- 영구적 SIM 식별자: Android 11 이상에서는 getIccId() 메서드를 통한 재설정할 수 없는 ICCID 액세스가 제한됩니다. 이 메서드는 null이 아닌 빈 문자열을 반환합니다. 기기에 설치된 SIM을 고유하게 식별하려면 대신 getSubscriptionId() 메서드를 사용합니다. 정기 결제 ID는 물리적 및 전자식을 포함하여 설치된 SIM을 고유하게 식별하기 위한 색인 값(1부터 시작)을 제공합니다. 이 식별자의 값은 기기가 초기화되지 않는 한 특정 SIM에 대해 안정적입니다.
지도 v1 공유 라이브러리 삭제됨
지도 v1 공유 라이브러리가 Android 11에서 완전히 삭제되었습니다. 이 라이브러리는 이전에 지원 중단되었으며 Android 10용 앱에서 작동이 중지되었습니다. Android 9(API 수준 28) 이하를 실행하는 기기에서 이전에 이 공유 라이브러리에 의존했던 앱은 Maps SDK for Android를 대신 사용해야 합니다.
중요: Maps SDK for Android로 이전하고 나면 앱의 매니페스트 파일의 <uses-library> 요소에서 지도 v1 공유 라이브러리 참조를 삭제해야 합니다. 앱은 더 이상 지도 v1 공유 라이브러리 및 <uses-library> 요소와 함께 Google Play 필터링을 사용할 수 없습니다.
다른 앱과의 상호작용
콘텐츠 URI 공유
앱이 다른 앱과 콘텐츠 URI를 공유한다면 인텐트는 FLAG_GRANT_READ_URI_PERMISSION 및 FLAG_GRANT_WRITE_URI_PERMISSION 인텐트 플래그 중 하나 이상을 설정하여 URI 액세스 권한을 부여해야 합니다. 이렇게 하면 다른 앱이 Android 11을 타겟팅하는 경우에도 콘텐츠 URI에 계속 액세스할 수 있습니다. 콘텐츠 URI가 앱이 소유하지 않은 콘텐츠 제공자와 연결되어 있더라도 앱에 인텐트 플래그가 포함되어 있어야 합니다.
앱이 콘텐츠 URI와 연결된 콘텐츠 제공자를 소유한 경우 콘텐츠 제공자를 내보내지 않았는지 확인합니다. 이 보안 권장사항은 이미 권장되고 있습니다.
2) API 레벨 30 이상을 타겟팅하는 앱
개인정보 보호
Android 11에서는 사용자 개인정보 보호를 강화하기 위해 다음을 비롯한 변경사항과 제한사항이 도입되었습니다.
- 범위 지정 저장소 적용: 외부 저장소 디렉터리에 대한 액세스는 앱별 디렉터리 및 앱에서 만든 특정 유형의 미디어로 제한됩니다.
- 권한 자동 초기화: 사용자가 몇 개월 동안 앱과 상호작용하지 않았다면 시스템이 앱의 민감한 권한을 자동으로 초기화합니다.
- 백그라운드 위치 액세스: 앱에 백그라운드 위치 정보 액세스 권한을 부여하도록 사용자를 시스템 설정으로 리디렉션해야 합니다.
- 패키지 공개 상태: 앱이 기기에 설치된 앱 목록을 쿼리하면 반환된 목록이 필터링됩니다.
토스트 메시지 업데이트
백그라운드에서 맞춤 토스트 메시지가 차단됨
보안상의 이유로 그리고 좋은 사용자 환경을 유지하기 위해 Android 11 이상을 타겟팅하는 앱이 백그라운드에서 맞춤 뷰가 포함된 토스트 메시지를 보내면 시스템은 이 토스트 메시지를 차단합니다. 텍스트 토스트 메시지는 여전히 허용됩니다. 이들은 setView()를 호출하지 않는 Toast.makeText()를 사용하여 생성된 토스트 메시지입니다.
앱이 백그라운드에서 맞춤 뷰가 포함된 토스트 메시지를 게시하려고 시도하면 시스템은 사용자에게 메시지를 표시하지 않습니다. 대신 시스템에서 logcat에 다음 메시지를 로깅합니다.
W/NotificationService: Blocking custom toast from package \ <package> due to package not in the foreground토스트 메시지 콜백
토스트 메시지(텍스트 또는 맞춤)가 표시되거나 사라질 때 알림을 받으려면 Android 11에 추가된 addCallback() 메서드를 사용합니다.
텍스트 토스트 메시지 API 변경사항
Android 11 이상을 타겟팅하는 앱에 다음과 같은 텍스트 토스트 메시지 부작용이 발생합니다.
- getView() 메서드가 null을 반환합니다.
- 다음 메서드의 반환 값은 실제 값을 반영하지 않으므로 앱에서 반환 값을 사용해서는 안 됩니다.
- 다음 메서드는 노옵스(no-ops)이므로 앱에서 사용하지 않아야 합니다.
미디어 인텐트 작업에 시스템 기본 카메라가 필요함
Android 11부터 사전 설치된 시스템 카메라 앱만 다음 인텐트 작업에 응답할 수 있습니다.
- android.media.action.VIDEO_CAPTURE
- android.media.action.IMAGE_CAPTURE
- android.media.action.IMAGE_CAPTURE_SECURE
사전 설치된 시스템 카메라 앱을 두 개 이상 사용할 수 있는 경우 시스템에서는 사용자가 앱을 선택할 수 있는 대화상자를 표시합니다. 앱에서 특정 타사 카메라 앱을 사용하여 이미지나 동영상을 대신 캡처하도록 하려면 인텐트의 패키지 이름 또는 구성요소를 설정하여 이러한 인텐트를 명시적으로 만들면 됩니다.
이제 APK 서명 체계 v2가 필요함
현재 APK 서명 체계 v1만 사용하여 서명한 Android 11(API 수준 30)을 타겟팅하는 앱도 APK 서명 체계 v2 이상을 사용하여 서명해야 합니다. 사용자는 Android 11을 실행하는 기기에서 APK 서명 체계 v1만 사용하여 서명한 앱을 설치하거나 업데이트할 수 없습니다.
앱이 APK 서명 체계 v2 이상으로 서명되고 있는지 확인하려면 Android 스튜디오를 사용하거나 명령줄에서 apksigner 도구를 사용하면 됩니다.
출처 :
kangraemin.github.io/android/2020/07/17/android-11/
developer.android.com/about/versions/11/behavior-changes-11?hl=ko
developer.android.com/about/versions/11/behavior-changes-all?hl=ko
'안드로이드 > SDK version' 카테고리의 다른 글
[Android] Android12에서 File에 대한 직렬화(Serialization) 문제 (0) | 2022.08.03 |
---|---|
Android 11 분석 (2) | 2021.05.31 |
안드로이드 10 (Q) 대응 (0) | 2021.03.25 |
안드로이드 Pie 9.0 대응 (0) | 2021.03.25 |
Android 8.0 Oreo 대응 (0) | 2021.03.24 |