그러냐

Android KitKat에서의 변화 본문

android

Android KitKat에서의 변화

관절분리 2016. 1. 28. 11:00
반응형

Android KitKat에서의 변화

초콜릿처럼 달달해진 안드로이드 4.4


Making Android for everyone

최소 메모리 512M의 저사양의 Android 디바이스에서도 빠르고 부드럽고 반응성이 좋도록 디자인 되었습니다.

현재 OS의 점유율을 보면 진저브레드가 25% 이상 이라는걸 알 수 있습니다. 개발도상국의 경우 새로운 폰을 만들때 스펙이 좋지 않고 진저브레드를 사용하는 경우가 많기에 이러한 저사양의 폰에도 최신 OS를 적용할 수 있도록 노력하는 것 같습니다. 이에 저사양의 단말에도 적용이 가능한 만큼 각 제조사에서 얼마나 많은 구형 단말까지 지원할지 그리고 갤럭시 넥서스는 왜 지원을 안하는지가 궁금하네요.

구글 홈페이지에는 구글 디바이스는 전통적으로 18개월까지만 OS 업데이트를 지원하므로 갤럭시 넥서스는 제외되었다고 명시되어있습니다.

또한 주요 컴포넌트들을 간소화했으며 새로운 API들과 개발 툴을 제공함으로서 메모리 효율, 터치 스크린의 반응성 등의 최적화를 이뤄냈습니다.

OEM 제조사들은 targeted recommendations and options을 통해서 저전력의 디바이스를 만들 수 있게되었습니다. 즉, Dalvik JIT code cache 튜닝 , 커널 동일페이지병합(KSM), zRAM 교환 등의 컨트롤을 통해 메모리 최적화가 가능해진 것입니다.이런 설정들을 통해서 OEM회사들은 프로세스 레벨에서 메모리를 조율할 수 있고 그래픽 캐시 사이즈를 정의하며 메모리 반환등의 컨트롤을 할 수 있게 되었습니다.

이외에도 OS 자체적으로 메모리 관리를 통해 메모리 사용양을 줄이는 기능이 향상되었습니다. 코어 시스템 프로세스는 힙을 덜 사용하도록 되었으며 앱들이 많은 양의 메모리를 사용하는 것을 방지하여 시스템 메모리를 보호하게 되었습니다.

앱의 최대 메모리 할량당이 줄어들었는지 테스트를 해봐야겠네요.

여러 서비스를 한번에 사용하게 될때 — 네트워크 연결이 변경된다던지의 — 최대 메모리를 넘지 않도록 하기 위해 순차적으로 서비스를 동작하게 되었습니다.

동일 조건의 브로드 캐스트 리시버와 연결된 서비스들이 많을 시, 이전에는 동시에 서비스들이 동작했지만 이렇게 되면 순간적으로 디바이스의 메모리 허용량을 초과하는 경우가 있어 순차적으로 실행 될 수 있도록 변경한것 같네요.

새로운 API인 ActivityManager.isLowRamDevice()을 통해서 현재 디바이스의 메모리 상태를 확인, 이에 따라 앱에서 행해지는 액션들을 정의 할 수 있게 되었습니다. 또한 필요 케이스에 따라 앱의 large-memory기능을 필요에 따라 켰다 끌 수 있습니다.

위에서 설명한 “앱들이 많은 양의 메모리를 사용하는 것을 방지한다”라는 의미가 여기에서 말하는 large-memory기능을 개발자가 켜고 끌 수 있도록 하여 이뤄지게 한 것 같습니다.

이외에도 새로운 툴들은 개발한 앱들에 대한 메모리 사용 현항을 매우 자세하게 볼 수 있도록 지원해 줍니다.

procstats tool은 포그라운드 상태의 앱들과 백그라운드 상태의 서비스들의 실행 시간과 메모리 사용량을 볼 수 있으며 디바이스에서 이를 보기 위해선 개발자 옵션에서 해당 옵션을 선택하면 됩니다.

meminfo tool은 쉽게 메모리의 사용량과 문제점을 발견할 수 있도록 하며 이전에는 보이지 않았던 추가 메모리 오버헤드를 볼 수 있도록 도와줍니다.

메모리 관리툴에 대한 이야기는 이후에 좀 더 자세히 다루기로 하겠습니다.

ART virtual machine

이번 버전부터는 개발자 옵션을 통해 VM으로 Dalvik 뿐만아니라 ART를 사용할 수 있게 되었습니다. 아래 표를 보시면 아시겠지만 성능차이가 꽤 납니다.

Alan Jeon님 글에서 발췌

