Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Android SDK
Code

안드로이드 인스턴트 앱이란 무엇인가?

by
Difficulty:IntermediateLength:LongLanguages:

Korean (한국어) translation by h1ghqlty. (you can also view the original English article)

안드로이드 앱을 출시할 때마다 앱에서 달성하고자 하는 앱에 대한 대략적인 아이디어가 있어야 합니다.

이러한 목표는 1분기에 특정 금액의 광고 수익을 창출하는 것과 같이 매우 구체적 일 수 있으며 구글 플레이에서 높은 평점을 받는 것과 같이 더 일반적 일 수 있습니다.

원하는 것이 무엇이든 가능한 한 많은 사용자 앞에 앱을 설치하면 항상 그 목록의 어딘가에 기능을 구현하게 되며 안드로이드 인스턴트 앱은 이를 수행하는 데 도움이 되는 새로운 기능입니다.

인스턴트 앱을 사용하면 현재 앱에 앱이 설치되어 있지 않은 사용자에게 완전히 새로운 방법을 제공할 수 있습니다. 이메일, 구글 검색 결과, 소셜 미디어의 소식을 비롯하여 URL을 지원하는 모든 위치에서 앱을 검색하고 액세스할 수 있습니다. 플랫폼, 유튜브 댓글 및 포럼.

기본적으로 인스턴트 앱을 사용하면 각 앱의 기능을 독립 실행 형 모듈로 구분할 수 있습니다. 그런 다음 사용자는 이 특정 모듈에 매핑 한 URL을 탭하고 언제든지 앱을 설치하지 않고도 이 인스턴트 앱 모듈을 필요할 때 로드 할 수 있습니다.

이번 3 부작 시리즈에서는 안드로이드 프로젝트에 즉석 앱 지원을 추가하는 방법을 보여 드리겠습니다. 이 연재가 끝나기 전에 두 가지 별도의 인스턴트 앱 기능 모듈로 구성된 응용 프로그램을 만들었습니다. 이 모듈은 호환되는 모든 안드로이드 장치에서 실행 및 테스트할 수 있습니다.

우리는 무엇을 다룰 것인가?

이 첫 번째 글에서는 인스턴트 앱이 무엇인지, 어떻게 작동하는지, 왜 관심을 기울여야 하는지에 초점을 맞 춥니다. 인스턴트 앱의 직접 경험을 제공하기 위해 안드로이드 스튜디오의 프로젝트 생성 마법사를 사용하여 인스턴트 앱 지원으로 미리 구성된 앱을 생성하므로 다른 모든 인스턴트 앱 구성 요소를 볼 수 있습니다. 단순히 그들에 대해 읽는 것보다.

즉석 앱 지원으로 미리 구성된 앱을 만드는 것이 이 기능을 사용하는 가장 빠르고 쉬운 방법이지만 실제로는 기존 프로젝트에 즉석 앱 지원을 추가 할 가능성이 훨씬 높습니다. 따라서 두 번째 부분에서는 그걸 정확히하는 방법이 있습니다. GitHub에서 다운로드 할 수 있는 앱을 제공 한 다음 인스턴트 앱을 지원하기 위해 이 프로젝트를 재구성하는 단계별 과정을 안내합니다.

퍼즐의 마지막 부분은 다중 기능의 인스턴트 앱을 만드는 것이므로 3부에서는 두 번째 기능 모듈을 애플리케이션에 추가하는 방법과 안드로이드 앱 링크를 사용하여 이 모듈을 다른 URL에 매핑하는 방법을 보여줍니다.

인스턴트 앱이란 무엇입니까?

인스턴트 앱을 설명하는 가장 좋은 방법 중 하나는 사용 방법의 예를 살펴 보는 것입니다.

친구가 당신에게 사랑한다고 약속한 고양이 비디오에 대한 링크를 보냈지만, 링크를 누르면 이 특정 비디오를 시청하기 전에 앱을 다운로드해야 한다는 것이 분명해집니다.

어쨌든 앱을 다운로드하거나 링크를 무시하고 인터넷에서 제공하는 최고의 고양이 비디오를 놓치지 않을지라도 이것은 나쁜 사용자 경험이며 많은 안드로이드 사용자들이 잘 알고 있는 시나리오입니다.

