Hva er Android Instant Apps?

Hver gang du slipper en Android-app, har du minst en grov ide om hva du vil at denne appen skal oppnå. 

Disse målene kan være svært spesifikke, for eksempel å generere en viss mengde annonseomsetning i første kvartal, eller de kan være mer generelle, for eksempel å få en høy vurdering på Google Play..

Uansett hva som er på din ønskeliste, får du din app foran så mange brukere som mulig alltid kommer til å fungere et sted på den listen - og Android Instant Apps er en ny funksjon som kan hjelpe deg med å gjøre nettopp det.

Instant Apps gir deg en helt ny måte å nå brukere på som ikke har appen din nå installert på enheten deres, ved å gjøre appen din mulig og tilgjengelig fra alle steder som støtter nettadresser, inkludert e-post, Google-søkeresultat, innlegg på sosiale medier plattformer, YouTube-kommentarer og fora.

I hovedsak kan Instant Apps du skille hver appens funksjoner til en frittstående modul. Brukere kan deretter laste inn noen av disse øyeblikkelige appmodulene på forespørsel ved å trykke på en nettadresse du har kartlagt til denne bestemte modulen, og uten måtte installere appen din når som helst.

I denne tredelte serien vil jeg vise deg hvordan du legger til Instant App-støtte til Android-prosjektene dine. Ved slutten av denne serien har du opprettet et program som består av to separate Instant App-funksjonmoduler, som du kan starte og teste på en kompatibel Android-enhet. 

Hva vi skal dekke

I dette første innlegget vil jeg fokusere på hvilke Instant Apps som er, hvordan de fungerer, og hvorfor du burde bryr seg om dem. For å gi deg noen førstehånds erfaring med Instant Apps, bruker vi Android Studio's prosjektopprettelsesveiviser til å generere en app som er forhåndskonfigurert med Instant App-støtte, slik at du kan se alle de forskjellige Instant App-komponentene, heller enn å bare lese om dem.

Mens du oppretter en app som er forhåndskonfigurert med Instant App-støtte, er den raskeste og enkleste måten å bruke denne funksjonen på, i virkeligheten er du langt mer sannsynlig å legge til øyeblikkelig app-støtte til et eksisterende prosjekt, så i del to viser jeg deg hvordan å gjøre akkurat det Jeg vil levere en app som du kan laste ned fra GitHub, og deretter ta deg gjennom trinnvis prosess for å omkonfigurere dette prosjektet for å støtte Instant Apps.

Det siste stykket av puslespillet skaper en multi-funksjonell Instant App, så i del tre viser jeg deg hvordan du legger til en andre funksjonsmodul i søknaden din, og hvordan du bruker Android App Links til å kartlegge denne modulen til en annen URL. 

Hva er Instant Apps?

En av de beste måtene å beskrive Instant Apps er å se på et eksempel på når du kan bruke dem.  

Tenk deg at en venn har sendt deg en link til en kattvideo som de lover at du skal kjærlighet, men når du klikker på koblingen blir det klart at du må laste ned en app før du kan se denne videoen.  

Uansett om du ender med å laste ned appen, eller ignorere koblingen og risikere å gå glipp av den beste kattvideoen Internett har å tilby, er dette en dårlig brukeropplevelse - og det er et scenario som mange Android-brukere er kjent med. 

De fleste av oss har hatt erfaring med å installere en app bare for å fullføre en engangsoppgave. For eksempel kan du laste ned en app bare for å se et e-postvedlegg som noen har sendt deg, for å fullføre et kjøp på et bestemt nettsted, eller for å spore en pakke som nå vinger seg til adressen din.

La oss nå forestille oss vårt kattevideoscenario igjen, men denne gangen har programmets utvikler lagt inn all koden og ressursene som kreves for å spille av videoinnhold i sin egen direktemodulmodul, og kartlagt denne modulen på www.example.com/video-nettadressen. Denne gangen, når du trykker på www.eksempel.no/video/cat-video, gjenkjenner Google Play at denne nettadressen er tilknyttet en direktappmodul og henter all koden og ressursene du trenger for å spille av denne videoen. Sluttresultatet? Du kan nyte 20 sekunder av en katt som spiller i en boks uten å måtte installere noe, noe som er a mye bedre brukeropplevelse.  

Hvorfor skal jeg begynne å bruke Instant App-funksjonen?

Som du ser i neste innlegg i denne serien, legger du til Instant App-støtte for et eksisterende prosjekt, kan være en skremmende prosess, og krever ofte at du endrer måten applikasjonen din er strukturert på..