그러나 ART를 적용할 경우 기존 앱들에 대한 호환성은 보장이 안됩니다. 꽤 많은 앱들이 죽는현상이.. 이 부분은 직접 적용해 보시면 될 것 같습니다.

Design change

OS 테마색 변경

설정 화면등을 보면 피드백에 대한 컬러가 HOLO 테마 영향으로 짙은 파란색 이었습니다.(인디케이터나 터치 피드백 등 처럼) 문제는 회사들이 요즘 컬러 브랜딩을 중요시하는데 이러한 색이 너무 튀다보니 융화가 안되는 문제가 있었습니다. 이에 이번 버전에서는 무채색등으로 컬러감을 낮추게 되었습니다.

2가지 제스쳐 추가

더블 터치, 더블 터치 줌 아웃 : 구글맵에 적용되어 있던 제스쳐로 한손으로 줌인 줌아웃 할 때 편합니다. 실제로 써보니 매우 편리했습니다.

런처 아이콘 변경

아이콘이 크기가 48dp에서 60dp로 변경됨에 따라 기존보다 크기가 커졌습니다. 가장 큰 아이콘의 경우 xxxhdpi로 설정되어집니다. 이에 총 5가지의 해상도로 준비하시길 강력히 추천합니다.

이외 달라진 점

앱 서랍 아이콘 영역 변경 5 x 5 -> 4 x 5, 장평이 줄어듬. (한국어 제외)

New NFC capabilities through Host Card Emulation

기존 보안방식이 필요없이 HCE를 통해 결제나 보안 등에서 사용하던 NFC기능들을 사용할 수 있게 되었습니다.

또 앱에서 Reader Mode기능을 넣으면 HCE와 NFC 기반 통신들을 읽을 수 있는 상태가 됩니다. 스마트폰 2대가 있다면 하나는 NCF 하나는 리더기 역할을 할 수 있겠네요.

기존방식(왼쪽) VS HCE를 통한 방식(오른쪽)

또한 기존에 NFC를 통한 결제는 Usim을 통해 이용 하도록 되어있는데 HCE이 USIM이 하는 역할을 동일하게 할 수 있게되어 통신사Usim이 없는 태블릿 등에서도 이러한 결제 시스템이 가능하게 되었습니다.

구글웰렛을 연동한 탭엔페이

이 주제와는 상관없을지도 모르겠지만 이번 넥서스 5(4.4)에서는 탭엔페이라는 기능이 탑재되었습니다. 구글웰렛(국내에서는 구글이 결제대행 사업자가 아니라 사용할 수가 없습니다.) 및 다양한 결제수단을 등록해서 사용할 수 있습니다. 예를들어 탭엔페이에 신용카드와 연동된 구글지갑을 등록하면 NFC기능을 통해 스마트폰을 태그해 결제하는 기능입니다. 이 기능도 HCE를 통한 결제가 가능하므로 Usim, 기본보안 방식이 필요없이 동작합니다.

Printing framework

안드로이드 앱에서 와이파이나 구글 클라우드 프린트와 같은 클라우드 기반의 서비스를 통해 프린트가 가능해졌습니다.애플의 에어프린트와 비슷한데 다양한 기능들이 더 추가되어 있습니다.

앱에서 프린트 기능을 켜면 유저는 근처 프린터들을 검색 한 후 선택할 수 있으며, 어떤 문서던지(문서, 이미지 또는 파일) 인쇄 용지 크기 및 인쇄 영역을 설정하고 프린트 할 수 있습니다.

또한 프린팅 작업을 관리하는 API들을 지원하는데. 이것들은 보안하에 앱들의 인쇄요청과 이를 제어하는 프린트 서비스를 관리하며, 어떤 앱에서든 일관성있게 사용할 수 있도록 같은 공유 서비스와 UI를 제공합니다.

구글 플레이에 올려져 있는 HP 인쇄 서비스 플러그인

프린터 제조사들은 새로운 API들을 이용해서 플러그인 가능한 컨포넌트들 형태로 자신들의 프린트 서비스를 만들 수가 있습니다. 이를 통해 제조업체가 가지고 있는 고유 기술 및 통신방식들을 적용할 수 있으며 이렇게 만들어진 서비스는 구글 플레이를 통해 배포 할 수 있습니다.

클라이언트 앱들은 새로운 API들을 통해 최소한의 코드 변경으로 출력기능을 사용할 수 있습니다.

대부분은 액션바에 프린트 할 수 있도록 기능을 추가하고 프린트를 선택하게 하지 않을까 합니다.

또한 API를 통해 출력을 요청하고 어떤 작업이 진행되고 있는지 쿼리가 가능하며 출력취소를 할 수 있습니다.