우리 중 대부분은 일회성 작업을 완료하기 위해 앱을 설치 한 경험이 있습니다. 예를 들어 누군가가 보낸 이메일 첨부 파일을 보거나 특정 웹 사이트에서 구매를 완료하거나 현재 주소로 가는 패키지를 추적하기 위해 앱을 다운로드할 수 있습니다.

이제 우리의 고양이 비디오 시나리오를 다시 상상해 보겠습니다. 이번에는 애플리케이션 개발자가 비디오 콘텐츠를 재생하는데 필요한 모든 코드와 리소스를 자체 인스턴트 앱 기능 모듈에 배치하고 이 모듈을 www.example.com/video URL에 매핑했습니다. 이번에 www.example.com/video/cat-video를 탭하면 구글 플레이는 이 URL이 인스턴트 앱 모듈과 연결되어 있음을 인식하고 이 동영상을 재생하는데 필요한 모든 코드와 리소스를 검색합니다. 최종 결과? 아무 것도 설치하지 않고 상자에서 20초 동안 놀고있는 고양이를 즐길 수 있습니다. 이는 훨씬 나은 사용자 환경입니다.

왜 인스턴트 응용 프로그램 기능을 사용해야합니까?

이 시리즈의 다음 글에서 볼 수 있듯이 기존 프로젝트에 즉석 응용 프로그램 지원을 추가하는 것은 매우 어려울 수 있으며 종종 응용 프로그램의 구조가 완전히 바뀌어야 합니다.

프로젝트 구조 조정은 가볍게 받아 들여야 할 결정이 아니기 때문에, 이 섹션에서는 인스턴트 앱 지원을 추가 할 때 얻을수 있는 주요 이점을 모두 포함하여 시간과 노력이 실제로 가치가 있는지 여부를 결정할 수 있도록 도와 드리겠습니다. 프로젝트 :

  • 앱과 새로운 사용자 간의 장벽을 제거합니다. 구글 플레이를 통해 애플리케이션을 설치하는 것은 특히 어렵거나 시간이 많이 소요되는 프로세스는 아니지만 앱과 잠재적인 신규 사용자 간의 가장 큰 장벽입니다. 대부분의 사용자가 설치 버튼을 클릭 할 것으로 예상되는 매력적인 구글 플레이 페이지를 만드는데 어느 정도의 시간을 투자해도 아무리 많은 사람들이 설치 시간에 중단됩니다.
  • 새로운 사용자를 확보하는 데 도움이됩니다. 자신의 웹 사이트, 블로그 또는 소셜 미디어와 같이 웹 주변의 다양한 위치에서 항상 앱을 홍보 할 수 있었지만 이전에는 새로운 사용자와 연결하여 앱의 구글 플레이 페이지를 방문한 적이있었습니다(드물지만 앱을 사이드 로드하는 것을 선호하는 사용자는 예외입니다.) 인스턴트 앱은 URL을 지원하는 모든 위치에서 애플리케이션에 직접 액세스할 수 있게 하여 앱의 구글 플레이 페이지에 대한 의존도를 없애기 때문에 새로운 사용자와 거의 무한대로 연결할 수 있습니다.
  • 공유된 콘텐츠가 앱에 가장 적합한 광고임을 보장합니다. 앱의 콘텐츠를 공유하는 사용자는 새로운 잠재 고객에게 도달하는 가장 효과적인 방법 중 하나 이므로 좋은 첫인상을 보내고 싶을 것입니다. 이전에는 기기에 앱을 설치하지 않은 사용자에게 일관된 환경을 제공하는 것이 어려웠지만 인스턴트 앱을 사용하면 모든 사람에게  자연스러운 경험을 보장 할 수 있습니다.
  • 인터넷 제한에도 불구하고 사용자가 앱에 액세스할 수 있습니다. 인터넷 이용률은 항상 향상되지만, 때때로 빠르고 안정적인 네트워크를 찾기 위해 때때로 고심하거나, 월간 데이터 허용량에 근접하고 있으며 추가 요금이 발생할 염려가 있습니다. 느리거나 일관성 없는 인터넷 연결로 어려움을 겪고 있는 경우 전체 앱을 다운로드하는 데 많은 시간과 노력이 필요하며 데이터 허용량을 초과할 위험이 있는 경우 새 앱을 다운로드하면 문제가 발생하지 않을 수 있습니다 추가 요금. 모든 인스턴트 앱 모듈은 반드시 4MB 이하 여야 합니다. 따라서 전체 앱을 다운로드해도 문제가 되지 않는 경우에도 인스턴트 앱 모듈에 액세스하는 것이 여전히 실용적인 옵션 일 수 있습니다.
  • 위치 및 시간에 민감한 앱의 매력을 높입니다. 특정 위치 나 이벤트 용으로 설계된 앱은 새로운 개념이 아니지만 자신에게 물어보십시오. 제한된 기간 동안 만 사용 할 수있는 앱을 설치하는 가능성이 얼마나 높습니까? 특정 위치? 인스턴트 앱을 사용하면 사용자가 URL 탭을 통해 앱의 모든 중요한 기능에 액세스 할 수 있으므로 시간과 위치에 민감한 앱의 매력을 높일 수 있습니다.

