Vad är Android Instant Apps?

Varje gång du släpper en Android-app får du åtminstone en grov uppfattning om vad du vill att den här appen ska uppnå. 

Dessa mål kan vara mycket specifika, till exempel att generera en viss mängd annonsintäkter under första kvartalet, eller de kan vara mer allmänna, till exempel att få en hög betyg på Google Play..

Vad som helst annat på din önskelista är att få din app framför så många användare som möjligt alltid kommer att visas någonstans på den listan - och Android Instant Apps är en ny funktion som kan hjälpa dig att göra just det.

Instant Apps ger dig ett helt nytt sätt att nå användare som för närvarande inte har din app installerad på sin enhet genom att göra din app upptäckbar och tillgänglig från alla platser som stöder webbadresser, inklusive e-postmeddelanden, sökresultat från Google, inlägg på sociala medier plattformar, YouTube-kommentarer och forum.

I huvudsak tillåter Instant Apps dig att skilja varje apps funktioner till en fristående modul. Användare kan sedan ladda någon av dessa snabbprogrammoduler på begäran genom att peka på en webbadress som du har mappat till den här specifika modulen, och utan måste installera din app när som helst.

I den här tredelade serien visar jag dig hur du lägger till Instant App-stöd för dina Android-projekt. I slutet av denna serie har du skapat en applikation som består av två separata Instant App-funktionsmoduler, som du kan starta och testa på alla kompatibla Android-enheter. 

Vad vi ska täcka

I det här första inlägget fokuserar jag på vilka Instant Apps är, hur de fungerar, och varför du bör bry sig om dem. För att ge dig en handledd erfarenhet av Instant Apps använder vi Android Studios projektguiden för att generera en app som är konfigurerad med Instant App-stöd så att du kan se alla olika Instant App-komponenter, snarare än att bara läsa om dem.

Medan du skapar en app som är konfigurerad med Instant App-stöd, är det snabbaste och enklaste sättet att använda den här funktionen. I verkligheten är du mycket mer sannolikt att lägga till Instant App-stöd till ett befintligt projekt, så i del två visar jag dig hur man gör exakt det. Jag levererar en app som du kan ladda ner från GitHub och sedan ta dig igenom steg-för-steg-processen för att omkonfigurera detta projekt för att stödja Instant Apps.

Det sista stycket av pusslet skapar en multi-featured Instant App, så i del tre visar jag dig hur du lägger till en andra funktionen modul i din applikation och hur du använder Android App Links för att mappa denna modul till en annan webbadress. 

Vad är Instant Apps?

Ett av de bästa sätten att beskriva Instant Apps är att titta på ett exempel på när du kan använda dem.  

Tänk dig att en vän har skickat dig en länk till en kattvideo som de lovar att du ska kärlek, men när du trycker på länken blir det klart att du måste ladda ner en app innan du kan titta på den här videon.  

Oavsett huruvida du äntligen hämtar appen, eller ignorerar länken och riskerar att sakna den bästa kattvideo som Internet har att erbjuda, är det en dålig användarupplevelse - och det är ett scenario som många Android-användare känner till. 

De flesta av oss har haft erfarenhet av att installera en app bara för att slutföra en engångsuppgift. Du kan till exempel ladda ner en app bara för att se en bifogad e-post som någon har skickat dig, för att slutföra ett köp på en viss webbplats eller för att spåra ett paket som nu vänder sig till din adress.

Låt oss nu föreställa oss vårt kattvideoscenario igen, men den här gången har programmets utvecklare placerat all kod och resurser som krävs för att spela videoinnehåll i sin egen snabbappsfunktionsmodul och mappade denna modul till www.example.com/video-webbadressen. Den här gången, när du trycker på www.example.com/video/cat-video, erkänner Google Play att den här webbadressen är associerad med en snabbappmodul och hämtar all kod och resurser som du behöver spela den här videon. Slutresultatet? Du kan njuta av 20 sekunder av en katt som spelar i en låda utan att behöva installera något, vilket är a mycket bättre användarupplevelse.  

Varför ska jag börja använda Instant App-funktionen?

Som du ser i nästa inlägg i den här serien kan du lägga till Instant App-stöd för ett befintligt projekt, vilket kan vara en skrämmande process, vilket ofta kräver att du ändrar helt hur ditt program är strukturerat.

