Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.

개요

Android 빠른 실행 앱을 사용하면 URL 실행에 반응하여 네이티브 Android 애플리케이션을 실행할 수 있으며, 이때 앱을 설치할 필요가 없습니다. Google Play 스토어는 빠른 실행 앱과 일치하는 URL에 대한 요청을 수신하면 이 요청을 전송했던 Android 기기로 필요한 코드 파일을 보냅니다. 그러면 기기가 앱을 실행합니다.

참고: Android 빠른 실행 앱은 Android 6.0 (API 레벨 23) 이상이 실행 중인 Android 기기에서만 실행됩니다.

기능으로 작동하는 앱

Android 빠른 실행 앱은 개발자의 앱 빌드와 사용자의 앱 사용을 위한 새롭고도 고유한 방법입니다. Android 빠른 실행 앱의 핵심적 개념을 소개하기 전에, 몇 가지 기초적인 용어를 이해한다면 도움이 될 것입니다.

기본적으로 앱에는 최소 하나 이상의 기능이 있습니다(예: 지도에서 장소 찾기, 이메일 보내기 또는 일간 뉴스 읽기). 상당수 앱은 여러 가지 기능을 제공합니다. 예를 들어, 지도 앱을 사용하면 사용자가 지도에서 장소를 찾을 뿐만 아니라 주변 식당을 조회하거나 이 장소의 링크를 이메일로 보낼 수 있습니다. 이러한 각 동작(예: 장소 찾기, 주변 식당 조회, 장소의 링크 공유)은 지도 앱 내에서 하나의 기능에 해당합니다.

Android 빠른 실행 앱에서는 사용자가 특정 앱의 단일 기능을 Google Play 스토어에서 다운로드할 수 있으며, 전체 앱을 다운로드하여 설치할 필요가 없습니다. 사용자가 빠른 실행 앱에서 기능을 요청하면, 이 사용자는 이 특정 기능을 실행하는 데 필요한 코드만 수신합니다. 사용자가 해당 기능의 사용을 마친 후에는 시스템이 이 기능의 코드를 폐기할 수 있습니다.

이전의 지도 앱 예시로 돌아가서, 지도 빠른 실행 앱은 각 기능을 별도 개체로 앱 안에 표시할 수 있습니다. 사용자는 장소 찾기 기능만을 다운로드하거나 식당 안내 기능만을 다운로드하거나 공유 기능만을 다운로드하여 사용할 수 있습니다. 사용자가 다른 앱으로 전환한 경우 시스템이 해당 기능의 코드를 안전하게 제거할 수 있습니다.

빠른 실행 앱 내의 각 기능에는 해당 기능의 진입점으로 작동하는 Activity 클래스가 하나 이상 있어야 합니다. 진입점 액티비티는 해당 기능의 UI를 호스팅하고 전반적인 사용자 흐름을 정의합니다. 사용자가 자신의 기기에서 기능을 실행하면 진입점 액티비티가 먼저 나타납니다. 한 기능에 둘 이상의 진입점 액티비티가 있을 수 있지만 그 중에 하나만 필요합니다.

기능 모듈 및 기능 APK

이렇게 필요에 따라 기능을 다운로드할 수 있게 하려면, 앱을 더 작은 모듈들로 나누어 기능 모듈로 패키징해야 합니다.

빠른 실행 앱 프로젝트를 빌드할 경우 빌드 출력은 하나 이상의 기능 APK가 포함된 빠른 실행 앱 APK가 됩니다. 각각의 기능 APK는 프로젝트에 있는 기능 모듈로부터 빌드되며 사용자가 필요에 따라 이 APK를 다운로드하여 빠른 실행 앱으로 실행할 수 있습니다.

모든 빠른 실행 앱에는 단 하나의 기본 기능 APK만 있어야 합니다. 빠른 실행 앱에 기능이 하나만 있는 경우, 기본 기능 APK만 필요하며 추가적인 기능 APK는 선택 사항입니다. 빠른 실행 앱에 기능이 여러 개인 경우, 일반적으로 기본 기능 APK에는 다른 기능들이 사용하는 공유 리소스와 코드 파일들이 포함됩니다. 지도 빠른 실행 앱 예시에 따르면, 기본 APK에는 장소와 관심 지점을 모델링하기 위한 지도 앱의 기본 styles.xml 파일이나 데이터 구조 클래스가 포함될 수 있습니다. 사용자가 어떤 기능을 요청하는지에 상관없이 기본 기능 APK는 항상 다운로드됩니다.