Siden omlegging av et prosjekt er ikke en beslutning du bør ta lett, i dette avsnittet skal jeg hjelpe deg med å avgjøre om all den tid og krefter virkelig er verdt det, ved å dekke alle de store fordelene med å legge til Instant App-støtte til din prosjekter:

  • Det fjerner en barriere mellom appen din og nye brukere. Det er ikke en spesielt vanskelig eller tidkrevende prosess å installere et program via Google Play, men det er fortsatt den største hindringen mellom appen din og potensielle nye brukere. Uansett hvor mye tid du bruker til å lage en overbevisende Google Play-side som får flest brukere til å kryptere for det Installere knappen, noen vil alltid slipp ut på installasjonstidspunktet. 
  • Det hjelper deg med å nå nye brukere. Mens du alltid har vært i stand til å markedsføre appen din på forskjellige steder rundt på nettet, for eksempel din egen nettside, blogg eller sosiale medier, har du tidligere hevdet at de besøkte appens Google Play-side på et tidspunkt (med sjeldne unntak fra brukere som foretrekker å sidelaste sine apper). Instant apps fjerner dette avhengigheten av appens Google Play-side ved å gjøre programmet direkte tilgjengelig fra alle steder som støtter nettadresser, noe som gir deg nesten ubegrensede muligheter til å koble til nye brukere. 
  • Det sikrer at delt innhold er best mulig reklame for appen din. En bruker som deler appens innhold, er en av de mest effektive måtene for å nå et nytt publikum, så du vil gjøre et godt førsteinntrykk! Tidligere har det vært vanskelig å gi en konsekvent opplevelse for brukere som ikke har appen din installert på enheten, men øyeblikkelige apper lar deg garantere en sømløs, opprinnelig opplevelse for alle.
  • Hjelper brukere å få tilgang til appen din, selv i møte med begrensninger på Internett. Mens Internett-dekning er bedre hele tiden, kan du likevel av og til kjempe for å finne et raskt og pålitelig nettverk, eller kanskje du nærmer deg den månedlige dataregningen og er bekymret for å pådra seg ekstra kostnader. Når du sliter med en treg eller inkonsekvent Internett-tilkobling, kan det hende at nedlasting av en hel app kan være en tidkrevende og frustrerende prosess, og når du er i fare for å gå over datatilskuddet, kan det hende at du kan laste ned en ny app for å pådra deg tilleggskostnader. Alle øyeblikkelige app moduler være 4MB eller mindre, så selv om nedlasting av en hel app er ute av spørsmålet, kan tilgang til et øyeblikkelig appmodul fortsatt være et levedyktig alternativ. 
  • Øk appell av plassering og tidsfølsomme apper. Mens programmer som er utformet for et bestemt sted eller arrangement, ikke er et nytt konsept, spør deg selv: Hvor sannsynlig er jeg å installere en app som jeg vet at jeg bare kan bruke for en begrenset periode, eller i en bestemt sted? Instant apps kan øke appell av tid og plasseringsfølsomme apper, ved å la brukeren få tilgang til alle appens viktigste funksjonalitet ved å trykke på en nettadresse. 

Begrensninger og begrensninger

Før vi starter vår øyeblikkelige app-reise, er det verdt å merke seg at det for øyeblikket er noen få ting som øyeblikkelig apper kan ikke gjøre:

  • Få tilgang til enhetsidentifikatorer som IMEI- og MAC-adresser.
  • Bruk bakgrunnstjenester.
  • Utfør bakgrunnsbeskjeder. 
  • Få tilgang til enhetens eksterne lagring.
  • Få tilgang til listen over apper som er installert på brukerens enhet, med mindre disse programmene har gjort det mulig å finne dem til øyeblikkelige apper.

I tillegg må søknaden din: 

  • Du kan laste ned gratis fra Google Play-butikken.
  • Bruk den nye tillatelsesmodellen som ble introdusert i Android 6.0 (API-nivå 23). Siden brukeren ikke installerer et øyeblikkelig app, er det ingen mulighet til å be om tillatelser opp foran. Hvis din instant app-funksjonsmodul (e) krever tilgang til sensitiv enhetskapasitet eller brukerinformasjon, må du be om disse tillatelsene på kjøretid. 
  • Support App Links. Dette er mekanismen du vil bruke til å kartlegge hver av dine direktappmoduler til en bestemt nettadresse. Jeg vil dekke App Links i detalj i neste innlegg. 

Til slutt, hvis appen din er en del av programmet Designed for Families, kan du ikke tilby det som et øyeblikkelig app. 

