Android 11 내용 정리
- 동작 변경사항
디렉터리 액세스 제한
앱이 Android 11을 타겟팅하고 저장소 액세스 프레임워크(SAF)을 사용하는 경우 더 이상 ACTION_OPEN_DOCUMENT 및 ACTION_OPEN_DOCUMENT_TREE 인텐트 작업을 사용하여 특정 디렉터리에 액세스할 수 없습니다. 이러한 변경사항을 자세히 알아보려면 Android 11의 저장소와 관련된 개인정보 보호 업데이트를 설명하는 페이지에서 디렉터리 액세스 제한 섹션을 참조하세요.
Netlink MAC 제한사항
API 수준 'R' 이상을 타겟팅하는 앱의 경우 권한이 없는 앱은 기기의 MAC 주소에 액세스할 수 없습니다. IPv4 주소가 있는 네트워크 인터페이스만 표시됩니다. RTM_GETLINK netlink 메시지를 전송할 뿐 아니라 getifaddrs() 및 NetworkInterface.getHardwareAddress() 메서드에도 영향을 줍니다. MAC 주소를 사용하지 않음에 나온 안내를 적용한 것입니다.
- 개인정보 보호 기능
- Android 11 타겟팅
앱이 Android 11을 타겟팅하는 경우 WRITE_EXTERNAL_STORAGE 권한 및 WRITE_MEDIA_STORAGE 독점 권한은 더 이상 추가 액세스를 제공하지 않습니다.
일부 앱에는 파일 관리나 백업 및 복원 작업과 같이 광범위한 파일 액세스가 필요한 핵심 사용 사례가 있습니다. 이러한 앱은 다음과 같이 모든 파일에 액세스 권한을 얻을 수 있습니다.
- MANAGE_EXTERNAL_STORAGE 권한을 선언합니다.
- 앱에 관해 모든 파일 관리 허용 옵션을 사용 설정할 수 있는 시스템 설정 페이지로 사용자를 안내합니다.
이 권한은 다음을 허용합니다.
- 공유 저장소 내의 모든 파일에 관한 읽기 액세스 및 쓰기 액세스
- MediaStore.Files 테이블의 콘텐츠에 관한 액세스
--> 저장소에 읽기/쓰기를 해야하는 경우 따로 권한이 추가하여 필요하다는 뜻으로 파악됨.
https://developer.android.com/training/data-storage#scoped-storage
---> 매니페스트에서 application 안드로이드 속성 중 preserveLegacyExternalStorage = true 로 하면
기존 외부 저장소에 대한 권한이 승계된다. 신규 앱 업데이트 시에는 앱 내 저장소로 변경되지만, 기존 앱 업데이트시에만 적용. 그리고 이에 대한 접근 권한 체크는 SDK 29 이상 API Environment.isExternalStorageLecacy() 함수를 통해 확인할 수 있다.
- 일회성 권한
Android 11에서는 앱이 위치, 마이크 또는 카메라와 관련된 권한을 요청할 때마다 사용자에게 표시되는 권한 대화상자에 그림 1과 같이 이번만 허용이라는 옵션이 포함됩니다.
앱에 WebView 인스턴스가 있는 경우 사용자는 WebView 객체 자체 내의 위치에 관한 지속적인 액세스를 허용하지만 앱의 위치 정보 액세스 권한은 이번만 허용으로 제한할 수 있습니다.
백그라운드 위치 요청 제한
ACCESS_BACKGROUND_LOCATION 권한뿐 아니라 ACCESS_COARSE_LOCATION 또는 ACCESS_FINE_LOCATION 권한도 앱의 manifest에 포함합니다.
--> 위치 사용 권한에 따라 대화창이 아닌 앱의 설정 페이지로 변경되며, 앱의 기능에 백그라운드 위치 정보 액세스 권한이 필요한 이유를 설명하는 텍스트가 안내 되어야함. 두 번 거절되면 무시가 되고, 권한이 없어도 위치를 이동하는 방식으로 앱을 사용할 수 있게 개선해야 함으로 보임.
전화번호
<manifest>
<!-- Grants the READ_PHONE_STATE permission only on devices that run
Android 10 (API level 29) and lower. -->
<uses-permission android:name="READ_PHONE_STATE"
android:maxSdkVersion="29" />
<uses-permission android:name="READ_PHONE_NUMBERS" />
</manifest>
--> 앱이 Android 11이상을 타겟팅할 때 전화번호 API를 액세스한다면 READ_PHONE_STATE 권한 대신 READ_PHONE_NUMBERS 권한을 요청해야 한다.
- Android 11의 패키지 공개 상태
Android 11에서는 앱이 사용자가 기기에 설치한 다른 앱을 쿼리하고 상호작용하는 방법을 변경합니다. <queries> 요소를 사용하여 앱은 액세스할 수 있는 다른 패키지 집합을 정의할 수 있습니다. 이 요소를 통해 앱에 표시될 다른 패키지를 시스템에 알려 최소 권한의 원칙을 촉진할 수 있습니다. 또한 Google Play와 같은 앱 스토어에서 앱이 사용자에게 제공하는 개인정보 보호 및 보안을 평가할 수 있습니다.
https://developer.android.com/about/versions/11/privacy/package-visibility?hl=ko
- 새 기능 API
데이터 blob을 사용하여 대규모 데이터세트 안전하게 공유
네트워크의 데이터와 디스크에 있는 데이터 모두에서 데이터 중복을 줄이기 위해 Android 11(API 수준 'R')은 머신러닝 및 미디어 재생과 같은 사용 사례를 지원하는 공유 데이터세트를 캐시합니다. 앱이 대규모 공유 데이터세트에 액세스해야 할 때 새로운 사본을 다운로드할지 여부를 결정하기 전에 먼저 이 캐시된 데이터세트(공유 데이터 blob이라고 함)를 찾아볼 수 있습니다.
참고: SDK 및 라이브러리 개발자의 경우 최종 테스트용으로 플랫폼 안정성을 타겟팅하는 것은 아주 중요합니다. 다운스트림 앱 및 게임 개발자는 번들 SDK 및 라이브러리가 Android 11을 지원하도록 업데이트될 때까지 차단될 수 있습니다.
- 참고 사이트
: developer.android.com/about/versions/11/privacy/storage?hl=ko
: https://developer.android.com/preview/overview
: medium.com/androiddevelopers/android-11-storage-faq-78cefea52b7c
https://developer.android.com/about/versions/11/privacy/permissions?hl=ko
'Android' 카테고리의 다른 글
Android JAR vs. AAR (2) | 2021.06.24 |
---|---|
Android 파일 공유 (0) | 2021.06.24 |
Dynamic Links (0) | 2021.04.13 |
DownloadManager (0) | 2021.03.16 |
Android Shortcut / iOS 3D touch (0) | 2021.01.04 |
댓글