폭넓은 호환성을 위해 PDF 포맷을 우선적으로 프린트하는데 사용합니다. 프린트하기 이전에 앱은 컨텐츠를 PDF로 변환하는데 이를 편리하게 하기 위해서 네이티브와 웹앱에서 PDF를 만들수 있는 API를 제공합니다. 이를통해 출력을 위한 PDF파일을 빠르게 만들 수 있도록 도와주는것이죠.

대부분의 4.4 기반의 디바이스들은 구글 클라우드 프린트가 사전 설치되어 있으며 크롬, 구글 드라이브, 갤러리, 퀵오피스와 같은 구글앱 등의 프린트기능 지원 앱도 사전 설치되어 있습니다. 또한 4.4엔 모바일 프린트 앱이 기본으로 들어가 있는데 여기에는 HP의 프린트 서비스와 구글 클라우드 프린트가 연동되어 있습니다.

코드구현도 간단합니다프린트 헬퍼클래스를 통해서 이미지를 비트맵으로 출력하거나 컨텐츠를 페이지가 나눠진 PDF로 변환하여 출력할 수 있습니다. 또한 컨텐츠를 쉽게 PDF로 변환할 수 있도록 네이티브 그리고 웹뷰기반의 UI가 제공되며 컨텐츠를 어떻게 그려야 되는지 알고 있다면 직접 캔버스에 컨텐츠를 그린 후 이를 PDF로 변환한 후 출력할 수도 있습니다.

현재는 HP의 프린트 서비스만 들어가져 있는만큼 HP의 프린터기만 동작한다고 합니다.

Storage access framework

Storage access framework이 제공하는 시스템 UI(피커UI)

내 문서, 사진, 기타 파일 등을 검색하고 여는 작업이 간단해 졌습니다. 클라우드든 내장 스토리지든 사용자가 해당 앱을 설치하면 어느 앱을 사용하든 해당 스토리지 서비스에 쉽게 접근하게 된 것이죠.

정리해보면 해당 프레임웍이 파일에 접근하는 시스템 UI(피커UI)를 기본으로 제공하며 파일을 열거나 세이브 등 파일 스토리지 접근에 관한 모든 일들을 지원합니다. 사실 이전버전을 생각해 보면 특정파일을 선택하는게 쉬운일은 아니였습니다. 해당 파일이 어디에 있는지 찾는것도 힘들었죠. 이에 이를 통합적으로 관리할 수 있도록 해당 프레임웍이 나온거고 이를 통해서 안드로이드 내부 뿐만아니라 클라우드에도 연결할 수 있도록 한것입니다. 즉, 안드로이드에서 접근할 수 있는 모든 파일은 전부 접근 가능하며 구글 드라이브 뿐만아니라 드롭박스와 같은 써드파티 클라우드 스토리지에 저장할 수 있도록 변경되었습니다.

동작원리를 살펴보면 앱이 피커UI를 인텐트를 통해 실행하면 이 피커가 프로 바이더를 통해서 파일 정보를 받아 화면에 보여주게 됩니다.(onActivityResult()를 통해서 결과값을 받습니다.) 이러한 프로바이더로 등록되려면 퍼미션을 등록해야합니다. 파일 접근이 향상되었지만 이제는 피커 UI를 통하지 않고는 파일에 접근할 수 없습니다. 그렇다고 앱에 맞게 피커 UI를 커스터마이징 할 수도 없습니다.

새로운 프로바이더를 추가하고 싶다면 document provider를 상속해서 커스텀으로 만들어야 합니다. 이후에는 4가지 메서드를 오버라이드 하여 이를 통해 탐색하고 읽고 저장할 수 있는 기능을 사용할 수 있게 됩니다. 또한 MANAGE_DOCUMENTS 퍼미션과 DOCUMENTS_PROVIDER 액션을 추가하여 최종적으로 피커 UI를 사용할 수 있게합니다.

만약 파일이나 문서를 관리하는 앱을 만든다면 CREATE_DOCUMENT 또는 OPEN_DOCUMENT 인텐트를 통해 스토리지 프레임웍과 연동 파일들을 열거나 생성할 수 있습니다. 또한 기존에 사용하던 GET_CONTENT 인텐트도 통합되었으며 파일 검색을 위한 새로운 시스템 UI를 제공하게 되었다. 대부분의 4.4기반 디바이스에서 구글드라이브와 내부 저장소는 document provider로 적용 되어있다.

“실제 SD카드를 접근할수 있는 Storage관련 API추가. 4년간 SD카드를 제대로 구분해서 접근할수 있는 방법을 제공하지 않고 있다는게 최대 불만중 하나였는데, 4.4에서도 제대로된 방법을 제공하는 느낌은 아님. 다만 대부분의 폰이 하나의 내장 스토리지와 하나의 SD카드만 있다는 가정하에 새로운 API를 이용해서 SD카드 구분할 수 있을듯 함. 만족스럽진 않지만 더 이상 mounts 정보는 파싱하지 않아도 되겠지. “
- 회색(박성서)