Eftersom omstrukturering av ett projekt inte är ett beslut bör du någonsin ta det lätt. I det här avsnittet ska jag hjälpa dig att bestämma om all den tid och ansträngning verkligen är värt, genom att täcka alla stora fördelar med att lägga till Instant App-stöd till din projekt:

  • Det tar bort ett hinder mellan din app och nya användare. Installera en applikation via Google Play är inte en särskilt svår eller tidskrävande process, men det är fortfarande den största barriären mellan din app och potentiella nya användare. Oavsett hur mycket tid du spenderar skapar en övertygande Google Play-sida som får de flesta användare att krympa för det Installera knapp, vissa människor kommer alltid släpp ut vid installationstiden. 
  • Det hjälper dig att nå nya användare. Medan du alltid har kunnat marknadsföra din app på olika platser runt om i världen, till exempel din egen webbplats, blogg eller sociala medier, har du tidigare anslutit sig till dem på din apps Google Play-sida vid någon tidpunkt (med sällsynt undantag för användare som föredrar att sidlösa sina appar). Instant apps tar bort detta beroende på appens Google Play-sida genom att göra din applikation direkt tillgänglig från vilken plats som helst som stöder webbadresser, vilket ger dig nästan obegränsade möjligheter att ansluta till nya användare. 
  • Det säkerställer att delat innehåll är den bästa möjliga annonsen för din app. En användare som delar din apps innehåll är ett av de mest effektiva sätten att nå en ny publik, så du vill göra ett bra första intryck! Tidigare har det varit svårt att tillhandahålla en konsekvent upplevelse för användare som inte har din app installerad på sin enhet, men omedelbara appar kan du garantera en sömlös, inbyggd upplevelse för alla.
  • Hjälper användarna att komma åt din app, även om Internet begränsas. Medan Internet-täckningen förbättras hela tiden, kan du fortfarande tillfälligt kämpa för att hitta ett snabbt och pålitligt nätverk, eller kanske närmar du ditt månatliga datortillägg och är oroad över att det uppstår extra avgifter. När du kämpar med en långsam eller inkonsekvent Internetanslutning kan nedladdning av en hel app vara en tidskrävande och frustrerande process. När du riskerar att gå över din datortillägg kan det hända att du laddar ner en ny app för att ådra sig extra avgifter. Alla snabb app moduler måste vara 4MB eller mindre, så även om nedladdning av en hel app är oavsett frågan kan det fortfarande vara ett lönsamt alternativ att få tillgång till en snabb appmodul. 
  • Öka överklagandet av plats och tidskänsliga appar. Medan appar som är avsedda för en viss plats eller händelse inte är ett nytt koncept, fråga dig själv: Hur troligt kan jag installera en app som jag vet att jag bara kan använda under en begränsad tid, eller i en viss plats? Instant apps kan öka appelleringen av tid och platskänsliga appar, genom att låta användaren få åtkomst till all din apps viktigaste funktionalitet vid kran på en URL. 

Begränsningar och begränsningar

Innan vi börjar vår snabba appresa är det värt att notera att det för närvarande finns några saker som omedelbara appar kan inte do:

  • Åtkomst-ID-enheter som IMEI- och MAC-adresser.
  • Använd bakgrundstjänster.
  • Utför bakgrundsanmälningar. 
  • Öppna enhetens externa lagring.
  • Öppna listan över appar som är installerade på användarens enhet, om inte de här programmen har gjort sig synliga för direktprogram.

Dessutom måste din ansökan: 

  • Du kan ladda ner gratis från Google Play Butik.
  • Använd den nya behörighetsmodellen som introducerades i Android 6.0 (API-nivå 23). Eftersom användaren inte installerar en snabb app, finns det ingen möjlighet att begära behörigheter framåt. Om din snabbappfunktionsmodul (er) kräver tillgång till känslig enhetskapacitet eller användarinformation, måste du begära dessa behörigheter vid körning. 
  • Support App Länkar. Det här är den mekanism som du ska använda för att kartlägga alla dina snabbappmoduler till en specifik URL. Jag kommer att täcka App Links i detalj i nästa inlägg. 

Om din app är en del av programmet Designed for Families kan du inte erbjuda det som en snabb app. 

