IT_Programming/Android_Java

[펌] 개발자를 위한 안드로이드 누가(Nougat) 변경점

JJun ™ 2016. 8. 25. 14:51



 출처: https://realm.io/kr/news/android-nougat/



안드로이드 누가(Nougat)가 정식 릴리즈 되었습니다.
대부분의 글들은 사용자 측면에서 누가를 설명하고 있습니다.
개발자들이 누가 업데이트에서 알아야 하는것들은 어떤 것들이 있을까요?



누가(Nougat) 가 뭔가?


누가는 견과류나 말린 과일에 설탕이나 꿀을 넣어 만든 간식이고 아래 안드로이드 인형이 밟고 있는 모양으로 생겼습니다. 저는 먹어본적도 없고 들어본적도 없는 디저트 입니다. 이름을 공모도 했었다고 하는데, 예상하지 못했던 이름이 나왔네요. 알파벳은 총 26자이고 N은 14번째 문자 입니다.

안드로이드의 역사는 중반을 이제 막 지난걸까요?


사용자측면에서 누가에 추가된 주요 기능

  • 멀티 윈도우

  • 알림창 업데이트
    • 디자인 수정, 커스터마이징 가능
    • 메시지 그룹핑
    • 바로 답장하기

  • 다양한 배터리 최적화, 데이터 절감 기능

  • 구글의 가상현실 플랫폼 데이드림(Daydream) 지원

  • 게임 등을 위한 3D 그래픽 API ‘벌칸(Vulkan)’ 지원

  • 더 쉬운 운영체제 업데이트

  • 시작화면 암호화, 폴더 잠금 등 개인정보 보호 기능


개발자가 알아야할 누가에서의 변화

  • 프로파일 가이드 JIT/AOT 컴파일
    • 앱의 업데이트, 설치, 초기 실행시간, 안드로이드 업데이트 때 앱을 갱신하는 시간을 획기적으로 개선

  • 더 나은 도즈 모드 (배터리 절약)

  • 백드라운드 최적화 - 메모리와 배처리 최적화

  • TextureView 대신 SurfaceView 권장 - 배터리 소모등 최적화

  • 게임 개발자를 위한 3D 렌더링 API인 Vulkan API
  • 업무모드 끄기 기능
    업무 프로파일을 가진 디바이스에서는 업무모드를 껐다켰다 할 수 있습니다. 업무모드를 끄면 업무 프로파일을 사용한 앱, 위젯, 백드라운드 동기화, 알림이 모두 꺼지게 됩니다. 사용자는 업무모드가 꺼져있다는 것을 런처를 통해서 언제나 확인할 수 있습니다.



웹뷰에서의 변화

  • Chrome + WebView, 다같이
    안드로이드 7.0부터 들어가는 Chrome 버전 51 부터는 안드로이드의 웹뷰를 보여주기 위해서 디바이스에 있는 Chrome APK가 사용됩니다. 이 기능으로 메모리도 절약되고 웹뷰 APK를 업데이트 할 필요도 없어집니다. 개발자 옵션에서 WebView implementation 부분을 설정하므로서 크롬 개발자 버전이나 베타 버전을 사용할 수도 있습니다. 웹뷰를 기반으로 하는 다양한 앱들에게 커다란 변화를 가져올 것으로 예상합니다.

  • 실험적인 멀티 프로세스 지원
    개발자 옵션에서 Multiprocess WebView 를 켜면 WebView가 콘텐츠를 분리된 샌드박스에서 동작하게 할 수 있습니다. 이 기능은 호환성 검증을 위해서 들어가 있으며 메모리 사용량 이나 렌더링 성능을 더 낫게할 수 있으리라고 기대하고 있습니다.

  • Javascript 동작
    안드로이드 7.0 이상을 타게팅하는 앱에서는 새로운 페이지가 로드 되면 Javascript 컨텍스트가 리셋되게
    됩니다. 따라서 WebView에서 Javascript 를 쓰기 위해서는 페이지가 로드 된 후에 실행해야 합니다.

  • 위치 정보 가져올때는 https 에서만
    Android 7.0 이상을 타게팅하는 앱에서는 geolocation API가 오리진과의 안전한 연결(HTTPS)에서만
    동작하게 됩니다. 이는 안전하지 않은 경로를 통한 개인정보 유출을 보호하기 위함이라고 합니다.


보안 관련 기능들

  • 웹뷰에서 위치정보를 가져오기 위해서는 페이지가 https 여야 함
    바로 위에 설명한 그 내용 입니다.

  • APK Signature Scheme v2
    안드로이드 7.0은 APK Signature Scheme v2를 통해서 앱이 더 빨리 설치되도록 하고인증되지 않은 APK파일 수정으로 부터의 보호기능을 제공합니다. 안드로이드 스튜디오 2.2와 Android Plugin for Gradle 2.2 버전을 사용하면 APK Signature Scheme v2를 사용한 싸이닝과 기존 방법을 이용한 JAR 싸이닝을 모두 하게 됩니다. 개발하시는 앱에서 새로운 방식이 잘 동작하지 않으면, 기존 싸인방식만 사용하도록 설정할 수도 있습니다.

  • Key 관리
    안드로이드 7.0 부터는 Key Attestation 기능을 제공합니다. 이 기능은 보안 key와 민감한 정보를 하드웨어로 관리되는 key 저장소에 안전하게 보관하고 관리할 수 있도록 하는 보안 기능입니다. 이 도구를 사용해서 앱이 Key를 안전한 하드웨어 공간에 보관할 수 있고, 디바이스가 루팅되도라도 접근하지 못하도록 안전하게 관리할 수 있습니다. 
    하지만 모든 하드웨어(디바이스)가 이 기능을 제공하는 것은 아니기 때문에, 하드웨어 레벨에서 지원하지 않으면 소프트웨어 방식을 사용하게 됩니다. 더 자세한 정보는 Key Attestation페이지에서 얻을 수 있습니다.



