자주 묻는 질문(FAQ)

이 페이지에서는 가장 많이 묻는 질문이나 빠른 실행 앱 개발 중 직면할 수 있는 오류에 대해 설명합니다. 사용자 환경 가이드라인에 관한 더 많은 정보는 Google Play Instant 앱의 UX 모범 사례Google Play Instant 게임의 UX 모범 사례를 참조하세요.

일반

  • 어떤 기기가 Google Play Instant을 지원합니까?

    Google Play Instant은 Android 5.0 (API level 21) 이상을 구동하는 대부분의 기기에서 지원됩니다.

  • 개발자는 이제 두 가지 다른 Android 앱을 빌드해야 하나요?

    개발자는 단일 소스 트리로 하나의 프로젝트만 관리하면 됩니다. 프로젝트를 구성하여 두 개의 빌드 아티팩트를 생성할 수 있습니다.

    • 설치 가능 버전
    • 빠른 실행 앱 버전

    설치 가능 앱에 빠른 설치 앱 지원을 추가하는 것은 설치 가능 앱이 현재 구성된 방식에 따라 달라집니다.

    참고: 빠른 실행 앱 버전은 최근에 퍼블리싱된 설치 가능 앱 버전 이하여야 합니다.

  • 빠른 실행 앱이 사용할 수 있는 Android API 및 기능에는 어떤 유형이 있나요?

    Google Play Instant 기능은 기존 Android 앱을 보완합니다. 즉, 기존 Android 앱을 대체할 필요가 없다는 것을 의미합니다. 이 기능은 동일한 Android API, 프로젝트, 소스 코드를 사용하며, 사용자가 설치되지 않은 앱에 갖는 기대와 일치하지 않는 일부 기능을 제한합니다. 예를 들어, 빠른 실행 앱이 백그라운드 서비스를 사용하거나, 백그라운드 알림을 전송하거나, 고유한 기기 식별자에 액세스하지 못할 수 있습니다.

  • 사용자가 앱을 영구적으로 설치하도록 선택할 수 있나요?

    개발자는 showInstallPrompt() 메서드를 사용하여 사용자가 Google Play에서 앱을 설치하도록 할 수 있습니다.

  • Google Play Instant에서 권한은 어떤 식으로 작동하나요?

    Google Play Instant은 Android 6.0(API 레벨 23)에 새로 추가된 런타임 권한 모델을 사용합니다.

  • 어떤 권한을 빠른 실행 앱에 사용할 수 있나요?

    앱 번들 빠른 실행 사용 설정에 관한 자세한 내용은 가이드 내의 권한 섹션의 목록을 참조하세요.

  • 빠른 실행 앱은 어떤 SDK 버전을 대상으로 해야 합니까?

    빠른 실행 앱의 매니페스트는 targetSdkVersion26 이상으로 설정해야 합니다.

  • 빠른 실행이 네트워크 트래픽을 처리하는 방식에 제한이 있나요?

    내부 빠른 실행 앱의 모든 네트워크 트래픽은 반드시 HTTPS를 사용해야 합니다. 빠른 실행 앱은 HTTP를 지원하지 않습니다.

  • 개발자가 빠른 실행 앱을 퍼블리싱하는 방법은 무엇인가요?

    개발자는 기존의 Android 앱과 유사하게 Google Play Console을 통해 자신의 빠른 실행 앱을 퍼블리싱할 수 있습니다. 더 자세한 정보는 빠른 실행 앱 배포를 참조하세요.

  • 빠른 실행 앱에는 Smart Lock이 필수인가요?

    예, 사용자가 로그인해야 하는 앱은 Android의 비밀번호 대용 Smart Lock반드시 구현해야 합니다.

  • 설치 가능한 Android 앱이 없어도 빠른 실행 앱을 구현할 수 있나요?

    아니요, 설치 가능한 버전의 Android 앱이 Google Play에 있어야 합니다.

  • 뷰에 WebP를 사용할 수 있나요?

    예, 뷰에는 WebP 형식 이미지를 사용해야 합니다.

  • 빠른 실행 앱은 Google 웹 검색에 어떻게 표시되나요?

    빠른 실행 앱은 설치 가능 앱이 검색결과에 표시되는 방식과 동일하게 표시됩니다. URL과 연결된 빠른 실행 앱이 있는 경우, 해당 앱은 아이콘 및 "Instant"라는 텍스트로 라벨이 지정되어 나타납니다.

  • Google Play Instant을 사용하여 게임을 배포할 수 있나요?

    예, Google Play Instant은 게임을 완벽하게 지원합니다. 시작하려면 기존 게임을 빠른 실행 앱으로 전환하는 방법을 알아보세요.

