일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 안드로이드 구글맵
- 안드로이드
- mfc
- android push
- dart
- Android
- RxJava
- Django REST Android
- Python
- Django REST framework
- UWP
- Android P
- kodility
- Rxjava2
- Kotlin
- Java
- Django REST
- C
- flutter firestore
- 프로그래머스
- RxAndroid
- Flutter TextField
- C++
- NDK
- FLUTTER
- 알고리즘
- 코틀린
- C/C++
- android architecture component
- livedata
- Today
- Total
개발하는 두더지
[Android] Android P 변경사항 본문
targetSdkVersion이 "P"로 설정된 경우 앱에 영향을 미치는 주요 변경사항
포그라운드 서비스 권한
포그라운드 서비스를 사용하려면 FOREGROUND_SERVICE 권한을 요청해야함
권한없이 서비스를 시작하면 SecurityException이 발생
Bouncy Castle 암호화 지원 중단
Bouncy Castle가 제공하는 여러 암호화가 중단되고 Conscrypt가 제공하는 암호화로 대체됨
Build.serial에 대한 직접 액세스 제거
READ_PHONE_STATE 권한 요청 이후, Android P [ API 28]에 추가된 Build.getSerial() 을 사용
WebView 데이터 디렉토리 공유 불가
앱이 여러 프로세스에서 단일 WebView 데이터 디렉토리를 공유할 수 없음
앱의 데이터 디렉토리에 대한 액세스가 SELinux에 의해 차단됨
시스템은 각 앱의 비공개 데이터 디렉토리에 대한 앱별 SELinux 샌드박스를 적용
이제 경로로 다른 앱의 디렉토리에 직접 액세스하는 것이 허용되지 않음
앱이 FD 전달을 포함한 IPC 메커니즘을 사용하여 데이터를 공유할 수 있음
Android P 기능 및 API
Wi-Fi RTT( Round-Trip-Time)를 이용한 실내 위치추적
Android P에서 IEEE 802.11mc Wi-Fi 프로토콜을 지원하므로 실내 위치추적을 활용할 수 있음
주변에 있는 RTT 지원 Wi-Fi 액세스 포인트(AP)까지의 거리를 측정할 수 있음
위치 + Wi-Fi 켜져있어야함
RTT를 위해 AP에 연결할 필요는 없음. 스스로 주변을 탐색해서 찾음
기기에서 3개 이상의 AP에 대한 거리를 측정하는 경우 다변측정(MLAT) 알고리즘을 사용하여 가장 적합한 기기 위치를 측정함
그 결과는 1~2 미터 이내로 정확함
이 정확함을 사용하여 건물내 탐색, 음성제어와 같은 미세 위치 기반 서비스를 활용할 수 있음 ( ex "앞에있는 조명을 켜세요" )
디스플레이 컷아웃 지원
카메라와 스피커를 위한 디스플레이 컷아웃이 있는 최신 화면을 지원함
DisplayCutout 클래스 사용
알림
Android N [ 7.0 API 24] 부터 메시지에 회신하거나 알림에서 직접 다른 텍스트를 입력하는 액션을 추가할 수 있었음
Android P [ API 28 ]부터 아래와 같이 향상됨
이미지 지원 : setData()
단순화된 대화 참가자 지원 : Notification.Person 클래스로 대화 참가자(아바타 및 URI 포함)를 식별하는데 사용
회신을 초안으로 저장 : 사용자가 실수로 알림을 닫은 경우 앱은 사용자가 회신을 완료할 수 있도록 텍스트 필드에 텍스트를 미리 채움
대화가 그룹 대화인지 식별 : setGroupConversation()
인텐트의 문맥적 액션 설정 : setSemanticAction() 로 액션을 지정할 수 있음 ( 예: 읽기, 삭제, 회신 등으로 표시 )
SmartReply : RemoteInput.setChoices() 를 이용하여 표준회신을 제공
채널 설정, 프로드캐스트 및 알림 일시중지
Android O [ 8.0 API 26 ]에서 각 유형의 알림에 대해 사용자 맞춤 채널을 생성하는 알림 채널이 도입됨
Android P [ API 28 ]는 이러한 변경을 통해 알림 채널 설정을 단순화 함
채널 그룹 차단 : 사용자가 전체 채널 그룹을 차단할 수 있음
새로운 브로드캐스트 인텐트 유형 : 안드로이드 시스템에서 알림 채널과 채널 그룹의 차단 상태가 변경될 때 브로드캐스트 인텐트를 보냄
새로운 알림 일시중지 우선순위 범주 : NotificationManager.Policy 에 새로운 정책 2개 추가
멀티 카메라 지원 및 카메라 업데이트
듀얼 전방 카메라 또는 듀얼 후방 카메라가 달린 기기에서 두 대 이상의 물리적 카메라에서 동시에 스트림에 액세스가 가능함
새로운 기능을 구현할 수 있음 ( 예: 매끄러운 확대/축소 등 )
비트맵과 드로어블용 ImageDecoder
Android P [ API 28 ]에서 이미지 디코딩을 위한 최신 방법을 제공하기 위해 ImageDecoder를 도입
이미지를 디코딩하려면 기존 BitmapFactory 및 BitmapFactory.options API 대신 ImageDecoder를 사용해야 함
ImageDecoder를 사용하면 바이트 버퍼, 파일 또는 URI로부터 Drawable 또는 Bitmap을 생성할 수 있음
그리고 둥근 모서리나 원형 마스크 등의 복잡한 맞춤형 효과를 이미지에 추가할 수 있음
애니메이션
Android P [ API 28 ]에서 GIF 및 WebP 애니메이션 이미지를 그리고 표시하기 위해 AnimatedImageDrawable 클래스가 도입
RenderThread는 디코딩을 위해 워커 스레드를 사용하므로 앱 UI 스레드와 충돌하지 않고도 앱에서 애니메이션 이미지를 가질 수 있음
미디어 API
Android P [ API 28 ]에서 MediaPlayer2 도입! DataSourceDesc를 사용하여 빌드된 재생목록을 지원함
MediaPlayer2.create()로 인스턴스 생성
AudioTrack, AudioRecord, MediaDrm 클래스로부터 미디어 지표를 사용할 수도 있음
JobScheduler의 데이터 비용 민감도
Android P [ API 28 ]에서는 JobScheduler가 이동통신사가 별도로 제공하는 네트워크 상태 신호화 함께
사용자의 네트워크 관련 작업을 처리하도록 개선 ( 예 : 크기가 큰 네트워크 요청을 연기 가능 )
자동 완성 프레임워크
Android O [ 8.0 API 26 ] 에서 Autofill Framework 도입
Android P [ API 28 ] 에서 Autofill Framework에서 사용자 경험을 향상시키도록 자동 완성 서비스를 구현할 수 있는 여러가지 개선된 기능이 도입
회전
Android P [ API 28 ] 에서 원치않는 회전을 없애기 위해 방향이 변경되더라도 현재 방향이 고정되는 새로운 모드가 추가
필요할 때 사용자가 시스템 바의 새 버튼을 눌러 수동으로 회전을 트리거함
대부분 기존 앱의 호환성 영향이 없겠지만 항상 세로모드, 맞춤형 회전동작이 있는 경우에는 문제가 발생할 수도 있음
보안 업데이트
통합 지문 인증 대화상자
Android P [ API 28 ] 에서는 시스템이 앱을 대신해 지문 인증 대화상자를 제공함
대화상자에 대해 표준화된 모양, 느낌, 배치를 제공하여 사용자가 신뢰할 수 있는 지문 자격 증명 검사기를 사용하고 있음을 확신하게 함
FingerprintManager -> FingerprintDialog 사용
대신 hasSystemFeature() 을 통해 FEATURE_FINGERPRINT를 지원하는지 확인해야 함
지문 인증을 지원하지 않는 기기의 경우 createConfirmDeviceCredentialIntent() 메서드를 사용해 PIN, 패턴, 비밀번호로 대체 가능
높은 보증 수준의 사용자 확인
Android P [ API 28 ] 를 설치한 상태로 출시되는 기기를 통해 Protected Confirmation API를 사용 가능
이 새로운 API를 사용하면 앱이 ConfirmationDialog의 인스턴스를 사용하여 사용자에게 짧은 문장으로 승인할 것을 요구하는 프롬프트를 표시함
이 문장을 통해 사용자가 결제와 같은 중요한 트랜젝션을 완료하겠다는 의사를 재차 확인할 수도 있음
사용자가 수락하면 앱이 키 해시 메시지 인증 코드 (HMAC)로 보호되는 암호화 서명을 받음
( 결제 모듈 연결시 한번 찾아보자.. )
하드웨어 보안 모듈
Android P [ API 28 ] 을 설치한 상태로 출시되는 지원 기기에는 하드웨어 보안 모듈에 있는 Keymaster HAL의 구현인 StrongBox Keymaster가 있음
이 모듈에는 자체 CPU, 보안 저장소, 순수 난수 생성기, 패키지 무단 변조와 권한 없는 앱 사이드 로딩을 방지하는 추가적인 매커니즘이 있음
시스템은 StrongBox Keymaster에 저장된 키를 검사할 때 TEE( Trusted Execution Environment)로 키의 무결성을 확증함
Android P 동작 변경 사항
백그라운드 앱에서 입력 및 데이터 개인정보 보호
Android P [ API 28 ] 가 실행되는 기기에서 앱이 백그라운드로 실행 중인 경우, 아래의 내용이 제한됩니다
- 앱이 마이크나 카메라에 액세스 할 수 없음
- 가속도계 및 자이로스코프 같은 센서는 이벤트 수신하지 않음
앱이 센서 이벤트를 감지해야 하는 경우, 포그라운드 서비스를 이용해야 함
앱호환성 변경사항
앱 안정성과 호환성을 보장하기 위해 플랫폼에서는 일부 비 SDK 메서드와 필드의 사용을 제한함
리플렉션을 통해 메서드와 필드에 직접 액세스를 시도하든 JNI를 사용하든 모두 적용됨
ICU 라이브러리에 대한 업데이트
Android O [ 8.0 API 26 ] , Android O [ 8.1 API 27 ]에서 사용되던 ICU 58이
Android P [ API 28 ] 에서 ICU 60으로 업데이트 됨
ICU ( android.icu package ) 아래 공개 API를 제공하는데 사용되며 국제화 지원을 위해 Android 플랫폼에서 내부적으로 사용됨
네트워크 주소 조회 시 네트워크 위반이 발생할 수 있음
이름 확인을 요구하는 네트워크 주소 조회에는 네트워크 I/O가 포함될 수 있으며 차단 작업으로 간주됨
메인 스레드의 차단 작업은 일시 중지나 버벅거림 현상을 유발함
StrictMode 클래스를 활성한 채로 앱을 출시하면 네트워크 위반 감지될 수 있음
출처
'Java,Android' 카테고리의 다른 글
kotlin + firebase 를 이용한 Push Notification 구현(3) (1) | 2018.07.19 |
---|---|
kotlin + firebase 를 이용한 Push Notification 구현(2) (1) | 2018.07.19 |
kotlin + firebase 를 이용한 Push Notification 구현(1) (3) | 2018.07.09 |
[Android] 안드로이드 뷰가 그려지는 과정 (0) | 2018.06.15 |
[Rxjava2] Rxjava2 를 이용한 로또 번호 당첨 결과 확인하기 (0) | 2018.06.14 |