Sette opp utviklingsmiljøet

Før du kan opprette ditt første prosjekt med øyeblikkelig appstøtte, må du ha følgende eller høyere installert:

  • Android Studio 3.0 forhåndsvisning
  • Android SDK 6.0
  • Android SDK Build Tools 26.x
  • Android SDK-verktøy 25.x
  • Android SDK Plattform Verktøy 25.x

Du bør også sørge for at du har de nyeste versjonene av Android Support Library og Android Repository, så åpne Android Studio SDK Manager og installer alle tilgjengelige oppdateringer. 

Når du har installert alt ovenfor, kan du laste ned SDK for umiddelbar applikasjonsutvikling: 

  • Åpne SDK Manager, og velg SDK verktøy tab. 
  • Å velge Instant Apps Development SDK.
  • Klikk Søke om.

For øyeblikket kan du bare teste øyeblikkelige apper på en Nexus 5X, Nexus 6P, Pixel, Pixel XL eller en Galaxy S7 som kjører Android 6.0 eller høyere. Men hvis du ikke eier noen av disse enhetene, kan du opprette en Android Virtual Device (AVD) som emulerer en av disse enhetene, med noen få forhold: AVD må bruke et x86-bilde, og det må inneholde Google APIs.

Siden jeg ikke eier noen av disse enhetene, skal jeg lage en AVD som emulerer et Pixel: 

  • Start AVD Manager.
  • Klikk på Opprett virtuell enhet ... knapp.
  • Å velge pixel, og klikk deretter neste.
  • Velg x86 bilder tab. 
  • Velg et systembilde som kjører Android 6.0, og inkluderer for eksempel Google APIs Marshmallow / 23 / x86 / Android 6.0 (Google APIs).
  • Klikk neste.
  • Gi ditt AVD et navn, og klikk Bli ferdig.
  • Start din AVD.

Til slutt må du logge på en Google-konto på AVD-en din:

  • Bytt til AVD, og ​​åpne enhetens startprogram.
  • Velg Google app.
  • Skriv inn en Gmail-adresse og et passord. Dette kan enten være din virkelige konto eller en konto du har opprettet utelukkende for å teste dine Android-prosjekter. 

Opprette din første øyeblikkelige app 

I Android Studio 3.0 Forhåndsvisning 1 og høyere, er å lage et prosjekt som har innebygd Instant App-støtte, like enkelt som å velge en avkrysningsboks, så i stedet for bare å beskrive Instant App-funksjoner, skal vi lage et Instant App-prosjekt og deretter bruke Resten av denne artikkelen får noen førstehånds erfaring med sine ulike komponenter. 

Bare vær oppmerksom på at dette prosjektet ikke inneholder noen App Links, så du vil ikke kunne teste sine Instant App-komponenter på AVD-en din (dette er noe vi vil undersøke i detalj i del to).

Å opprette prosjektet ditt:

  • Start opprettelsesveiviseren for prosjektet, enten ved å velge Fil> Nytt> Nytt prosjekt ... fra Android Studio-verktøylinjen, eller ved å klikke Start et nytt Android Studio-prosjekt fra Android Studio Velkommen skjerm. 
  • Gi prosjektet et navn, og klikk neste
  • Sett Minimum SDK til Android 6.0 (Marshmallow). 
  • Velg Inkluder Android Instant App Support boksen og klikk neste
  • For å holde ting enkelt, godta standardmodulnavnet (trekk) og klikk deretter neste.
  • Å velge Grunnaktivitet og klikk deretter neste.
  • På neste skjermbilde, godta alle standardverdiene, og klikk deretter Bli ferdig.

Umiddelbart ser vi at dette prosjektet er strukturert svært forskjellig fra det typiske Android-prosjektet, og består av følgende moduler:

  • app. Den installerbare appmodulen, også kjent som en APK-modul. 
  • Utgangspunkt. Basisfunksjonsmodulen.
  • Trekk. Selv om dette prosjektet bare har en, kan en applikasjon bestå av flere funksjonsmoduler.
  • Instantapp. Den øyeblikkelige appmodulen. 

Med unntak av funksjonsmodulen, kan ethvert prosjekt som støtter øyeblikkelige apper ha alle de ovennevnte modulene, så la oss utforske hver av disse modulene i detalj.  

1. Application Module

Konseptet med en applikasjonsmodul kan ikke være noe nytt, men når prosjektet støtter øyeblikkelige apper, ser applikasjonsmodulets manifest seg mye tomere ut enn du sannsynligvis pleide å: 