제한 및 제한사항

인스턴트 앱 여행을 시작하기 전에 현재 인스턴트 앱이 할 수 없는 몇 가지 사항이 있음을 알아 두는 것이 중요합니다.

  • IMEI 및 MAC 주소와 같은 장치 식별자에 액세스합니다.
  • 백그라운드 서비스를 사용하십시오.
  • 백그라운드 알림을 수행하십시오.
  • 장치의 외부 저장소에 액세스합니다.
  • 사용자의 기기에 설치된 앱 목록에 액세스합니다. 단, 특정 앱이 즉시 앱을 검색할 수 있는 경우는 예외입니다.

또한 응용 프로그램은 다음을 수행해야 합니다.

  • 구글 플레이 스토어에서 무료로 다운로드 할 수 있습니다.
  • Android 6.0 (API 레벨 23)에 도입된 새로운 권한 모델을 사용하십시오. 사용자가 인스턴트 앱을 설치하지 않기 때문에 권한을 요청할 기회가 없습니다. 즉각적인 앱 기능 모듈에서 민감한 기기 기능이나 사용자 정보에 액세스해야하는 경우 런타임에 이러한 권한을 요청해야 합니다.
  • 앱 링크 지원. 이는 각 인스턴트 앱 모듈을 특정 URL에 매핑하는데 사용하는 메커니즘입니다. 다음 글에서는 앱 링크에 대해 자세히 다룰 것입니다.

마지막으로 앱이 Designed for Families 프로그램의 일부인 경우 즉시 앱으로 제공할 수 없습니다.

개발 환경 설정

즉각적인 앱 지원을 통해 첫 번째 프로젝트를 만들려면 먼저 다음을 설치해야 합니다.

  • 안드로이드 스튜디오 3.0 프리뷰
  • 안드로이드 SDK 6.0
  • 안드로이드 SDK Build Tools 26.x
  • 안드로이드 SDK Tools 25.x
  • 안드로이드 SDK Platform Tools 25.x

또한 안드로이드 Support Library 및 안드로이드 Repository의 최신 버전을 설치했는지 확인하고 안드로이드 스튜디오의 SDK 관리자를 열고 사용 가능한 업데이트를 설치해야 합니다.

위의 내용 모두를 설치하면 인스턴트 앱 Development SDK를 다운로드 할 수 있습니다.

  • SDK 관리자를 열고 SDK 도구 탭을 선택하십시오.
  • 인스턴트 앱 Development SDK를 선택하십시오.
  • 적용을 클릭하십시오.

현재 안드로이드 6.0 이상을 실행하는 Nexus 5X, Nexus 6P, Pixel, Pixel XL 또는 Galaxy S7에서만 인스턴트 앱을 테스트 할 수 있습니다. 그러나 이러한 장치를 소유하지 않은 경우 AVD가 x86 이미지를 사용해야하며 다음과 같은 몇 가지 조건을 제외하고 이러한 장치 중 하나를 에뮬레이트하는 안드로이드 가상 장치 (AVD)를 만들 수 있습니다. .