Ställa in din utvecklingsmiljö

Innan du kan skapa ditt första projekt med snabb appsupport måste du ha installerat följande eller högre:

  • Android Studio 3.0 Preview
  • Android SDK 6.0
  • Android SDK Build Tools 26.x
  • Android SDK-verktyg 25.x
  • Android SDK-plattformsverktyg 25.x

Du bör också se till att du har de senaste versionerna av Android Support Library och Android Repository, så öppna Android Studio SDK Manager och installera alla tillgängliga uppdateringar. 

När du har installerat allt ovan kan du hämta SDK för direktansluten utveckling: 

  • Öppna SDK Manager och välj SDK-verktyg flik. 
  • Välj Instant Apps Development SDK.
  • Klick Tillämpa.

För närvarande kan du bara testa omedelbara appar på en Nexus 5X, Nexus 6P, Pixel, Pixel XL eller en Galaxy S7 som kör Android 6.0 eller senare. Men om du inte äger någon av dessa enheter kan du skapa en Android Virtual Device (AVD) som emulerar en av dessa enheter med några villkor: AVD måste använda en x86-bild och den måste innehålla Google API: er.

Eftersom jag inte äger någon av dessa enheter ska jag skapa en AVD som emulerar en Pixel: 

  • Starta AVD-hanteraren.
  • Klicka på Skapa virtuell enhet ... knapp.
  • Välj pixel, och klicka sedan på Nästa.
  • Välj x86 bilder flik. 
  • Välj en systembild som kör Android 6.0 och innehåller exempelvis Google API: er Marshmallow / 23 / x86 / Android 6.0 (Google APIs).
  • Klick Nästa.
  • Ge ditt AVD ett namn och klicka Avsluta.
  • Starta din AVD.

Slutligen måste du logga in på ett Google-konto på din AVD:

  • Byt till din AVD, och öppna enhetens startprogram.
  • Välj Google app.
  • Ange en Gmail-adress och ett lösenord. Det här kan antingen vara ditt verkliga konto eller ett konto du skapat enbart för att testa dina Android-projekt. 

Skapa din första direktanslutning 

I Android Studio 3.0 Förhandsgranskning 1 och senare skapar ett projekt som har inbyggt Instant App-stöd så enkelt som att välja en kryssruta, så snarare än att bara beskriva Instant App-funktioner ska vi skapa ett Instant App-projekt och sedan spendera Resten av denna artikel får lite förståndsupplevelse med sina olika komponenter. 

Var bara medveten om att det här projektet inte innehåller några Applänkar, så att du inte kommer att kunna testa sina Instant App-komponenter på din AVD (det här kommer vi att undersöka i detalj i del två).

För att skapa ditt projekt:

  • Starta projektguiden, antingen genom att välja Arkiv> Nytt> Nytt projekt ... från Android Studio-verktygsfältet eller genom att klicka på Starta ett nytt Android Studio-projekt från Android Studio Välkommen skärm. 
  • Ge ditt projekt ett namn och klicka på Nästa
  • Ställ in Minsta SDK till Android 6.0 (Marshmallow). 
  • Välj Inkludera Android Instant App Support kryssrutan och klicka Nästa
  • För att hålla sakerna enkla, acceptera standardmodulnamnet (funktion) och klicka sedan på Nästa.
  • Välj Grundaktivitet och klicka sedan på Nästa.
  • På nästa skärm accepterar du alla standardvärden och klickar sedan på Avsluta.

Omedelbart kan vi se att projektet är strukturerat väldigt annorlunda än ditt typiska Android-projekt och består av följande moduler:

  • App. Den installerbara appmodulen, även känd som en APK-modul. 
  • Bas. Basfunktionsmodulen.
  • Funktion. Även om det här projektet endast har en, kan en applikation bestå av flera funktionen moduler.
  • Instantapp. Den aktuella appmodulen. 

Med undantag för funktionen modulen, vilket projekt som helst som stöder direktprogram måste ha alla ovanstående moduler, så låt oss utforska var och en av dessa moduler i detalj.  

1. Application Module

Konceptet för en applikationsmodul kan inte vara något nytt, men när ditt projekt stöder omedelbara appar ser applikationsmodulens Manifest mycket emptier ut än vad du antagligen brukar använda: 