Det er en grunn til at denne filen er så tom: Når du bygger prosjektet, inneholder innholdet i alle de andre Manifest-filene som er plassert gjennom hele basen funksjonen og trekk moduler slås sammen med denne filen, så det kommer ikke til å forbli dette tomt for alltid! 

Hvis du åpner denne modulens build.gradle fil, så vil du legge merke til to nye elementer: 

avhengighet implementeringsprosjekt (': funksjon') implementeringsprosjekt (': base')

Her erklærer vi at vår applikasjonsmodul har en avhengighet av trekk modul og utgangspunkt modul. 

Når du legger til Instant App-støtte til et prosjekt, adskiller du relatert kode og ressurser til funksjonsmoduler som kan fungere uavhengig av installerbar applikasjon. Disse modulene er imidlertid fortsatt deler av din installerbare app, i stedet for atskilte enheter, og derfor er vår programmodul deklarert funksjonen og basismodulene som avhengigheter.

2. Basisfunksjonsmodul

Ethvert øyeblikkelig app-prosjekt må inneholde en enkelt basenhetsmodul, som inneholder koden og ressursene som brukes over alle programmets moduler. For eksempel, hvis du åpner prosjektet vårt base / res / mipmap mappe, så ser du alle programmets lanseringsikoner, som tydeligvis skal brukes på flere moduler. 


Siden den inneholder felles kode og ressurser, alle av prosjektets funksjonsmoduler avhenger av denne enkeltbaserte funksjonsmodulen. 

Ved å fortsette dette temaet inneholder basenhetsmodulen de manifeste oppføringene som brukes over hele prosjektet. For eksempel er prosjektet ditt base / src / main / AndroidManifest.xml filen inneholder innstillingene for programmets ikon, tema og etikett: 

   

Det andre bemerkelsesverdige elementet er basemodulen build.gradle fil, som inneholder noen få nye attributter:

// Alle basefunksjoner og "vanlige" funksjonsmoduler bruker plug.android.feature plugin, i stedet for com.android.application plugin // bruke plugin: 'com.android.feature' android compileSdkVersion 26 buildToolsVersion "26.0.0 "// Angi at dette er prosjektets eneste basefunksjon, ved hjelp av" baseFeature true "uttrykk // baseFeature true ... ... ... avhengighet // Bruk 'applikasjonsprosjekt' for å legge til en avhengighet fra basenhetsmodulen til din prosjektets installerbare 'app'-modul // søknadsprosjekt (': app ') // Bruk' -funksjonsprosjekt 'for å referere til prosjektets funksjonsmodul, passende navn' feature '// feature project (': feature ') 

Du vil også legge merke til at dette build.gradle filen mangler en applicationlD attributt og (spoilervarsel) finner du nøyaktig det samme når vi kommer til å inspisere vår funksjonsmodul build.gradle fil. Vårt prosjekt er applicationlD er erklært i søkemodulen build.gradle fil bare.

De søknadsprosjekt (:app) linje i vår basemodul build.gradle fil (se ovenfor) sikrer at prosjektet er enkelt applicationlD Attributtet er spredt over alle av vår build.gradle filer, og derfor mangler dette attributtet fra resten av prosjektet. 

3. Funksjonsmodul

Når du til slutt kommer til å legge til Instant App-støtte til et eksisterende prosjekt, vil din største oppgave utvinne hver av programmets funksjoner i sin egen funksjonsmodul, da hver funksjonsmodul inneholder koden og ressursene som kreves for å levere denne funksjonen bare. 

Hvis du åpner prosjektet vårt trekk modul, så ser du at den inneholder Hoved aktivitet klasse, pluss activity_main og content_main ressursfiler - i hovedsak alle komponentene som er inkludert i Grunnaktivitet mal.  

En enkeltfunksjonsmodul kan bestå av flere aktiviteter, men hver modul må ha minst én aktivitet som er angitt som denne modulens inngangspunkt Aktivitet. 

Hver tilgangspunkt Aktivitet er kartlagt til en bestemt nettadresse, slik at når brukeren tapper denne nettadressen, laster den den tilknyttede aktiviteten og brukeren har tilgang til denne bestemte funksjonsmodulen. 

Du angir en modulens inngangspunkt Aktivitet via denne modulens manifest. I hovedsak må du åpne denne filen og legge til følgende for Aktiviteten du vil bruke som inngangspunkt: 

  • Et hensiktfilter, med CATEGORY_LAUNCHER og ACTION_MAIN hensikter.
  • EN element som inneholder all informasjon om nettadressen du vil legge til i denne inngangspunktsposisjonen. 
  • De android: autoVerify Egenskap. Dette forteller at systemet skal kontrollere at appen din har tillatelse til å fungere som standardbehandler for denne nettadressen. Dette er en viktig sikkerhetsmekanisme som bidrar til å beskytte nettstedseiere fra ondsinnede apper som kan prøve å kapre deres nettadresser.