프로젝트 구조, 기능 및 아키텍처

  • 빠른 실행 앱과 설치 가능 앱에는 별도의 build.gradle 파일이 있나요?

    설치 가능 앱과 빠른 실행 앱을 동일한 Android Studio 프로젝트에서 빌드하려면 각각의 build.gradle 파일이 필요합니다.

    • 설치 가능 앱은 com.android.application 빌드 규칙을 사용하는 모듈에서 빌드하세요.
    • 빠른 실행 앱은 com.android.instantapp 빌드 규칙을 사용하는 모듈에서 빌드하세요.

    빠른 실행 앱 생성 방법에 관한 더 많은 정보는 기능 모듈을 빠른 실행 앱으로 전환하는 방법에 관한 가이드를 확인하세요.

  • 설치 가능 앱을 빠른 실행 앱과 별도로 빌드할 수 있나요?

    앱을 기본 기능 모듈로 전환기능 모듈을 빠른 실행 앱으로 전환 가이드에서 논의된 바와 같이, 권장 프로젝트 구조는 기능을 별도의 라이브러리 모듈로 나누는 것을 우선합니다. 설치 가능 앱과 빠른 실행 앱은 이러한 라이브러리 모듈에 따라 달라집니다. 권장 프로젝트 구조를 따르는 경우에는, 설치 가능 앱과 별도로 각 기능을 빌드할 수 있습니다.

  • 빠른 실행 앱에서 NDK가 지원되나요?

    예, NDK는 Android 5.0(API 레벨 21) 이상을 구동하는 기기에서 지원됩니다.

  • 빠른 실행 앱에서 활동 간에 어떻게 이동하나요?

    다른 기능에 지정된 URL을 실행하면 다른 활동으로 이동할 수 있습니다. URL을 통해 활동의 주소를 지정해야 합니다. URL을 통한 활동 주소 지정 및 앱 링크 구현에 관한 더 많은 정보는 빠른 실행 앱에 URL 액세스 제공을 확인하세요.

  • 딥 링크를 처리하고 필요한 경우 다른 활동을 호출하는 라우팅 활동을 내 기본 앱에서 사용할 수 있나요?

    빠른 실행 앱은 기능적으로 모듈식이어야 합니다. 중앙 라우팅 활동은 모듈화를 제한합니다. Android 앱 링크를 사용하면 Android 프레임워크가 라우팅을 수행할 수 있으며, 더 나은 모듈화가 가능합니다.

  • 단일 기능에 여러 활동이 있을 수 있나요?

    단일 기능 내에 여러 활동이 있을 수 있습니다. 그러나 빠른 실행 앱 다운로드의 크기 제한이 4MB임을 명심해야 합니다. 또한, 각 기능에는 그 진입점으로 단일 활동이 있어야 합니다.

  • 기능 간에 리소스를 공유할 수 있나요?

    예, 기본 기능의 리소스는 모든 기능에서 이용할 수 있습니다. 독립 기능에 포함된 리소스는 해당 기능에서만 이용할 수 있습니다.

    개발자는 반드시 독립 기능과 기본 기능의 파일 기반 리소스의 이름을 다르게 해야 합니다. 예를 들어, 기본 기능이 res/layout/feature_layout.xml의 계층을 정의하고 독립 기능이 동일한 파일명의 다른 계층을 정의하면, 빠른 실행 앱이 기본 기능 계층 로드가 필요할 때 실제로는 독립 기능의 계층을 로드할 수 있습니다.

    또한, 기능 모듈의 매니페스트에서 참조된 모든 리소스는 반드시 기본 기능 모듈에 있어야 합니다.

  • 앱에 2개의 기능이 있는 경우 메모리를 공유하나요?

    예, 2개의 기능은 동일 프로세스에서 실행되며 애플리케이션 컨텍스트를 공유합니다. 여러 기능이 동일한 빠른 실행 앱에 속하는 한, 이들 기능은 단일 앱의 다른 구성요소들과 유사하게 작동합니다. 저장소 및 리소스와 같은 구성 요소는 유사한 방식으로 액세스됩니다.

    그러나 빠른 실행 앱은 설치 가능 APK와 비교할 때 약간의 제한이 있습니다. 자세한 내용은 Google Play Instant 정책 페이지를 참조하세요.

  • 단일 활동 내의 뷰 페이저에 여러 개의 프래그먼트가 있을 수 있나요?

    예, 단일 활동 내에 여러 프래그먼트가 있을 수 있으며, 기능 내의 활동과 관련된 프래그먼트를 정의할 수 있습니다. 활동은 기능 내의 기본 진입점이어야 합니다. 유의할 점은, 프래그먼트는 딥 링크에 연결될 수 없으며 활동과 독립적으로 실행될 수 없다는 것입니다.

  • 빠른 실행 앱에 별도의 런처 아이콘이 있어야 하나요?

    아니요, UI의 브랜치를 만들어서는 안 됩니다. 빠른 실행 앱 및 설치 가능 앱이 모두 동일한 룩앤필(Look-and-Feel)을 제공하는 것이 중요하므로 동일한 아이콘을 사용해야 합니다. 따라서, 두 앱 모두에 동일한 시각적 요소를 사용해야 합니다.

  • 앱이 설치 가능 앱과 빠른 실행 앱 중 어느 것으로 실행되고 있는지 어떻게 알 수 있나요?

    isInstantApp() 메서드를 사용합니다. 현재 프로세스가 빠른 실행 앱 프로세스인 경우, 이 메서드는 true를 반환합니다.

  • 사용자가 빠른 실행 앱을 설치하도록 프롬프트를 제공하려면 어떻게 해야 하나요?

    showInstallPrompt() 메서드를 사용합니다. 이 메서드는 일반 APK 버전 앱을 설치하라는 프롬프트를 사용자에게 표시합니다.

  • 기능에 대한 여러 APK가 있으면 Google Play 목록에서도 따로 표시되나요?

    아니요, 빠른 실행 앱과 설치 가능 앱은 동일한 패키지 이름으로 목록에 표시됩니다.

  • 빠른 실행 앱 내에서 기능을 명명하는 방법에 대한 제한이 있나요?

    기능 모듈은 자바 패키지 이름에 대해 규정된 명명 규칙을 따릅니다. 예를 들어, 기능 이름에는 하이픈을 사용할 수 없습니다. 자바 패키지 명명 관례에 관한 추가 정보는 자바 문서를 확인하세요.

  • 빠른 실행 앱에서 설치 가능 앱으로 데이터를 전송하려면 어떻게 해야 하나요?

    Android 8.0(API 레벨 26) 이상을 구동하는 기기의 경우, 설치된 앱이 targetSandboxVersion 2를 사용하도록 구성되었다면 빠른 실행 앱의 데이터는 APK 설치가 시작되면 자동으로 전송됩니다.

    설치된 앱이 targetSandboxVersion 2를 사용하도록 구성되지 않았거나 Android 7.1(API 레벨 25) 이하를 구동하는 기기의 경우에는 Cookie API(샘플) 또는 Storage API(샘플)을 사용하여 데이터를 전송하는 것을 고려해 보세요.

  • 빠른 실행 앱에 Multidex가 지원되나요?

    Multidex는 빠른 실행 앱에 지원됩니다. 최대 크기 요구사항을 충족하지만 65,536개 메서드의 dex 제한보다 더 많은 메서드가 포함되어 있는 경우라도 Multidex를 사용 설정하고 빠른 실행 앱으로 퍼블리싱할 수 있습니다.