Det finns en anledning till varför den här filen är så tom: När du bygger ditt projekt, innehåller innehållet i alla andra Manifest-filer som ligger hela din basfunktionen och funktion moduler slås samman med den här filen, så det kommer inte att förbli så tomt för evigt! 

Om du öppnar den här modulens build.gradle fil, så märker du två nya element: 

beroenden implementation project (': feature') implementation project (': base')

Här förklarar vi att vår applikationsmodul har ett beroende av funktion modul och bas modul. 

När du lägger till Instant App-stöd till ett projekt separerar du relaterad kod och resurser i funktionsmoduler som kan fungera oberoende av den installerbara applikationen. Dessa moduler är dock fortfarande delar av din installerbara app, i stället för separata enheter, varför vår applikationsmodul förklarar funktionen och basmodulerna som beroenden.

2. Basfunktionsmodul

Varje ögonblickligt app-projekt måste innehålla en enda basfunktionsmodul, som innehåller koden och resurserna som används över alla programmets moduler. Till exempel, om du öppnar vårt projekt bas / res / mipmap mappen ser du alla programmets launcher-ikoner, som tydligt kommer att användas över flera moduler. 


Eftersom det innehåller gemensam kod och resurser, Allt av ditt projekts särdragsmoduler beror på denna enkla basfunktionsmodul. 

Fortsatt detta tema innehåller basfunktionsmodulen de manifesta inmatningarna som används över hela ditt projekt. Till exempel är ditt projekt bas / src / main / AndroidManifest.xml filen innehåller inställningarna för programmets ikon, tema och etikett: 

   

Det andra anmärkningsvärda elementet är basmodulen build.gradle fil, som innehåller några nya attribut:

// Alla basfunktioner och "vanliga" funktionsmoduler använder plug.android.feature plugin, snarare än plug.android.application plugin // tillämpa plugin: 'com.android.feature' android compileSdkVersion 26 buildToolsVersion "26.0.0 "// Ange att det här är projektets enda basfunktion med hjälp av" baseFeature true "uttryck // baseFeature true ... ... ... beroenden // Använd" applikationsprojekt "för att lägga till ett beroende från basfunktionsmodulen till din projektets installerbara 'app'-modul // applikationsprojekt (': app ') // Använd' funktionsprojekt 'för att referera till vårt projekts särdragsmodul, lämpligt namnet' feature '// feature project (': feature ') 

Du kommer också märka att det här build.gradle filen saknas en ansöknings-ID attribut och (spoiler alert) hittar du exakt samma sak när vi kommer att inspektera vår funktionsmodul build.gradle fil. Vårt projekt är ansöknings-ID förklaras i applikationsmodulens build.gradle fil endast.

De ansöknings projekt (:app) linje i vår basmodul build.gradle filen (se ovan) säkerställer att projektet är ensam ansöknings-ID attributet sprids över Allt av vår build.gradle filer, varför detta attribut saknas från resten av vårt projekt. 

3. Funktionsmodul

När du så småningom kommer att lägga till Instant App-stöd till ett befintligt projekt, kommer din största uppgift att extrahera alla programmets funktioner till sin egen modulmodul, eftersom varje särdragsmodul innehåller koden och resurserna som krävs för att leverera den här funktionen endast. 

Om du öppnar vårt projekt funktion modulen så ser du att den innehåller Huvudaktivitet klass plus activity_main och content_main resursfiler - i huvudsak alla komponenter som ingår i Grundaktivitet mall.  

En enda funktionsmodul kan bestå av flera aktiviteter, men varje modul måste ha minst en aktivitet som är angiven som den här modulens startpunkt Aktivitet. 

Varje postpunktsaktivitet är mappad till en specifik webbadress, så att när användaren kränger den här webbadressen laddar den den därmed sammanhängande aktiviteten och användaren har tillgång till denna speciella funktionsmodul. 