Hvis du åpner vår funksjonsmoduls manifestfil, ser du at all denne koden allerede er lagt til i vår Hoved aktivitet erklæring:

            

Den endelige filen vi skal se på i denne modulen er build.gradle fil, som inneholder noen få linjer med bemerkelsesverdig kode: 

// Igjen, bruker vi com.android.feature plugin, heller enn com.android.application // bruker plugin: 'com.android.feature' android // Som tidligere nevnt, mangler denne delen en 'applicationID' attributt // ... ... ... avhengigheter implementation fileTree (dir: 'libs', inkluderer: ['* .jar']) androidTestImplementation ('com.android.support.test.espresso: espressokjerne: 2.2.2' ekskluder gruppe: 'com.android.support', modul: 'support-annotations') // Alle funksjonsmoduler har en avhengighet av basenhetsmodulen, som vi erklærer her // gjennomføringsprosjekt (': base') testimplementasjon 'juni: juni: 4,12' 

Siden alle funksjonene er avhengig av basenhetsmodulen, første gang brukeren ber om det noen funksjonen fra søknaden din, vil de motta basenhetsmodulen i tillegg til funksjonen modulen de faktisk prøver å få tilgang til. 

Vær oppmerksom på at selv om dette prosjektet består av en basenhetsmodul og en funksjonsmodul, hvis appen din bare har en funksjon som du vil gjøre tilgjengelig som en øyeblikkelig app, er det mulig å opprette et prosjekt som består av en basefunksjonsmodul bare. Vi ser på begge "typer" av Instant App-prosjektet gjennom hele denne serien. 

4. Instant App Module

Instant App-modulen har et enkelt formål: det fungerer som en beholder som tar alle dine funksjonsmoduler og gjør dem til Instant App APKs.

Hvis du åpner dette prosjektets Instant App-modul, ser du at det er ganske tomt bortsett fra en build.gradle fil, som bare erklærer din basenhetsmodul og din funksjonsmodul som avhengigheter:

bruke plugin: 'com.android.instantapp' avhengigheter implementeringsprosjekt (': feature') implementeringsprosjekt (': base')

Teste appen din

Siden dette prosjektet ikke inneholder noen Applänkar, kan vi ikke teste sine øyeblikkelige appkomponenter, men vi kan fortsatt kjøre dette prosjektet som en installerbar app. Dette virker kanskje ikke spesielt spennende, men med tanke på at hoveddelen av prosjektets kode og ressurser er plassert i øyeblikkelig app-funksjonen, er det viktig å teste hvordan vårt prosjekt fungerer som en installerbar applikasjon. 

Start AVDen vi opprettet tidligere, eller koble en kompatibel, fysisk Android-smarttelefon eller -tablet til utviklingsmaskinen din, og velg deretter Kjør> Kjør ...> app fra Android Studio-verktøylinjen. 

Til tross for at alle våre Hoved aktivitet Koden er plassert i funksjonsmodulen, når vår app laster, ser du Hoved aktivitets flytende handlingsknapp (FAB) og Hei Verden budskap. Det vi ser her er vår applikasjonsmodul som tar kode og ressurser som er plassert i separate Instant App-funksjon og basenhetsmoduler, og kombinerer dem med en installerbar app. 

Konklusjon 

I denne opplæringen tok vi et høyt nivå på hvordan Instant Apps fungerer, og utforsket de ulike grunnene til at du kanskje vil legge til Instant App-støtte til Android-prosjektene dine. 

I en ideell verden, vil din beslutning om å begynne å utforske Instant Apps helt falle sammen med starten på et nytt Android-prosjekt, men dessverre er det bare en utvikler som er praktisk! Det er langt mer sannsynlig at du må omkonfigurere et eksisterende prosjekt for å støtte Instant Apps, som ikke er det ganske så enkelt som å velge en avkrysningsboks i Android Studios prosjektopprettelsesveiviser! 

I neste innlegg, tar vi en grundig titt på hvordan du legger til øyeblikkelig appstøtte til et eksisterende prosjekt. Jeg vil også vise deg hvordan du implementerer App Links, så ved slutten av neste innlegg har du opprettet en fullt fungerende Instant App som du kan starte og teste på en kompatibel AVD eller Android-enhet. 

.