Low-power sensors

Sensor batching

안드로이드 4.4는 하드웨어 센서 일괄처리 방식(hardware sensor batching)을 지원하며 이를 통해 센서를 이용하는 작업들에 대한 배터리 소비를 줄일 수 있습니다. 즉, 센서에서 측정된 정보를 주고받는 작업을 실시간으로 진행하는게 아니라 특정 시점에 정보를 한꺼번에 전달함으로서 전력을 적게 소비하도록 하는것이죠.

이번에 구글에서 인수한 모바일 센서 스타트업 ‘비헤비오(Behavio)’의 기술을 녹인것 같습니다. 해당업체는 모바일 디바이스를 위한 센서닝과 데이터프로세싱의 구조를 지원하는 서비스를 개발하는 스타트업이었다고 하네요. 자세한 내용은 링크를 확인해주세요 — 좋은 정보 알려주신 손영수 교수님 감사합니다.

요약해보면 기존에는 센서에서 이벤트가 일어날 때마다 인텐트를 쐈는데 이 때문에 프로세스가 계속 깨어나 배터리 소모를 야기했습니다. 이제는 이벤트들을 인터벌을 정의해서 모아놨다가 특정시점에 쏴주게 된 것이죠. 기술을 적용한다면 만보기 앱의 경우 몇 걸음 걸었는지에 대한 현황을 단말에 실시간으로 업데이트 하는 것이 아니라 사용자가 걷다가 스크린을 켰을때 한꺼번에 이벤트를 받아 화면에 갱신하는 구조로 만들 수 있게 된것입니다.

이러한 기능은 아이폰 M7과 같은 별도의 센서 칩이 디바이스에 있어야 가능하며 현재는 넥서스 5에서만 작동합니다.
현재 구글플레이에 올라와있는 Moves와 Runtastic Pedometer앱은 하드웨어 보행 탐지기를 통해 저전력 서비스를 제공하고 있습니다

Step Detector and Step Counter

보행 탐지기(Step Detector)와 만보기(Step Counter)센서가 추가되었습니다. 이것을 통해 앱에서 유저가 얼마나 걸었는지, 또는 뛰는지 걷는지 등의 행동상태를 알아 낼 수 있습니다.

기존에 구글에서 제공했던 ActivityRecognition은 부정확한감이 있었는데 센서로 측정되는 이번 기능은 얼마나 정확한지 개인적으로 기대됩니다.

보행 탐지기의는 가속도를 분석하여 유저의 걸음걸이를 분석하며 각 걸음걸이 별로 이벤트를 걸 수가 있습니다. 만보기의 경우는 재부팅 이후 얼마나 걸었는지를 알 수 있으며 걸음 수 별로 이벤트를 걸 수 있습니다. 이러한 로직과 센서는 플랫폼 및 하드웨어로 내장되어 있기 때문에 별도의 프로그래밍 없이 검출 알고리즘을 사용할 수 있게 되었습니다.

SMS provider

4.4 부터는 하나의 문자앱을 디폴트로 사용할 수 있습니다. 이렇게 되면 문자가 왔을 경우 여러 SMS 앱 중에서 선택된 문자 앱만 SMS_DELIVER_ACTION, WAP_PUSH_DELIVER_ACTION 브로드캐스트를 전달 받게 됩니다. 이것이 의미하는 바는 요 두녀석을 전달받은 앱만이 문자를 직접 받을 수 있고 전화를 걸 수 있다는 것을 의미합니다. 이외의 앱들은 SMS_RECEIVED_ACTION인텐트를 전달받는데 이건 문자가 왔다는 정도만 확인할 수 있도록 되어 있습니다. (번호 인증과 같은 특정한 메시지 확인은 가능합니다.) 또 메시지 전송 및 문자의 백업 및 복구가 불가능합니다.

이번 버전에서의 디폴트 SMS는 행아웃입니다. 이는 애플의 아이메시지 + 부가기능의 역할을 합니다. 물론 위에서 설명한대로 기본 SMS앱은 변경해서 사용할 수 있습니다. 틱톡이나 카카오톡, 라인등이 기본 문자앱으로 쓰일 수 있다는거죠.

이런 기능은 사실 킷캣 발표 이전에 구글 개발자 블로그를 통해 알려졌는데 그 이유를 구글이 행아웃을 기본 문자앱으로 만들려고 하는 것 같다라고 추측을 했었습니다만 역시나네요.