기본 기능 APK와 함께 추가적인 기능 APK가 있을 수 있습니다. 추가적인 기능 APK에는 한 기능에 해당하는 앱 조각들이 포함될 수 있습니다. 기능 APK에는 해당 기능의 진입점 액티비티과 이 기능에 필요한 고유 리소스가 포함됩니다.

사용자가 빠른 실행 앱에서 하나의 기능을 요청하는 경우 두 개의 기능 APK를 수신합니다( 해당 기능 APK와 기본 기능 APK). 동일한 사용자가 동일한 빠른 실행 앱으로부터 또 다른 기능을 요청하는 경우, 기본 기능 APK는 이미 다운로드되었기 때문에 기능 APK만을 수신할 수도 있습니다. 물론, 빠른 실행 앱에 기능이 하나만 있고 따라서 기본 기능 APK만 있는 경우에는 사용자가 이 기본 기능 APK만을 수신합니다.

다음 다이어그램은 빠른 실행 앱 APK와 기능 APK의 관계를 보여줍니다.

Google Play 스토어로부터 기능 요청

빠른 실행 앱의 한 기능을 Google Play 스토어로부터 다운로드하려면, 사용자가 링크만 클릭하면 됩니다. 빠른 실행 앱에 대한 요청을 수신한 Google Play 스토어는 어떤 기능을 사용자가 요청했는지 판별하기 위해 해당 URL을 파싱합니다. 일치값을 찾은 Google Play 스토어는 그 기능에 해당하는 기능 APK를 사용자 기기로 보냅니다. 그러면 빠른 실행 앱 런타임이 해당 기능을 실행합니다. 일치값을 찾지 못한 경우 Google Play 스토어는 기기에서 빠른 실행 앱 런타임경고를 생성합니다. 그러면 빠른 실행 앱 런타임이 URL 처리를 위해 시스템에 인텐트를 보내고 브로드캐스팅합니다.

이 때문에, 빠른 실행 앱에 있는 각 진입점 액티비티는 주소 지정이 가능해야 합니다. 즉, 고유한 URL 주소와 일치해야 합니다. 빠른 실행 앱에 있는 여러 기능의 URL 주소들이 한 도메인을 공유하는 경우, 각 기능은 해당 도메인 내의 다른 경로와 일치해야 합니다.

이전의 지도 빠른 실행 앱 예시에 따르면, 앱에는 세 가지 별도 기능이 있습니다(장소 찾기, 주변 식당 및 장소 공유). 이러한 기능들은 하나의 웹 도메인 'example.com'을 공유합니다. 각 기능에 대해 고유 URL 주소를 제공하기 위해 빠른 실행 앱은 각 기능의 도메인 아래에 다른 경로를 지정합니다.

기능 URL 주소
장소 찾기 http://example.com/finder
주변 식당 http://example.com/restaurants
장소 공유 http://example.com/share

이전에 언급한 것처럼, 하나의 기능에 여러 개의 진입점 액티비티가 있을 수 있습니다. 예를 들어, 한 기능에 사용자가 전환 가능한 두 개의 관련 액티비티가 있을 수 있으며, 각 액티비티의 URL 주소는 고유합니다. 해당 기능의 매니페스트에서 각 액티비티의 경로와 액티비티의 우선순위를 둘 다 지정해야 합니다.

예를 들어, 지도 빠른 실행 앱의 장소 찾기 기능에 두 개의 액티비티(검색 액티비티와 세부정보 액티비티)가 있다고 가정해 보겠습니다. 세부정보 액티비티의 URL 주소는 검색 액티비티와 유사합니다. 단, 세부정보 액티비티의 경우 숫자 ID가 URL에 추가됩니다.

액티비티 URL 주소 URL 경로 우선순위
검색 http://example.com/finder/ '/finder/' 1
세부정보 http://example.com/finder/<ID> '/finder/*' 100

URL 'http://example.com/finder/1234'에 대한 요청을 수신한 Google Play 스토어는 검색 및 세부정보 액티비티를 둘 다 찾습니다. Google Play 스토어는 해당 기능의 출발점으로 두 액티비티 중 하나를 선택해야 합니다. 빠른 실행 앱은 세부정보 액티비티의 우선순위가 검색 액티비티보다 높다고 지정하므로, Google Play 스토어는 세부정보 액티비티에서 기능을 시작하도록 빠른 실행 앱 런타임에 지정합니다.

다음 단계

빠른 실행 앱 개발을 시작하려면 시작 가이드를 참조하세요.