일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드 레트로핏 crud
- 자바 다형성
- 안드로이드 라이선스 종류
- 플러터 설치 2022
- 안드로이드 유닛테스트란
- android retrofit login
- 안드로이드 라이선스
- 안드로이드 유닛 테스트 예시
- 안드로이드 유닛 테스트
- rxjava cold observable
- rxjava hot observable
- 멤버변수
- 큐 자바 코드
- 클래스
- 스택 자바 코드
- android ar 개발
- 2022 플러터 안드로이드 스튜디오
- jvm이란
- ar vr 차이
- 서비스 쓰레드 차이
- rxjava disposable
- ANR이란
- 객체
- jvm 작동 원리
- 안드로이드 레트로핏 사용법
- 안드로이드 os 구조
- 2022 플러터 설치
- 스택 큐 차이
- Rxjava Observable
- 서비스 vs 쓰레드
- Today
- Total
나만을 위한 블로그
[Android] 안드로이드 OS 변천사 정리(롤리팝~안드로이드 13) - 2 - 본문
이전 포스팅에서 이어지는 글이다.
https://onlyfor-me-blog.tistory.com/780
안드로이드 10 - 2019년 공개, API 29(10.0)
안드로이드 10부터는 더 이상 간식 이름을 버전명으로 하지 않고 숫자로 관리한다. 이 버전부터의 특이점은 아래와 같다.
- 개인정보 보호 관련 변경사항
- 얼굴 인증 기능 지원
- 고효율 이미지 파일(HEIF) 형식을 위한 네이티브 카메라 지원
- 안드로이드 5.1(API 22) 이하를 대상으로 하는 앱을 첫 실행할 때 유저에게 경고 표시
- 폴더블 기기 지원
- 5G 네트워크 지원
- android.preferences 지원 중단 및 androidx.preference 라이브러리 사용 권장
- 알림에 스마트 답장 기능 추가
- 다크 테마 지원 시작
안드로이드 10의 핵심 변경사항은 개인정보 보호라고 디벨로퍼 공식문서에 명시할 정도로, 이 버전에서의 가장 중요한 변경점은 앱 저장소와 저장소 접근과 관련해서 여러 변경이 적용됐다.
우선 안드로이드 10 이상을 대상으로 하는 앱에는 범위 지정 저장소가 제공된다. 범위 지정 저장소를 사용하는 앱은 앱 별 외부 저장소의 디렉터리와 앱에서 만든 특정 유형의 미디어에만 접근할 수 있게 된다.
그렇다고 권한을 요청할 필요가 없어진 건 절대 아니다. 권한을 요청하지 않는다면 getExternalFileDir()을 사용하는 앱 별 디렉터리 파일, 앱이 MediaStore를 통해 만든 사진, 동영상, 오디오 파일들에만 접근할 수 있다. 자세한 내용은 아래 링크들을 확인한다.
https://developer.android.com/training/data-storage?hl=ko#scoped-storage
https://developer.android.com/training/data-storage/shared/media?hl=ko
그리고 앱이 포그라운드에 있을 때 위치 등의 권한을 허용할 경우 유저에게 아래와 같은 팝업을 띄우게 변경됐다.
한글로는 앱 사용 중에만 허용, 이번만 허용, 허용 안함으로 번역되어 표시된다. 이 변경을 통해 앱을 실제로 사용하는 동안에만 위치나 갤러리 등에 접근할 수 있게 변경됐다. 유저 입장에선 권한에 대한 투명성과 제어 기능이 크게 향상됐다. 이와 관련한 2개의 참고 링크를 첨부한다.
https://developer.android.com/training/location/request-updates?hl=ko
https://android-developers.googleblog.com/2019/03/giving-users-more-control-over-their.html
그리고 안드로이드 10부터 백그라운드에서 앱이 실행될 때 액티비티를 시작할 수 있는 시점에 대해 제약이 걸린다. 이 변경은 유저의 작업이 중단되는 상황이 발생하는 걸 최소화하고 화면에 표시되는 내용을 유저가 더 자세하게 제어할 수 있도록 하기 위해 적용됐다. 자세한 내용은 아래 링크를 참고한다.
https://developer.android.com/guide/components/activities/background-starts?hl=ko
또한 안드로이드 10부터 폴더블 기기에 대한 지원이 추가됐다. 기기를 접거나 펼 때 앱 상태가 유지되도록 화면 연속성을 제공하기 위해 onResume, onPause에 여러 개선된 기능이 추가됐다.
자세한 내용은 아래 링크를 참고한다.
https://developer.android.com/guide/topics/ui/foldables?hl=ko
그리고 알림을 받을 경우 스마트 답장을 보낼 수 있게 됐다.
안드로이드 13을 설치한 내 폰에서도 사용할 수 있는 기능인데, 카톡이나 SMS 등 문자를 받으면 네, 아니오 같은 간단한 답변들이 위와 같이 버튼 형태로 알림 하단에 표시된다.
저 버튼을 누르면 상대방에게 그 메시지가 그대로 전달되는데, 한 손으로만 핸드폰을 다뤄야 할 때 쓸 수 있지만 아직 제한된 답변만 보낼 수 있어 엄청 유용하지는 않다.
그 외에 다크 테마 지원이 시작되고 얼굴 인증 기능 추가, APK 설치 시 전체 화면이 아닌 팝업으로 설치 화면이 표시되도록 변경되는 등 여러 업데이트가 이뤄졌다.
안드로이드 11 - 2020년 공개, API 30(11.0)
이 버전부터의 특이점은 아래와 같다.
- 개인정보 보호 관련 변경사항 추가
- 5G에 대한 에뮬레이터 지원
- 무선 디버깅 지원
- 지도 v1 공유 라이브러리 삭제 및 Maps SDK for Android 사용 강제
- URI 접근 프로세스 변경
- 워터폴 디스플레이 지원 향상
- 힌지 각도 모니터링 센서 추가
- 영상 녹화, 소리 녹음 시 내장 스크린 녹음 UI 추가
- 음악 앱의 컨트롤러가 빠른 설정 타일 밑에 표시되기 시작
안드로이드 11부터는 위치, 마이크, 카메라 권한을 요청하는 앱에선 해당 권한을 1회성 권한으로 취급해 임시 접근 권한을 요청할 수 있으며, 기기에선 이번만 허용이라는 팝업 버튼으로 표시된다. 이후 다시 해당 권한을 사용하려고 하면 다시 권한 팝업이 표시된다.
그리고 매니페스트에 <queries> 태그를 사용해서 핸드폰에 설치한 다른 앱을 쿼리하고 상호작용하는 방법을 변경할 수 있게 됐다. 예를 들어 PG사를 통한 결제 기능을 사용해야 할 경우, 대개 V3 앱이 실행되고 난 뒤에 결제 프로세스가 진행된다. 이를 위해 아래처럼 매니페스트 파일을 작성할 수 있다.
<manifest package="com.example.game">
<queries>
<package android:name="com.example.store" />
<package android:name="com.example.services" />
</queries>
...
</manifest>
이와 관련한 자세한 내용은 아래 디벨로퍼 링크를 참고한다.
https://developer.android.com/training/basics/intents/package-visibility?hl=ko
그 외의 개인정보 보호와 관련된 주요 변경사항은 아래 디벨로퍼 링크를 참고한다. 각 변경사항 별 하이퍼링크가 걸려 있으니 변경사항 별로 확인해볼 수 있다.
https://developer.android.com/about/versions/11/privacy?hl=ko
그리고 안드로이드 스튜디오에서 와이파이 페어링을 통한 무선 디버깅 기능의 지원이 시작됐다.
맥북으로 안드로이드 앱을 개발할 경우 허브에 USB를 꽂고 핸드폰에 연결해서 디버깅을 해야 했는데, 이따금 연결이 풀리고 재연결되기를 반복하거나, 연결이 아예 되지 않는 경우가 종종 있었다.
그러나 와이파이 페어링을 통한 무선 디버깅 기능이 지원되기 시작하면서, 안드로이드 개발자들은 이제 USB를 갖고 다니지 않아도 무선으로 사용 중인 노트북의 안드로이드 스튜디오 IDE에 연결해서 디버깅을 할 수 있게 됐다. 개발 편의성 향상이란 맥락으로 보면 될 것 같다.
추가로 버블이라는 기능이 추가되었다. 페이스북 메신저와 같은 형태로 작동하는데, 시연 영상과 자세한 내용은 아래를 참고한다.
https://developer.android.com/guide/topics/ui/bubbles?hl=ko
그 외에 여러 업데이트가 추가됐다.
안드로이드 12 - 2021년 공개, API 31(12.0)
이 버전부터의 특이점은 아래와 같다.
- Rust 사용 지원
- UI 커스터마이즈 강화(머티리얼 You)
- 스플래시 화면 API 추가
- 메시지 앱 피싱 감지
- 앱이 마이크, 카메라 접근 시 상태 표시줄에 아이콘 표시
- launchActivity에서 뒤로가기 클릭 시 액티비티, 관련 작업 백그라운드로 이동하게 변경
안드로이드 12부터 네이티브 OS 컴포넌트 개발시 Rust를 사용할 수 있게 됐다. 자세한 내용은 아래 링크를 참고한다.
https://source.android.com/docs/setup/build/rust/building-rust-modules/overview?hl=ko
새로운 머티리얼 디자인도 추가됐다. 머티리얼 You라는 이름으로 나왔으며 호불호가 갈리는 디자인이다.
스플래시 API도 추가됐는데, 앱을 실행하면 앱 아이콘이 흰 화면에 잠시 표시되다가 그 다음 액티비티가 표시된다.
그리고 마이크, 카메라 기능에 접근할 경우 기기 오른쪽 상단에 녹색빛이 빛난다. 그리고 빛 왼쪽에 간단한 아이콘도 표시되서 어떤 기능을 쓰고 있는지 알 수 있게 됐다.
그 외에 자신의 위치에 따라 시간대, 지도 데이터를 써서 현재 시간대를 확인해주는 자동 시간대 감지 기능 등의 업데이트가 추가됐다.
안드로이드 13 - 2022년 공개, API 33(13.0)
현재 일반 사용자가 쓸 수 있는 가장 최신 버전인 13이다. 이 버전부터의 특이점은 아래와 같다.
- 사진, 영상, 오디오 파일 권한 세분화
- 새 알림 권한 POST_NOTIFICATIONS 도입
- 구글 플레이 서비스 광고 ID 권한 선언
- 인텐트 필터가 일치하지 않는 인텐트를 차단하기 시작
- OpenJDK 11 업데이트
권한 변경사항이 또 생겼다. READ_MEDIA_IMAGES / VIDEO / AUDIO의 총 3가지 권한이 생겼다.
유저가 이전에 READ_EXTERNAL_STORAGE 권한을 앱에 부여하면 시스템은 세분화된 미디어 권한을 앱에 자동으로 부여하며, 이전에 권한을 부여하지 않았다면 시스템은 위 3가지 권한 요청 팝업을 표시한다.
또한 READ_MEDIA_IMAGES, READ_MEDIA_VIDEO 권한을 동시에 요청하면 팝업은 하나만 표시된다.
그리고 알림 권한이 변경되었다. 앱에서 예외 없는 알림을 보내기 위한 POST_NOTIFICATIONS가 그것이다.
알림 기능이 있는 앱을 처음 실행하면 허용, 허용안함 2개 버튼이 있는 팝업이 하단에 표시된다. 이것을 실행하지 않으면 앱은 스플래시 화면이나 로그인 표시 등 그 이후의 프로세스를 실행하지 않는다. 그리고 이 팝업은 스와이프해서 없앨 수도 있다. 또한 안드로이드 13 기기에 앱을 설치하면 앱의 알림이 기본적으로 사용 중지되게 설정된다.
그리고 인텐트 필터 변경사항, 구글 플레이 서비스의 광고 ID 권한 선언 변경, OpenJDK 11 LTS 출시에 따라 안드로이드 핵심 라이브러리 업데이트 등의 변경이 이뤄졌다.
이렇게 안드로이드 롤리팝부터 안드로이드 13까지의 변경점을 알아봤다. 곧 안드로이드 14도 출시될 예정인데, 14가 나오면 간단한 프리뷰 포스팅을 작성하겠다.
참고로 1편과 2편의 모든 내용은 안드로이드 디벨로퍼의 release note, 기능 변경사항 등 공식문서들을 참고해서 작성했다. 때문에 자세한 내용을 확인하려면 공식문서를 검색해 보면 된다.