필자는 이러한 장치를 소유하지 않기 때문에 Pixel을 에뮬레이트하는 AVD를 만들 예정입니다.

  • AVD Manager를 실행하십시오.
  • Create virtual device... 버튼을 클릭하십시오.
  • 픽셀을 선택하고 다음을 클릭하십시오.
  • x86 이미지 탭을 선택하십시오.
  • 안드로이드 6.0을 실행하고 Marshmallow / 23 / x86 / Android 6.0 (Google API)과 같은 구글 API가 포함 된 시스템 이미지를 선택하십시오.
  • 다음을 클릭하십시오.
  • AVD에 이름을 지정하고 마침을 클릭하십시오.
  • AVD를 실행하십시오.

마지막으로 AVD에서 구글 계정에 로그인해야 합니다.

  • AVD로 전환하고 장치의 실행기를 엽니다.
  • 구글 앱을 선택합니다.
  • Gmail 주소와 비밀번호를 입력하십시오. 이것은 귀하의 실제 계정이거나 안드로이드 프로젝트를 테스트할 목적으로 만 만든 계정일 수 있습니다.

첫 번째 인스턴트 앱 만들기

Android Studio 3.0 Preview 1 이상에서는 인스턴트 앱 지원이 내장된 프로젝트를 만드는 것이 확인란을 선택하는것 만큼 쉽기 때문에 인스턴트 앱 기능을 설명하는것 보다 인스턴트 앱 프로젝트를 만든 다음 이 기사의 나머지 부분에서는 다양한 구성 요소를 직접 경험 해보았습니다.

이 프로젝트에는 앱 링크가 전혀 포함되어 있지 않으므로 AVD에서 인스턴트 앱 구성 요소를 테스트 할 수 없습니다 (자세한 내용은 2 부에서 자세히 설명합니다).

프로젝트를 만들기:

  • 안드로이드 스튜디오 툴바에서 파일 > 새로 만들기> 새 프로젝트...를 선택하거나 안드로이드 스튜디오의 시작 화면에서 새 안드로이드 스튜디오 프로젝트 시작을 클릭하여 프로젝트 만들기 마법사를 시작합니다.
  • 프로젝트 이름을 지정하고 다음을 클릭하십시오.
  • 최소 SDK를 안드로이드 6.0 (Marshmallow)으로 설정합니다.
  • 안드로이드 인스턴트 앱 지원 포함 확인란을 선택하고 다음을 클릭합니다.
  • 일을 단순하게 유지하려면 기본 모듈 이름(기능)을 그대로 사용하고 다음을 클릭하십시오.
  • 기본 활동을 선택하고 다음을 클릭하십시오.
  • 다음 화면에서 모든 기본값을 적용한 다음 마침을 클릭합니다.

바로 이 프로젝트는 일반적인 안드로이드 프로젝트와 매우 다르게 구성되어 있으며 다음과 같은 모듈로 구성되어 있습니다.

  • 앱. 설치 가능한 앱 모듈 (APK 모듈이라고도 함)
  • 베이스. 기본 형상 모듈.
  • 특색. 이 특정 프로젝트에는 하나만 있지만 응용 프로그램은 여러 기능 모듈로 구성될 수 있습니다.
  • 인스턴트앱. 인스턴트 응용 프로그램 모듈.
Projects with instant app support are structured differently to regular installable-only projects

기능 모듈을 제외한 인스턴트 앱을 지원하는 모든 프로젝트에는 위의 모든 모듈이 있어야 하므로 각 모듈을 자세히 살펴보겠습니다.

1. 어플리케이션 모듈

응용 프로그램 모듈의 개념은 새로운 것은 아니지만 프로젝트가 인스턴트 응용 프로그램을 지원할 때 응용 프로그램 모듈의 Manifest는 다음과 같은 경우에 비해 훨씬 비효율적으로 보입니다.

이 파일이 너무 비어있는 이유가 있습니다. 프로젝트를 빌드 할 때 기본 기능기능 모듈 전체에있는 다른 모든 Manifest 파일의 내용이 이 파일과 병합 되므로 영원히 이 파일을 유지할 수 없습니다!

이 모듈의 build.gradle 파일을 열면 두 가지 새로운 요소가 나타납니다.

