Android Instant Apps 101: hvad de er, og hvordan de fungerer

Android Instant Apps er en sej ny måde at forbruge native apps uden forudgående installation. Kun dele af appen downloades og lanceres, hvilket giver brugerne et oprindeligt udseende på et par sekunder.

Hvordan fungerer de?

For det første må du ikke forveksle dem med Progressive Web Apps, hvor et launcher-ikon åbner en webapp via Chrome-browseren. En Instant-app installeres faktisk på din telefon, men uden behov for at søge efter den i Play Butik.

Web-URL'er udløser Google Play Butik på din telefon og henter kun den del af appen, der er knyttet til den anmodede URL. Resten af ​​appen downloades ikke. På denne måde kan brugerne hurtigt nyde den oprindelige oplevelse af din Android-applikation.

Hvad er baggrunden?

Nå skal du opdele dit Android-projekt i et par moduler. En af dem er et basismodul med den vigtige kode, der bruges i alle andre moduler (API-forbindelse, database, delte præferencer osv.). De andre funktionsmoduler indeholder specifikke funktioner og aktiviteter, som kan tilgås via tilknyttede URL'er.

Lad os sige, at du har en webapp med en liste over produkter og en enkelt side af produktet. For eksempel kan du linke //eksempel.domæne/produkter for at starte ProductsListActivity og //eksempel.domæne/produkter/12 for at starte Produktaktivitet.

For at gøre dem tilgængelige som øjeblikkelige appaktiviteter skal de pakkes i individuelle funktionsmoduler, og de skal have tilknyttede App Links defineret i deres modulmanifest. Vi kalder dem moduler til produkt- og produktliste.

Når en bruger nu prøver at åbne //eksempel.domæne/produkter/12 , begynder både produkt- og basemodulet at downloade, og ProductActivity startes.

Hvad er applink, og hvordan defineres de?

Du har sikkert hørt om dybe links. De er defineret i appmanifestet, og de vil blive registreret til operativsystemet. Når en bruger forsøger at åbne et sådant link, beder operativsystemet brugeren om at vælge mellem at åbne linket i en webbrowser eller i din app. Dette er dog ikke nok til Instant-apps, du skal gå et skridt videre - App Links. Du skal medtage egenskaben autoVerify = ”true” .

Din app vil kontrollere, om de links, du har angivet, virkelig er knyttet til dit domæne. Til dette skal du medtage filen assetlinks.json i følgende mappe i din domænerot :

//eksempel.domæne/.wellkendt/assetlinks.json.

Bemærk også android: order = ”100 ″ ejendom. Dette er faktisk en prioritet i dette tilfælde. Hvis du har en produktliste og en produktsingle, der svarer til den samme sti (/ produkter og / produkter / 10) , vil produktets enkeltaktivitet blive lanceret, hvis der er en id efter stien / produkter . Hvis ikke, startes produktlisteaktiviteten.

Det er meget vigtigt at definere dette. Hvis der er to aktiviteter, der svarer til den samme sti, ved Play Store ikke, hvilken del af appen der skal hentes.

Knyt din app til dit domæne

Den assetlinks.json bliver nødt til at indeholde dine SHA256 nøglefiler hashes. Relationsfeltet er indstillet til standardværdien nedenfor, og målobjektet skal udfyldes med appspecifikke data og din SHA256-hash af keystore.