멀티 윈도우

사람들이 가장 많이 꼽는 누가의 기능이 멀티 윈도우 입니다. 화면을 반으로 분할해서 한 화면에서 2개 이상의 앱을 실행할 수 있는 기능이죠. 이 기능은 이미 갤럭시 노트에 있던 기능이나 안드로이드에 기본 채용었습니다. 아무래도 제조사가 넣은 기능보다는 더 안정적으로 멀티윈도우를 지원하지 않을까 생각합니다. 다만 태블릿 등의 큰화면이 아니더라도 안드로이드에서 유튜브를 보면서 이메일 답장을 한다거나, 영어강좌 동영상을 틀고 사전 앱을 사용 할수도 있고, 전화앱을 켠 상태에서 메모앱을 실행해 메모를 할 수 도 있겠죠. 구글행아웃으로 대화를 하면서 필기를 한다거나 주식시세를 띄워놓고 게임을 하는 등의 시나리오가 가능합니다. 또한 모바일에서는 화면 분할이 되고, 타블렛이나 대형 단말에서는 창 모드라는 기능으로 활용 되며, TV 등 커다란 화면에서는 화면안에 화면이 들어가는 PIP(Picture in picture)로 쓸 수 있습니다.

활용도는 높아가는건 사용자에게 좋으나, 개발자들이 신경써야 할 것이 늘어나겠죠. N Preview SDK로 앱을 빌드하는 경우, 앱이 다중 창 표시를 처리하는 방식을 구성할 수 있습니다. 다만 다중 창 수명 주기에 대해 이해하고 있어야 하고, 앱을 다중 창 모드로 구성하기위한 레이아웃 속성 들을 알아야 합니다. 다중 창 모드에서 비활성화되는 기능, 다중 창 변경 알림 및 쿼리, PIP 모드로 들어가기, 드래그 앤 드롭에 대한 추가적인 고려를 해야 하고, 다중창모드
지원에 따른 별도의 테스트도 필요합니다.

이제 새로 지원되는 안드로이드 멀티 윈도우 기능이 모두 잘 동작하기 위해서는 안드로이드 누가뿐 아니라
제조사의 구현과 앱의 구현이 모두 잘 이루어져야 실제로 사용할 수 있을 것입니다.

이제 업데이트 된 기능이니 실제로 사용자들이 이 기능을 활용하는데 까지는 좀 시간이 걸릴 것이라고 예상합니다.
멀티윈도우 관련 구글 개발자 문서를 참고하세요



인스턴트 앱

앱을 설치하지 않고 앱의 일부기능을 사용할 수 있는 매력적인 기능이 추가되었습니다.
특정 웹 사이트에 접속하면 웹 사이트 대신에 앱이 설치되어 간단한 기능을 사용할 수 있습니다.
해당 액티비티는 샌드박스에서 수행되며 제한된 기능이 수행되며 실제 앱을 설치하거나 결제를 유도할 수 있습니다. 예를 들어서 주차장에서 간단한 주차 앱이 필요하거나 식당에서 식당 메뉴 어플리케이션이 있다면 그 앱을 굳이 스토어에서 찾아서 설치하기에는 너무 시간도 많이 걸리고 귀찮겠죠. 그럴때 바로 활용할 수 있습니다.
이 기능은 누가 버전에서만 지원되는 것이 아니라 Kitkat 버전을 사용하는 기기부터 사용이 가능합니다.
안드로이드 인스턴트 앱 개발자 페이지



ART가 AOT + JIT로

많이 실행 되는 경로를 빌드하는 JIT을 탑재한 달빅에 비해 전체 코드를 빌드하는 AOT를 선택한 ART는 몇가지 주요한 장단점을 가지고 있습니다. 전체 코드를 빌드했기 때문에 전반적인 효율성이 있으며 앱을 빌드하는 과정이 들기 때문에 최초 실행이나 업데이트, 운영체제 업데이트에서 단점이 있습니다. 그리고 런타임에 프로파일링을 통해 개선할 수 있는 여지도 없고요. 이번 누가의 ART는 JIT와 AOT를 모두 탑재했습니다. 최초에는 JIT로 빠르게 진행하고 점차 AOT로 바꾸어가고 업데이트나 운영체제 갱신일 때는 다시 JIT로 동작하는 것입니다. 그리고 AOT로 전체가 빌드된 코드도 JIT를 통한 런타임 프로파일링이 가능합니다. 누가의 ART는 JIT와 AOT 양날 검을 휘두는 고수입니다.

참고