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.
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.
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.
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:
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:
Dessutom måste din ansökan:
Om din app är en del av programmet Designed for Families kan du inte erbjuda det som en snabb app.
Innan du kan skapa ditt första projekt med snabb appsupport måste du ha installerat följande eller högre:
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:
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:
Slutligen måste du logga in på ett Google-konto på din AVD:
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:
Omedelbart kan vi se att projektet är strukturerat väldigt annorlunda än ditt typiska Android-projekt och består av följande moduler:
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.
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.
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.
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:
CATEGORY_LAUNCHER
och ACTION_MAIN
avsikter.
element som innehåller all information om webbadressen som du vill kartlägga till denna postpunktsaktivitet. 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.
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')
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 Huvudaktivitet
s 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.
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.
.