[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints":["00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"] } }]

Når autoVerify = true gør sin magi, vil alle tilknyttede App Links starte din app direkte. Hvis du ikke har appen installeret, downloades instant-appen i stedet.

Her er et eksempel på en demo-app, vi lavede for nylig. Når der klikkes på det tilknyttede link, åbnes en skærm som denne og tilbyder at bruge instant-appen i stedet. Bemærk, hvor hurtigt appen åbnes, og på Oreo er den endnu hurtigere.

Hvordan defineres Android Instant-moduler?

For en øjeblikkelig app vil dit projekt bestå af mindst tre forskellige moduler. Du skal bruge Android Studio 3.0 til dette. Hvis du opretter din app fra bunden, er der en mulighed for at aktivere understøttelse af Instant-appen til dit projekt.

Alle de følgende moduler initialiseres automatisk. Hvis du ændrer en ældre app, skal du bryde det gamle app-modul i et enkelt basismodul og et par funktionsmoduler. Du skal også oprette en app og et øjeblikkeligt app-modul, som du vil bruge til at opbygge både almindelige og øjeblikkelige app-APK'er.

App-modul

Først skal du oprette et app-modul, der definerer afhængighederne for alle andre moduler (base + funktionsmoduler). I build.gradle-filen i dette modul skal du definere følgende:

apply plugin: 'com.android.application' ...
dependencies { implementation project(':product') implementation project(':productlist') implementation project(':base') }

Basemodul

I dette modul definerer du følgende afhængighedserklæringer. Sørg også for, at plugin 'com.android.feature' anvendes her.

apply plugin: 'com.android.feature' android { baseFeature true ... } 
dependencies { api 'com.android.support:appcompat-v7:26.0.1' api 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.google.firebase:firebase-appindexing:11.0.4' application project(':app') feature project(':product') feature project(':productlist') }

Bemærk, at her bliver kompileringsudtalelserne API-udsagn for de regelmæssige afhængigheder, vi har brugt før. Ansøgningsprojektet og funktionsprojekter defineres separat.

Funktionsmodul

Dette modul har følgende indstilling, også med com.android.feature plugin anvendt.

apply plugin: 'com.android.feature' ... dependencies { implementation project(':base') ... }

Du skal angive, hvilket modul der er dit basismodul og inkludere det i implementeringsprojektopgørelsen. Dernæst kan du medtage de afhængigheder, der kun kræves til dette specifikke modul. For eksempel, hvis du bruger et animationsbibliotek, som ikke bruges i nogen af ​​de andre moduler.

Instant App-modul

Endelig er der nu et com.android.instantapp- plugin, der skal inkluderes i build.gradle- filen til instantapp-modulet.

apply plugin: 'com.android.instantapp' dependencies { implementation project(':product') implementation project(':productlist') implementation project(':base') }

I dette modul definerer vi, hvilke moduler der skal bygges som instant apps. Resultatet af instantapp-modulopbygningen er en zip-fil med de øjeblikkelige app-APK'er, som du kan uploade separat til Google Play Butik i Android Instant Apps-frigivelsesadministrator. Disse APK'er håndteres på samme måde som de almindelige, de har deres egen implementeringshistorik og versionering.

Det er det! Det er ret simpelt at begynde at udvikle Android Instant Apps. Men der er altid et men!

Hvad var Android Instant Apps 'udfordringer?

First of all, the Instant Apps are not enabled by default for now. If you want to try it, you need to check your phone settings under Google account and enable the Instant Apps setting.

Next, we found that it’s extremely important to specify app links data in the following format:

 ...   

Both http and https schemes need to be defined as shown in this code snippet. Any other way would cause a link verification failure and the app wouldn’t be linked properly.

Also, there is a recommendation to include the following code snippet into one of the activities in your app manifest. This annotates which activity should be launched in case the Instant app is launched from the Settings or a system launcher.

The official documentation states that the Google Search would offer Instant app annotation by default (small thunder icon), but we had problems with it. For our demo app, this was not the case. Google Search results didn’t annotate our demo links as Instant apps and the links led to the web page. Only if we tried to open the associated link from another app, like Gmail, the whole instant app process was triggered and the instant app was launched. Have you encountered any similar problems?

Conclusion

When first announced two years ago, I was very enthusiastic about Android Instant Apps. They respond to the problem of users having to search for the apps on the Store and wait till they’re downloaded to start using them. Web apps are much more accessible in that regard and the ease of discovery is much better.

Øjeblikkelige apps er meget tæt på at udfylde dette hul mellem web og native mobile apps. De handler allerede meget godt, og jeg tror, ​​at de bliver mere populære med tiden. De største problemer, vi stødte på, var et ret lille samfund og manglen på korrekt dokumentation, men situationen i den forbindelse bliver også bedre.

Vi vil meget gerne høre fra dig, hvis du har prøvet at bruge dem eller har haft nogen udfordringer med at implementere dem!

Oprindeligt offentliggjort på www.bornfight.com.