애널리틱스, Google Play 및 배포

  • 내 빠른 실행 앱이 특정 국가에서 실행되도록 제한할 수 있나요?

    빠른 실행 앱은 설치 가능 앱을 이용할 수 있는 국가로 제한됩니다. 이들 국가 중에서 개발자가 자신의 빠른 실행 앱을 대상으로 할 국가를 선택할 수 있습니다.

  • Google Play를 통해 알파 트랙에서 빠른 실행 앱을 테스트하려면 설치 가능 앱을 퍼블리싱해야 하나요?

    Google Play을 통해 내부 테스트 트랙에서 빠른 실행 앱의 배포를 테스트하려면 반드시 Google Play Console 내에 설치 가능한 버전 앱의 초안 양식이 있어야 합니다. 빠른 실행 앱의 배포와 테스트에 대한 자세한 정보는 빠른 실행 앱 배포를 참조하세요.

앱 크기

참고: Google Play Instant의 게임 다운로드 제한은 10MB입니다. 게임 개발자는 이 섹션의 가이드를 따르되, 4MB 인스턴스를 10MB로 바꿔야 합니다.

  • 4MB 총 다운로드 한도란 무엇입니까?

    빠른 실행 앱의 크기(기본 기능 및 포함된 독립 기능)는 가능한 한 작아야 합니다. 앱의 크기가 작을 수록 사용자가 다운로드하기 쉬워집니다. 그러나 빠른 실행 앱이 일단 사용자 기기에서 실행되면 추가적인 데이터를 다운로드하여 내부 저장소에 저장할 수 있습니다. 기기 내부 저장소의 데이터 저장에는 엄격한 4MB 제한이 없습니다.

    크기를 계산하려면 Instant App APK 압축을 풀고 APK 파일을 검사합니다. APK 파일의 디스크 크기를 사용하거나 APK 분석기를 열고 Raw File Size 값을 확인할 수도 있습니다.

    여러 기능이 있는 빠른 실행 앱의 경우, 기본 기능 APK의 크기를 단일 기능 APK에 더해야 합니다. 두 APK의 총 크기는 반드시 4MB 미만이어야 합니다.

  • 밀도, ABI, 언어 APK가 4MB에 어떤 영향을 미치나요?

    기능 크기는 기능 APK 크기, 기본 기능 APK 크기, 가장 큰 언어, 화면 밀도, 해당 기능과 관련된 ABI APK 크기를 더하여 계산합니다. 예를 들어, 기능에 언어 세 가지, 화면 밀도 하나가 있고 ABI APK가 없다면, 최종 APK 크기는 기능 APK 크기, 기본 기능, 가장 큰 언어 APK, 단일 화면 밀도 APK를 더하여 계산합니다.

  • 사용자가 동일한 빠른 실행 앱을 다운로드할 때마다 기본 및 독립 기능 APK를 다운로드해야 하나요?

    사용자가 빠른 실행 앱을 다운로드할 때 기본 기능과 독립 기능을 받게 됩니다. 2차 기능 또는 기능 APK가 요청되면 사용자는 해당 기능에 대한 기능 APK만을 받게 됩니다. 이러한 경우, 기본 기능은 다시 다운로드되지 않습니다.

    시스템은 가비지 컬렉션 중에 필요한 경우 빠른 실행 앱의 캐시를 지울 수 있습니다. 사용자가 전화를 재부팅하면 빠른 실행 앱의 캐시가 삭제됩니다. 즉, 사용자가 반드시 기본 기능을 재다운로드해야 한다는 것을 의미합니다.

  • 4MB 유효성 검사는 언제 일어납니까?

    이 유효성 검사는 빠른 실행 앱을 Google Play Console의 프로덕션 트랙에 업로드할 때 수행됩니다.

  • 다른 앱에서 클릭했을 때 링크가 빠른 실행 앱에서 열리지 않고, 대신 인앱 브라우저에서 열립니다. 사용자가 빠른 실행 앱으로 이동하도록 하는 방법이 있나요?

    앱 링크는 일반 URL이므로, 인앱 브라우저에서 열리도록 앱이 강제할 수 있습니다. Firebase 동적 링크를 이용하여 URL을 래핑하고 링크가 항상 빠른 실행 앱에서 열리도록 하세요.

  • 내 기본 앱 매니페스트에 제가 지원하지 않거나 소유하지 않은 기타 URL 또는 기타 URL 도메인이 포함되어 있습니다. 그 결과는 어떻게 되나요?

    URL의 도메인 소유권이 확인되지 않으면 빠른 실행 앱을 퍼블리싱할 수 없습니다.

  • URL이 올바르지 않은 활동을 엽니다. 어떻게 해야 하나요?

    선택한 활동은 직접적으로 활동의 <intent-filter> 요소에 기반합니다. 서로 다른 활동이 중복되는 "android:pathPrefix" 속성을 보유하는 등의 흔한 실수를 확인하세요. 예를 들어, 한 활동이 android:pathPrefix="/recordList"를 정의하고 다른 활동은 android:pathPrefix="/record"를 정의하면, 이 동작은 정의되지 않을 수 있습니다. android:path="/recordList"android:pathPrefix="/record/"와 같은 명확한 경로 정의를 사용하세요. 이를 통해 /recordList를 모든 기록의 스크롤 목록과 일치시키고 /record/123을 특정 기록과 일치시킬 수 있습니다.