여기서는 응용 프로그램 모듈이 feature 모듈과 base 모듈에 종속되어 있다고 선언합니다.

인스턴트 앱 지원을 프로젝트에 추가하면 관련 코드와 리소스를 설치 가능한 응용 프로그램과 독립적으로 기능할 수 있는 기능 모듈로 분리합니다. 그러나 이러한 모듈은 별도의 엔티티가 아닌 설치 가능한 응용 프로그램의 일부이므로 응용 프로그램 모듈이 기능 및 기본 모듈을 종속성으로 선언하는 것입니다.

2. 기본 기능 모듈

모든 인스턴트 앱 프로젝트에는 모든 애플리케이션 모듈에서 사용되는 코드와 리소스가 포함된 단일 기본 기능 모듈이 포함되어야 합니다. 예를 들어 프로젝트의 base/res/mipmap 폴더를 열면 여러 모듈에서 명확하게 사용되는 모든 응용 프로그램의 실행 아이콘이 표시됩니다.

The base feature module includes the ic_launcher drawables

공통 코드 및 리소스가 포함되어 있으므로 프로젝트의 모든 기능 모듈은이 단일 기본 기능 모듈에 의존합니다.

이 주제를 계속 진행하면서 기본 기능 모듈에는 전체 프로젝트에서 사용되는 Manifest 항목이 포함됩니다. 예를 들어 프로젝트의 base/src/main/AndroidManifest.xml 파일에는 응용 프로그램의 아이콘, 테마 및 레이블에 대한 설정이 포함되어 있습니다.

다른 주목할 만한 요소는 몇 가지 새로운 속성을 포함하는 기본 모듈의 build.gradle 파일입니다.

또한 이 특정 build.gradle 파일에 applicationID 특성이없고 (지능형 스포일러 경고) 피처 모듈의 build.gradle 파일을 검사할때 똑같은 것을 찾을 수 있습니다. 우리 프로젝트의 applicationID는 응용 프로그램 모듈의 build.gradle 파일에서만 선언됩니다.

기본 모듈의 build.gradle 파일 (위 참조)의 application project(:app) 행은 프로젝트의 단일 applicationID 속성이 모든 build.gradle 파일에 전파되도록 합니다. 따라서 이 속성은 나머지 프로젝트 파일에서 누락됩니다.

3. 피쳐 모듈

결국 인스턴트 앱 지원을 기존 프로젝트에 추가할 때 가장 중요한 작업은 각 기능 모듈에 이 기능만 제공하는 데 필요한 코드와 리소스가 포함되어 있으므로 각 애플리케이션 기능을 자체 기능 모듈로 추출하는 것입니다.

프로젝트의 기능 모듈을 열면 MainActivity 클래스와 activity_maincontent_main 리소스 파일 (기본 활동 템플릿에 포함 된 모든 구성 요소)이 포함되어 있음을 알 수 있습니다.

The projects feature module contains all the code and resources that are specific to this feature

단일 기능 모듈은 여러 활동으로 구성될 수 있지만 각 모듈에는 이 모듈의 진입점 활동으로 지정된 활동이 하나 이상 있어야 합니다.

각 엔트리 포인트 활동은 특정 URL에 매핑되므로 사용자가 이 URL을 탭하면 연결된 활동이 로드되고 사용자는 이 특정 기능 모듈에 액세스 할 수 있습니다.

해당 모듈의 매니페스트를 통해 모듈의 진입 점 활동을 지정합니다. 본질적으로 이 파일을 열고 엔트리 포인트로 사용할 다음을 활동에 추가해야합니다.

  • CATEGORY_LAUNCHERACTION_MAIN 인텐트가 있는 인텐트 필터입니다.
  • 이 엔트리 포인트 활동에 매핑하려는 URL에 대한 모든 <data>가 포함된 요소
  • android:autoVerify 특성입니다. 그러면 앱에 이 URL에 대한 기본 처리기로 작동할 수 있는 권한이 있는지 확인합니다. 이는 URL을 도용하려고 하는 악성 앱으로부터 웹 사이트 소유자를 보호하는데 도움이 되는 중요한 보안 메커니즘입니다.