이 기능을 적용한 이유는 요즘 악성앱이 너무 많이 이를 방지하기 위해서라고 합니다. 예를들어 안드로이드에서는 문자가 왔을시에 특정앱에서 문자를 먼저 받아서 이를 수정하거나 아예 보내지 않게 할 수 있습니다. 이를 방지하기 위해 기본 문자앱으로 지정되지 않은 앱의 경우는 문자는 가로채거나 수정할 수 없도록 변경한 것입니다.

그러나 타켓 버전이 19인 상태에서만 적용된다는 점에서 악성 문자앱이 타겟을 저걸로 할리도 없고 쩝. 역시 목적은 사용자들의 기본 문자앱을 행아웃으로 바꾸게 할 의도인것 같습니다.

개발자가 내 문자앱을 기존 문자앱으로 설정할 수 있도록 하기 위해선 아래와 같은 4가지 권한이 있어야 합니다.

SMS_DELIVER_ACTION , WAP_PUSH_DELIVER_ACTION ,ACTION_SENDTOSEND_RESPOND_VIA_MESSAGE

New ways to build beautiful apps

Full-screen Immersive mode

새로운 Immersive mode는 컨텐츠를 보여주거나 터치 이벤트를 스크린의 모든 영역에서 사용 할 수 있도록 해준다. 이를 통해 폰과 태블릿에 보여지는 상태바나 네비게이션바같은 시스템UI를 모두 숨기면서, UI를 제작할 수 있습니다. 이 모드에서 시스템UI는 숨겨진 상태로 유지되며, 화면 모든 영역을 터치 이벤트로 받을 수 있습니다. 이는 더 크고, 풍성하며, 더 실감나는 UI를 당신의 앱이나 게임에 적용할 수 있고, 또한 시각적인 방해를 줄일 수 있는 훌륭한 방법을 제시합니다. 즉, 사진뷰어나 지도, 전자책 게임에 딱맞는 기능입니다. 4.4는 사용자가 이 모드에 적응하기 쉽도록 새로운 제스쳐를 제공하는데 현재의 스크린의 꼭대기나 밑의 가장자리를 스와이프하면 시스템 UI를 드러나게 합니다. 다시 이전 모드로 돌아가려면 스크린 가장자리를 터치하거나, 바가 자동 숨김될 때까지 잠시동안 기다리면 된다. 이러한 기능은 간단히 플래그를 통해 사용할 수 있습니다. IMMERSIVE을 이용하여 시스템 UI를 가리거나 나타나게 할 수 있고 IMMERSIVE_STIKY를 이용해 일정시간이 지나거나 사용자가 화면을 터치하면 자동으로 시스템 UI가 사라지며 전체화면 모드로 변환하도록 합니다.

간단히 말하자면 기존의 풀 스크린 모드와는 다르다고 생각하시면 됩니다. 기존의 경우 UI는 사용자가 아무것도 안하면 사라지고 터치하면 나오는 형태였지만 이번 버전의 경우는 이북을 생각하시면 됩니다. 이북에서는 화면을 터치할때마다 풀 스크린 모드가 풀리면 의미가 없겠지요. 터치할 때도 풀 스크린을 유지하기 위해 이 기능이 나온것 입니다. UI를 보기 위해서는 화면 밖에서 안으로 쓸어내리면 됩니다. 또한 이런 풀스크린 모드에는 3가지가 존재합니다. 자세한 사항은 여기를 참조하세요.개인적으로는 넥서스7 화면이 작아 PDF 보기가 불편했는데 좀 나아지겠네요.

Transitions framework for animating scenes

앱에서 UI상태변화를 알려주기 위해 애니메이션을 사용하는 경우가 많습니다. 이를 위해 새 프레임웍을 사용해서 간단하게 구현할 수 있게 되었습니다. 장면(Scene)은 뷰와 같은 특정한 계층구조와 각 장면사이의 트랜지션 정보로 구성됩니다. 트랜지션 정보에는 장면으로 진입하거나 벗어날때 사용될 애니메이션 정보가 포함되어 있습니. 사전에 정의된 여러 트랜지션 정보중 하나를 선택할수도 있고 아리면 오토 트랜지션 타입을 선택해서 안드로이드 프레임웍이 알아서 적절한 애니메이션을 적용하도록 합니다.