기기에서 빠른 실행 앱 실행

  • 사용자가 Google Play Instant을 선택 해제하는 방법이 있나요?

    예, 사용자가 빠른 실행 앱을 처음 실행할 때 선택 해제가 가능합니다. 또한, 설정에서 빠른 실행 앱을 끔으로써 선택을 해제할 수도 있습니다.

  • 두 개의 빠른 실행 앱을 동시에 실행할 수 있나요?

    예, 빠른 실행 앱을 동시에 실행할 수 있으며 사용자가 두 앱 간에 전환할 수 있습니다. 포그라운드에 있는 빠른 실행 앱만 알림 창에 아이콘이 있습니다.

  • 사용자가 빠른 실행 앱 프로세스를 강제 종료하고 최근 사용 앱이나 기기의 홈 화면에서 프로세스를 다시 시작할 수 있나요?

    사용자는 최근 사용 앱 또는 이전에 열었던 URL을 탭하여 빠른 실행 앱을 다시 시작할 수 있습니다.

    빠른 실행 앱 프로세스는 해당 앱이 유휴 상태가 되면 강제 종료됩니다. 그러나 SQLite DB 및 공유 기본 설정과 같은 앱의 내부 저장소는 활성화 상태가 유지됩니다. 기기가 심각하게 제한된 경우, 빠른 실행 앱이 제거될 수 있으며 해당 내부 저장소가 삭제됩니다. 드물게 이러한 이벤트가 발생하는 경우, 반드시 빠른 실행 앱 상태를 서버에서 복원해야 합니다.

  • 빠른 실행 앱이 사용자 기기에 설치된 다른 앱을 실행할 수 있나요?

    빠른 실행 앱은 암시적 인텐트를 시작하여 설치된 앱을 실행할 수 있습니다. 그렇지만 명시적 인텐트를 사용해서는 대부분의 설치된 앱을 실행할 수 없습니다. 설치된 앱은 명시적 인텐트를 통해 빠른 실행 앱과 상호작용할 수 있습니다.

  • 사용자가 이전 버전의 앱을 보유하고 있을 때 새로운 기능이 있는 빠른 실행 앱 URL을 클릭하면 어떤 앱이 열리나요?

    설치된 앱은 언제나 빠른 실행 앱보다 우선합니다.

  • 빠른 실행 앱의 새로운 버전을 사용자가 어떻게 수신하나요? Google이 사용자의 기기에서 자동으로 업데이트하나요?

    최신 버전의 빠른 실행 앱은 신규 사용자 및 빠른 실행 앱 캐시가 만료된 기존 사용자에게 제공됩니다.