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.
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.
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.
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:
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:
I tillegg må søknaden din:
Til slutt, hvis appen din er en del av programmet Designed for Families, kan du ikke tilby det som et øyeblikkelig app.
Før du kan opprette ditt første prosjekt med øyeblikkelig appstøtte, må du ha følgende eller høyere installert:
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:
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:
Til slutt må du logge på en Google-konto på AVD-en din:
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:
Umiddelbart ser vi at dette prosjektet er strukturert svært forskjellig fra det typiske Android-prosjektet, og består av følgende moduler:
Med unntak av funksjonsmodulen, kan ethvert prosjekt som støtter øyeblikkelige apper må ha alle de ovennevnte modulene, så la oss utforske hver av disse modulene i detalj.
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.
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.
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:
CATEGORY_LAUNCHER
og ACTION_MAIN
hensikter.
element som inneholder all informasjon om nettadressen du vil legge til i denne inngangspunktsposisjonen. 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.
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')
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 aktivitet
s 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.
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.
.