정리해보면 개발자가 쉽게 애니메이션 모드를 적용할 수 있도록 변경되었습니다. 기존에는 애니매니션을 적용하려면 뷰가 어디서 부터 어디까지 움직일지를 정의한 후 애니메이터를 움직여야 했었습니다.그러나 이번 버전은 첫 장면과 이동하고자 하는 최종 장면을 정의해 놓으면 시스템이 알아서 전환합니다. 즉, 먼저 첫번째 화면과 두번째 화면을 정의하고 TransitionManger를 통해서 이를 수행 시킵니다. 이후부터는 중간과정은 시스템이 알아서 진행합니다. 물론 어떤 애니메이션을 통해서 전환할지에 대한 정의도 가능합니다. 네 맘대로 해 라는 값도 있구요.

beginDelayedTransition()을 통해서 하고 싶은데로 정의하면 자동으로 알아서 애니메이션을 움직입니다. 예를들어 뷰를 삭제 할 때 이것을 적용하고 addRemove하면 시스템이 알아서 애니메이션을 수행한후 삭제가 진행됩니다. 이러한 애니메이션은 직접 정의할 수도 있고 ,XML을 통해서도 정의할 수 있습니다.(현재 XML은 아직 적용 안됨.)

Translucent system UI styling

콘텐츠를 통해 임팩트를 줄 수 있도록 스테이터스 바와 네비게이션 바를 포함한 반투명한 시스템UI를 요청하는 새로운 윈도우 스타일과 테마를 사용할 수 있습니다. 또한 네비게이션바 버튼이나 스테이터스바의 정보에 대한 가독성을 높이기 위해, 미묘한 그라디언트가 시스템 바 뒤로 보여지게 되었습니다.

Enhanced notification access

Notification 리스너 서비스는 노티 빌더 API를 사용해 노티에 대한 액션 뿐만 아니라 텍스트, 아이콘, 사진, 프로그레스, 크로노미터 등의 많은 정보를 포함 할 수 있게 되었습니다.

Chromium WebView

이제 크로미움에 기반한 웹뷰를 사용할 수 있게 되었습니다. 이 웹뷰는 안드로이드 크롬 브라우저와 동일한 수준의 성능과 호완성을 갖추고 최신 HTML5, CSS3 표준 기술들을 지원하며 V8 자바스크립트 엔진이 탑재되어있습니다. 또한 DevTools이 연동되는 최신 30버전으로 적용되었으며 원격 디버깅을 지원합니다.

앱의 타켓버전을 19로 하면 완전한 크롬버전으로 동작하고 18이하로 설정하면 호환모드로 동작합니다. 그러나 호환모드에서도 기본에 되었던 기능들이 동작하지 않는등 부작용이 있을 수 있기에 꼭꼭 테스트 하셔야합니다.

이에 대한 자세한 내용은 Migrating to WebView in Android 4.4를 참고해 주세요. 제가 마크업 쪽을 잘 몰라 오역한 부분이 있을 수도 있습니다. 이상한 부분은 꼭 원문을 확인해 주시기 바랍니다.

New media capabilities

Screen recording

MP4 파일 형태로 현재 디바이스에서 보여지고 있는 화면을 녹화할 수 있으며 이를 통해 앱 튜토리얼이나 마케팅 비디오 등에 활용할 수 있게 되었습니다.

개인적으로 이제서야 화면녹화 기능이 되는게 아쉽습니다. 이 기능 때문에 7달러 주고 유료앱을 샀었는데 ㅜ. 소리는 녹음이 안되네요. 참고로 녹화된 동영상의 화면비율은 녹화한 디바이스의 화면비율과 동일하게 저장되어지며 최대 3분까지 화면이 녹화됩니다.또한 MP4파일로 지정한 폴더에 저장되며 해당기능 사용시는 주로 앱 홍보나 시연인 만큼 설정에 터치 피드백을 켜고 녹화하시기를 권장합니다.

abd를 통해 녹화가 가능하며 실행방법은 간단합니다. 녹화한 샘플은 링크를 통해 확인하실 수 있습니다.

Resolution switching through adaptive playback

시스템에서 해상도를 조정하여 더 나은 스트리밍 비디오 서비스를 지원합니다.

Common Encryption for DASH

안드로이드 이제 MPEG-DASH(Http를 이용한 스트리밍 표준)를 위한 다중 DRM 방식을 통한 Common Encryption (CENC)을 지원한다.

HTTP Live Streaming

HTTP Live Streaming (HLS)지원

Audio Tunneling to DSP

고성능 저전력 오디오 재생을 위해 애플리케이션 프로세서를 깨우지 않고 DSP로 보내는 오디오 터널링을 지원합니다. 오디오 터널링을 이용하면 이용하지 않을 때보다 50%더 배터리 효율이 증가하는데, 넥서스5는 60시간 동안 음악 재생을 할 수 있습니다.

Audio monitoring

오디오 모니터링을 통해 음악을 시각화 할 수 있습니다.

Loudness enhancer