우리 피쳐 모듈의 매니페스트 파일을 열면 이 코드가 모두 MainActivity 선언에 이미 추가된 것을 볼 수 있습니다 :

이 모듈에서 마지막으로 살펴볼 파일은 몇 줄의 주목할 만한 코드가 들어있는 build.gradle 파일입니다.

모든 피쳐 모듈은 기본 피쳐 모듈에 의존하기 때문에 사용자가 애플리케이션에서 처음으로 피쳐를 요청할 때 기본 피쳐 모듈과 실제로 액세스하려고하는 피쳐 모듈을 받게됩니다.

이 특정 프로젝트가 기본 피쳐 모듈과 피쳐 모듈로 구성되어 있지만 앱에 인스턴트 앱으로 사용할 수 있는 기능이 하나만 있는 경우 기본 피쳐 모듈만으로 구성된 프로젝트를 만들 수 있습니다 . 우리는 이 시리즈에서 인스턴트 앱 프로젝트의 "유형"을 모두 살펴볼 것입니다.

4. 인스턴트 앱 모듈

인스턴트 앱 모듈은 모든 기능 모듈을 가져 와서 인스턴트 앱 APK로 변환하는 컨테이너 역할을 하는 간단한 목적을 가지고 있습니다.

이 프로젝트의 인스턴트 응용 프로그램 모듈을 열면 기본 기능 모듈과 기능 모듈을 종속성으로 선언하는 build.gradle 파일과 별개로 매우 비어 있습니다.

앱 테스트하기

이 프로젝트에는 앱 링크가 포함되어 있지 않으므로 인스턴트 앱 구성 요소를 테스트 할수는 없지만 이 프로젝트는 설치 가능한 앱으로 계속 실행할 수 있습니다. 이것은 특히 흥미로울것 같지 않지만, 우리 프로젝트의 코드와 리소스의 상당 부분이 인스턴트 앱 기능 모듈에 위치한다는 것을 염두에 두면서 프로젝트가 설치 가능한 애플리케이션으로 어떻게 작동하는지 테스트하는 것이 중요합니다.

이전에 생성 한 AVD를 실행하거나 호환되는 실제 안드로이드 스마트 폰 또는 태블릿을 개발 컴퓨터에 연결 한 다음 안드로이드 스튜디오 도구 모음에서 실행 > 실행 ... > 앱을 선택합니다.

MainActivity 코드가 모두 기능 모듈에 있음에도 불구하고 응용 프로그램이 로드되면 MainActivity의 부동 작업 단추(FAB)와 Hello World 메시지가 표시됩니다. 여기서 볼 수 있는 것은 응용 프로그램 모듈이 개별 인스턴트 응용 프로그램 기능 및 기본 기능 모듈에 있는 코드와 리소스를 가져와서 설치 가능한 응용 프로그램에 결합하는 것입니다.

결론

이 튜토리얼에서 우리는 인스턴트 앱의 작동 방식에 대해 자세히 살펴본 다음 안드로이드 프로젝트에 인스턴트 앱 지원을 추가해야 하는 이유에 대해 살펴 보았습니다.

이상적인 세상에서 인스턴트 앱을 탐색하기 시작한 결정은 새로운 안드로이드 프로젝트의 시작과 완전히 일치하지만 불행히도 개발자가 되는 것은 거의 없습니다. 인스턴트 앱을 지원하기 위해 기존 프로젝트를 재구성해야 할 가능성이 훨씬 더 높습니다. 안드로이드 스튜디오의 프로젝트 생성 마법사에서 체크 박스를 선택하는 것만큼 간단하지는 않습니다!

다음 글에서는 기존 프로젝트에 즉석 앱 지원을 추가하는 방법에 대해 자세히 살펴볼 것입니다. 또한 앱 링크 구현 방법을 보여줄 것이므로 다음 포스트가 끝날 때까지 호환 가능한 AVD 또는 안드로이드 장치에서 실행 및 테스트 할 수있는 완전한 기능의 인스턴트 앱을 만들게 됩니다.

계속 지켜봐주세요! 그리고 그 동안 안드로이드 앱 개발에 대한 다른 게시물을 확인하십시오.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.