Du anger en modulens startpunkt Aktivitet via den modulens manifest. I huvudsak måste du öppna den här filen och lägga till följande i den Aktivitet som du vill använda som din startpunkt: 

  • Ett avsikt filter, med CATEGORY_LAUNCHER och ACTION_MAIN avsikter.
  • en element som innehåller all information om webbadressen som du vill kartlägga till denna postpunktsaktivitet. 
  • De android: autoVerify attribut. Detta berättar att systemet ska kontrollera att din app har behörighet att fungera som standardhanterare för den här webbadressen. Det här är en viktig säkerhetsmekanism som hjälper till att skydda webbplatsägare från skadliga appar som kan försöka kapa deras webbadresser.

Om du öppnar vår funktionsmoduls manifestfil ser du att all denna kod redan har lagts till i vår Huvudaktivitet deklaration:

            

Den sista filen vi ska titta på i den här modulen är build.gradle fil, som innehåller några rader av anmärkningsvärt kod: 

// Igen använder vi plug.android.feature plugin istället för com.android.application // tillämpa plugin: 'com.android.feature' android // Som tidigare nämnts saknas det här ett avsnitt i "ApplicationID" attribut // ... ... ... beroenden implementation fileTree (dir: 'libs', inkluderar: ['* .jar']) androidTestImplementation ('com.android.support.test.espresso: espresso-core: 2.2.2' exkludera grupp: 'com.android.support', modul: 'support-annotations') // Alla funktionsmoduler beror på basfunktionsmodulen, som vi förklarar här // implementeringsprojekt (': bas') testimplementation 'juni: juni: 4,12' 

Eftersom alla funktionsmoduler beror på basfunktionsmodulen, första gången användaren begär några funktionen från din ansökan, kommer de att få basfunktionsmodulen plus Funktionsmodulen försöker de faktiskt få tillgång till. 

Observera att även om det här projektet består av en basfunktionsmodul och en funktionsmodul, om din app bara har en funktion som du vill göra tillgänglig som en snabb app, så är det möjligt att skapa ett projekt som består av en basfunktionsmodul endast. Vi tittar på båda typerna av Instant App-projektet i hela serien. 

4. Instant App Module

Instant App-modulen har ett enkelt syfte: det fungerar som en behållare som tar alla dina funktionsmoduler och gör dem till Instant App APKs.

Om du öppnar det här projektets Instant App-modul ser du att det är ganska tomt ifrån en build.gradle fil, som helt enkelt deklarerar din basmodul och din funktionsmodul som beroenden:

tillämpa plugin: 'com.android.instantapp' beroenden implementation project (': feature') implementation project (': base')

Testa din app

Eftersom det här projektet inte innehåller några Applänkar, kan vi inte testa sina programkomponenter, men vi kan fortfarande köra det här projektet som en installerbar app. Det här kanske inte verkar särskilt spännande, men med tanke på att huvuddelen av vårt projekts kod och resurser finns i direktapplikationsmodulen är det viktigt att testa hur vårt projekt fungerar som en installerbar applikation. 

Starta den AVD som vi skapade tidigare eller anslut en kompatibel fysisk Android-smarttelefon eller -tablett till din utvecklingsmaskin och välj sedan Kör> Kör ...> app från Android Studio-verktygsfältet. 

Trots det faktum att alla våra Huvudaktivitet kod finns i funktionsmodulen, när vår app laddar du ser du Huvudaktivitets floating action knapp (FAB) och Hej världen meddelande. Vad vi ser här är vår applikationsmodul med kod och resurser som finns i separat Instant App-funktion och basfunktionsmoduler och kombinerar dem med en installerbar app. 

Slutsats 

I denna handledning tog vi en titt på hur Instant Apps fungerar och utforskade de olika anledningarna till att du kanske vill lägga till Instant App-stöd till dina Android-projekt. 

I en idealisk värld skulle ditt beslut att börja utforska Instant Apps helt och hållet sammanfalla med starten på ett nytt Android-projekt, men det är sällan en utvecklare som är sällan det här bekvämt! Det är mycket mer troligt att du måste omkonfigurera ett befintligt projekt för att stödja Instant Apps, vilket inte är det ganska så enkelt som att markera en kryssruta i Android Studio: s projektskapande guide! 

I nästa inlägg tar vi en djupgående titt på hur du lägger till snabbstöd för ett befintligt projekt. Jag ska också visa dig hur du implementerar Applänkar, så i slutet av nästa inlägg har du skapat en fullt fungerande Instant App som du kan starta och testa på alla kompatibla AVD- eller Android-enheter. 

.