소리증폭기능 가능.

Audio timestamps for improved AV sync

정확하게 비디오 프레임과 오디오를 동기화하는 타임 스탬프 정보를 사용할 수 있게 되었습니다.

Wi-Fi CERTIFIED Miracast™

500여개 이상의 업체가 참여한 Wifi 얼라이언스에서 진행하는 인증으로 업계 표준 컨텐츠 보호 기술과 WPA2 보안 기술의 필수 지원으로 보안 문제를 해결, 그리고 Wifi 다이렉트 및 Wifi 프로텍트 셋업으로 사용자가 복잡한 설정 없이 미라캐스트를 원하는 기기를 선택하면 연결된 두 하드웨어 사이에서 필요한 작업을 자동으로 수행합니다.

Settings > Developer options > Wireless display certification.을 통해 메뉴에 접근할 수 있습니다.

RenderScript Compute

렌더스크립트란 하이 퍼포먼스를 위해 CPU 아키텍쳐와 민첩하게 연동되도록 하는 프레임웍입니다.

Ongoing performance improvements

렌더스크립트가 성능 최적화가 되어 앱에서 동작되는 작업들에 대한 성능이 향상되었습니다.

GPU acceleration

코드 변경없이 랜더스크립트를 통해 GPU 가속 지원이 가능(지원가능 단말에 한하여)합니다. 넥서스5 뿐만아니라 넥서스7 2세대, 넥서스 10에서도 가능하며 추후 늘어날 전망입니다.

RenderScript in the Android NDK

네이티브 코드에서 렌더스크립트를 직접 실행 할 수 있도록 해주는 API가 NDK에 추가되었습니다. 즉, NDK에서 렌더스크립트 내장함수 API가 사용가능해졌으며(C, C++을 통해 렌더스크립트 연동이 가능해졌습니다.) 이를 통해 멀티코어 프로세스등과 같은 환경에서 좋은 성능을 보여줄 것입니다.

Graphics

GLES2.0 SurfaceFlinger

OPENGL1.0과 2.0에서의 멀티텍스쳐링 지원

New Hardware Composer support for virtual displays

New Types of Connectivity

New Bluetooth profiles

블루투스 프로파일이 추가되었습니다. Bluetooth HID over GATT (HOGP) 을 통해 저전력을 구현했으며 블루투스 맵(Message Access Profile)을 지원하는 자동차와 메시지 송수신이 가능하다 또한 블루투스 AVRCP 1.3 지원이 되어 자동차 오디오에서 노래 제목 등을 보여줄 수 있게 되었습니다.

IR Blasters

적외선 (IR) 블라스터가 탑재된 디바이스에서, 안드로이드는 TV와 주변의 다른 디바이스를 무선 컨트롤 하기 위한 애플리케이션을 지원합니다. 즉, 적외선 신호를 이용하는 기기를 컨트롤 할 수 있는 API를 제공하는 것입니다. 이제 특정단말 뿐만아니라 4.4 이후의 모든 단말에서 이 기능이 사용이 가능합니다.

Wi-Fi TDLS support

같은 와이파이에 물려있는 기기끼리 끊기지 않고 미디어를 이어볼 수 있도록 해주는 Wi-Fi Tunneled Direct Link Setup (TDLS)을 지원합니다.

Accessibility

System-wide settings for closed captioning

안드로이드는 이제 자막과 부제를 표시할 수 있는 기능을 지원합니다.자막 기능을 켜려면, 설정 > 접근성에 들어가 자막을 키면되며 사용자는 자막의 활성화 유무와 사용할 언어, 글자크기, 텍스트, 스타일 및 글로벌 자막 설정을 할 수 있고 캡셔닝 매니저 API를 통해 지역, 비율, 글자색, 가장자리 속성, 글꼴 등을 설정할 수 있으며 미리 화면에서 볼 수도 있습니다.

그러나 VideoView를 사용하는 앱들은 WebVTT(The Web Video Text Tracks Format) 형식의 캡션만 디스플레이 할 수 있습니다.

Enhanced Accessibility APIs

Support for international Users

Drawable mirroring for RTL locales

RTL은 주로 중동에서 글자를 쓰는 방식을 말합니다. 보통 왼쪽에서 오른쪽으로 글을 쓰지만 RTL은 오른쪽에서 왼쪽으로 글을 씁니다. 이에 기존에는 이미지나 글자에 대해 이러한 방식을 적용한 파일을 한벌 더 가지고 있어야 했었습니다. 그러나 이번 기능의 추가로 RTL 자동 미러 기능을 통해같은 내용의 스트링을 별도의 asset에 중복으로 스트링을 생성해서 쓰지 않고 기존의 스트링을 그대로 이용하여 적용함에 APK의 용량을 줄일 수 있게 되었습니다. 또한.단순히 글자 뿐만이 아니라 비트맵, 나인패치, 리스트, 이미지 등도 이러한 기능이 적용됩니다. 뿐만아니라 속성을 통해 해당기능을 각각의 이미지들에 대해 적용할지에 대한 여부도 설정할 수 있습니다.

Security enhancements

SELinux (enforcing mode)

SELinux 속성이 관대함에서 강제로 설정되었습니다.

루트보다 상위개념이라 루팅하는데 어려움이 있겠네요.

Improved cryptographic algorithms

암호화 알고리즘 강화

안드로이드는 두 가지 이상의 암호화 알고리즘을 추가하여 보안을 강화하였습니다. 먼저 타원 곡선 전자 서명 알고리즘 (ECDSA) 지원을 통해 응용 프로그램이나 데이터 연결의 서명과 같은 시나리오에 적용되는(마켓에 올릴때 주로하는 싸이닝 작업) KeyStore에 대한 보안을 향상시켰고, Scrypt Key 파생 함수를 통해 전체 디스크 암호화시에 사용된 암호키를 보호합니다.

Other enhancements

다중 장치에서 VPN을 이제 사용자 별로 적용하도록 되었습니다. 이에 다른 사용자에 영향을 주지 않고 VPN을 통해 모든 네트워크에 대한 트래픽을 허용 할 수 있습니다. 또한, FORTIFY_SOURCE 레벨 2를 지원하며, 모든 코드는 보안하에 컴파일됩니다.

Tools for analyzing memory use

Procstats는 앱과 백그라운드 서비스에서 사용하는 메모리 상태 및 구동시간을 분석할 수 있습니다. 기존과의 차이는 순간의 풋 프린트 뿐만 아니라 일정 시간동안 어떤 일들이 있었는지는 알게 되었다는 점 입니다. 이러한 수치를 보고 효율적으로 메모리 최적화 하려면 개발 가이드 문서를 참고하시면 됩니다. 같은 앱이라도 포그라운드, 서비스, 리시버 등으로 카테고리를 나누어 보기 편하도록 만들어져있습니다.

meminfo 툴은 한앱에서 사용하는 메모리 현황을 디테일하게 볼 수 있습니다.

procstats을 사용하려면 안드로이드 SDK에 포함된 adb툴을 통해 adb shell dumpsys procstats을 실행하면 됩니다. 만약 디바이스에서 이런 내용을 보려면 아래 설명에 나와 있듯이 개발자 옵션 중 Process Stats을 이용하세요.

On-device memory status and profiling

안드로이드 4.4은 새로운 개발자 옵션이 추가 되었습니다. 설치한 앱들의 메모리를 분석해서 보여주는 기능인데 특히 낮은 메모리를 가지고 있는 디바이스들에게 유용합니다.

설정방법 : Settings > Developer options > Process stats

위 그림에서 보이는 빨강, 노랑, 녹색을 보이는 그래프는 OS에서 얼마나 격하게 메모리를 사용했는지를 보여주는 것입니다. 또한 파란색 바는 상대적인 메모리 사용량을 오른쪽 상단의 퍼센트는 해당 프로세스가 백그라운드에서 사용된 비율을 나타냅니다. 목록에서 앱을 하나 터치해보면 앱이 사용된 평균, 그리고 최대 메모리 정보가 잘 요약되어있습니다.

포그라운드, 백그라운드, 캐시된 프로세스 등에 대한 정보를 필터링해서 볼 수 있으며 이러한 메모리 사용 측정 주기는 3, 6, 12 또는 24시간으로 설정할 수 있습니다.

넥서스5가 없을 경우 4.4 테스트 방법

현재 SDK매니저를 통해 다운로드 받아 에뮬레이트를 통해 테스트 해볼 수 있습니다. 또한 넥서스 S, 7을 소유하신 분들은 어둠의 경로를 통해 롬을 다운받아 미리 4.4를 테스트 해 보실 수 있습니다.

단말로 테스트하실 때에는 꼭 타켓을 19뿐만 아니라 이하버전으로도 테스트해보시길 권해드립니다.

참고로 릴리즈 하시기 전에 아래 확인 사항을 꼭 테스트 해주세요!!

휴우 님이 수고해주신 안드로이드 4.4 릴리즈전 확인 사항

참고사이트 : http://www.zdnet.co.kr/news/news_view.asp?artice_id=20131101104642


출처 : https://medium.com/@_marojun/android-kitkat%EC%97%90%EC%84%9C%EC%9D%98-%EB%B3%80%ED%99%94-b7859c938f14

 

반응형