Ce sunt aplicațiile instantanești Android?

De fiecare dată când lansați o aplicație Android, veți avea cel puțin o idee grosolană despre ce doriți să obțineți această aplicație. 

Aceste obiective ar putea fi foarte specifice, cum ar fi generarea unui anumit venit din anunțuri în primul trimestru, sau ar putea fi mai generale, cum ar fi obținerea unui punctaj ridicat pe Google Play.

Orice altceva se află pe lista dvs. de dorințe, obțineți aplicația în fața a cât mai mulți utilizatori posibil mereu urmând să apară undeva pe acea listă - și aplicațiile Android Instant sunt o funcție nouă care te poate ajuta să faci asta.

Aplicațiile Instant vă oferă o soluție cu totul nouă de a ajunge la utilizatorii care nu au în prezent aplicația dvs. instalată pe dispozitivul dvs., făcând aplicația dvs. accesibilă și găsită din orice locație care acceptă adrese URL, inclusiv e-mailuri, rezultate de căutare Google, platforme, comentarii YouTube și forumuri.

În mod esențial, Aplicațiile Instant vă permit să separați fiecare dintre caracteristicile aplicației dvs. într-un modul autonom. Utilizatorii pot apoi încărca oricare dintre aceste module de aplicații instant la cerere, apăsând o adresă URL pe care ați cartografiat-o la acest modul specific și fără trebuie să instalați aplicația în orice moment.

În această serie cu trei părți, vă vom arăta cum să adăugați asistență pentru aplicațiile Instant pentru proiectele Android. Până la sfârșitul acestei serii, ați creat o aplicație care constă din două module distincte ale caracteristicilor aplicației Instant App, pe care le puteți lansa și testa pe orice dispozitiv compatibil Android. 

Ce vom face să acopere

În acest prim post, mă voi concentra pe ce aplicații instant sunt, cum funcționează și de ce ar trebui să le pese de ele. Pentru a vă oferi o experiență de primă mână cu Aplicațiile Instant, vom folosi expertul de creare a proiectului Android Studio pentru a genera o aplicație care este preconfigurată cu ajutorul aplicației Instant App, astfel încât veți putea vedea toate componentele diferite ale aplicației Instant, decât să citim despre ele.

În timp ce creați o aplicație care este preconfigurată cu ajutorul aplicației Instant App, este cea mai rapidă și mai ușoară modalitate de a utiliza această funcție, în realitate este mult mai probabil să adăugați asistență aplicației Instant pentru un proiect existent - așa că în partea a doua vă voi arăta cum să faci exact asta. Voi furniza o aplicație pe care o puteți descărca de la GitHub și apoi vă va duce prin procesul pas cu pas de reconfigurare a acestui proiect pentru a sprijini aplicațiile instant.

Ultima piesă a puzzle-ului este crearea unui App Instant multifuncțional, așa că în partea a treia vă voi arăta cum să adăugați un al doilea modul de caracteristică la aplicația dvs. și cum să utilizați App App Links pentru a mapa acest modul într-o altă adresă URL. 

Ce sunt aplicațiile instantanee?

Una dintre cele mai bune modalități de a descrie aplicațiile instant este să vă uitați la un exemplu despre momentul în care ați putea să le utilizați.  

Imaginați-vă că un prieten v-a trimis un link către un video de pisică pe care vă promite că îl veți duce dragoste, dar când atingeți linkul devine clar că trebuie să descărcați o aplicație înainte de a putea viziona acest videoclip.  

Indiferent dacă ați terminat descărcarea aplicației sau ignorați linkul și riscați să pierdeți din cel mai bun videoclip pe care Internetul îl poate oferi, aceasta este o experiență proastă a utilizatorilor - și este un scenariu pe care mulți utilizatori Android îl cunosc. 

Cei mai mulți dintre noi au avut experiența de a instala o aplicație doar pentru a finaliza o sarcină unică. De exemplu, puteți să descărcați o aplicație doar pentru a vedea un atașament de e-mail pe care cineva v-a trimis-o, pentru a finaliza o achiziție pe un anumit site web sau pentru a urmări un pachet care se află în prezent la adresa dvs..

Acum, să ne imaginăm din nou scenariul video pentru pisici, însă de această dată dezvoltatorul aplicației a plasat întregul cod și resurse necesare pentru a reda conținut video în interiorul propriului modul de aplicații instant și a cartografiat acest modul la adresa URL www.example.com/video. De data aceasta, când accesați www.example.com/video/cat-video, Google Play recunoaște că această adresă URL este asociată cu un modul de aplicație instant și recuperează întregul cod și resurse de care aveți nevoie pentru a reda acest videoclip. Rezultatul final? Vă puteți bucura de 20 de secunde de o pisică care se joacă într-o cutie fără a fi nevoie să instalați nimic, care este a mult experiență mai bună a utilizatorului.  

De ce ar trebui să încep să utilizez funcția Instant App?

După cum veți vedea în următoarea postare din această serie, adăugarea asistenței aplicației Instant la un proiect existent poate fi un proces descurajator, adesea necesitând să modificați complet modul în care este structurat aplicația dvs..

Din moment ce restructurarea unui proiect nu este o decizie pe care ar trebui so luați vreodată ușor, în această secțiune vă voi ajuta să decideți dacă tot timpul și efortul merită într-adevăr, acoperind toate avantajele majore ale adăugării asistenței Instant App către dvs. proiecte:

  • Elimină o barieră între aplicația dvs. și noii utilizatori. Instalarea unei aplicații prin Google Play nu este un proces deosebit de dificil sau de consumatoare de timp, dar este în continuare cea mai mare barieră între aplicația dvs. și potențialii utilizatori noi. Nu contează cât de mult petreceți realizarea unei pagini Google Play convingătoare, care va avea majoritatea utilizatorilor să se amestece în acest scop Instalare buton, unii oameni vor mereu renunță la timpul de instalare. 
  • Vă ajută să ajungeți la noi utilizatori. Deși ați fost întotdeauna în măsură să vă promovați aplicația în diverse locații de pe web, cum ar fi site-ul dvs. propriu, blog sau social media, conectarea cu utilizatorii noi le-a invocat anterior vizitând pagina Google Play a aplicației dvs. o excepție excepțională a utilizatorilor care preferă să își blocheze aplicațiile). Aplicațiile instantanee elimină această dependență de pagina Google Play a aplicației dvs., făcând aplicația direct accesibilă din orice locație care acceptă adrese URL, oferindu-vă oportunități aproape nelimitate de a vă conecta cu utilizatori noi. 
  • Acesta asigură faptul că conținutul partajat este cel mai bun anunț posibil pentru aplicația dvs.. Un utilizator care împărtășește conținutul aplicației dvs. este una dintre cele mai eficiente modalități de a ajunge la un nou public, astfel încât veți dori să faceți o primă impresie bună! Anterior, a fost dificil să oferiți o experiență consistentă pentru utilizatorii care nu au instalat aplicația pe dispozitivul dvs., dar aplicațiile instant vă permit să garantați o experiență nativă fără probleme, pentru toata lumea.
  • Ajută utilizatorii să acceseze aplicația, chiar și în fața restricțiilor pe Internet. În timp ce acoperirea pe Internet se îmbunătățește tot timpul, puteți încerca ocazional să găsiți o rețea rapidă și de încredere, sau probabil că vă apropiați de indemnizația dvs. lunară de date și vă îngrijorați de suportarea unor costuri suplimentare. Când vă confruntați cu o conexiune la internet lentă sau inconsistentă, descărcarea unei întregi aplicații poate fi un proces consumator de timp și frustrant și atunci când vă aflați în pericolul de a vă depăși cota de date, descărcarea unei aplicații noi poate fi suficientă pentru a suporta costuri suplimentare. Toate modulele de aplicații instant trebuie sa fi de 4MB sau mai puțin, deci chiar dacă descărcarea unei întregi aplicații nu este în discuție, atunci accesarea unui modul de aplicație instant poate fi în continuare o opțiune viabilă. 
  • Măriți atractivitatea aplicațiilor de locație și a celor sensibile la timp. În timp ce aplicațiile proiectate pentru o anumită locație sau eveniment nu sunt un concept nou, întrebați-vă: cât de probabil am să instalez o aplicație despre care știu că o să pot utiliza numai pentru o perioadă limitată de timp sau într-o o anumită locație? Aplicațiile instant pot crește atractivitatea aplicațiilor în funcție de timp și de locație, permițând utilizatorului să acceseze toate funcțiile cele mai importante ale aplicației dvs. la atingerea unei adrese URL. 

Restricții și limitări

Înainte de a începe călătoria instant cu aplicații, merită remarcat faptul că în prezent există câteva lucruri pe care aplicațiile instant sunt nu poti do:

  • Accesați identificatori de dispozitive ca adresele IMEI și MAC.
  • Utilizați servicii de fundal.
  • Efectuați notificări de fundal. 
  • Accesați spațiul de stocare extern al dispozitivului.
  • Accesați lista cu aplicațiile instalate pe dispozitivul utilizatorului - cu excepția cazului în care aceste aplicații s-au făcut în mod special descoperite în aplicațiile instant.

În plus, cererea dvs. trebuie: 

  • Fiți disponibil pentru a descărca gratuit de la magazinul Google Play.
  • Utilizați noul model de permisiuni introdus în Android 6.0 (nivel 23 API). Întrucât utilizatorul nu instalează o aplicație instantanee, nu există posibilitatea de a solicita permisiuni în față. Dacă modulul (modulele) de funcții instantanee necesită acces la capabilități sensibile ale dispozitivelor sau la informații despre utilizatori, va trebui să solicitați aceste permisiuni în timpul rulării. 
  • Suport pentru legături de aplicație. Acesta este mecanismul pe care îl veți utiliza pentru a mapa fiecare dintre modulele dvs. de aplicație instant către o anumită adresă URL. Voi face legătura cu App Links în detaliu în următorul post. 

În cele din urmă, dacă aplicația dvs. face parte din programul Designed for Families, atunci nu îl puteți oferi ca aplicație instantanee. 

Configurarea mediului de dezvoltare

Înainte de a vă crea primul proiect cu suport instant de aplicație, va trebui să aveți instalat următoarele sau mai mult:

  • Previzualizare Android Studio 3.0
  • Android SDK 6.0
  • Android SDK Build Tools 26.x
  • Instrumente Android SDK 25.x
  • Instrumente platformă Android SDK 25.x

De asemenea, trebuie să vă asigurați că aveți cele mai recente versiuni ale Bibliotecii Android Support and Repository Android, atât de deschis în SDK Manager Manager Android și să instalați toate actualizările disponibile. 

După ce ați instalat toate cele de mai sus, veți putea descărca setul SDK Dezvoltare aplicații instantanee: 

  • Deschideți Managerul SDK și selectați Instrumentele SDK fila. 
  • Selectați Instant Apps Development SDK.
  • Clic aplica.

În prezent, puteți testa numai aplicații instant pe un Nexus 5X, Nexus 6P, Pixel, Pixel XL sau un Galaxy S7 care rulează Android 6.0 sau o versiune ulterioară. Cu toate acestea, dacă nu dețineți niciunul dintre aceste dispozitive, puteți crea un dispozitiv virtual Android (AVD) care emulează unul dintre aceste dispozitive, cu câteva condiții: AVD trebuie să utilizeze o imagine x86 și trebuie să includă API-urile Google.

Deoarece nu dețin nici unul dintre aceste dispozitive, voi crea un AVD care emulează un Pixel: 

  • Lansați AVD Manager.
  • Apasă pe Creați dispozitiv virtual ... buton.
  • Selectați Pixel, apoi faceți clic pe Următor →.
  • Selectează x86 Imagini fila. 
  • Selectați o imagine de sistem care rulează Android 6.0 și include API-urile Google, de exemplu Marshmallow / 23 / x86 / Android 6.0 (API-uri Google).
  • Clic Următor →.
  • Dă-i AVD numele și dă clic pe finalizarea.
  • Lansați AVD-ul.

În cele din urmă, va trebui să vă conectați la un cont Google pe AVD:

  • Treceți la AVD și deschideți lansatorul dispozitivului.
  • Selectează Google aplicaţia.
  • Introduceți o adresă și o parolă Gmail. Acesta poate fi fie contul tău din viața reală, fie un cont pe care l-ai creat numai pentru a-ți testa proiectele Android. 

Crearea primei aplicații Instant 

În versiunea cu Android Studio 3.0 Preview 1 și mai recent, crearea unui proiect care are suportul pentru aplicațiile Instant este la fel de ușor ca și selectarea unei casete de selectare, astfel încât, în loc să descriem doar funcțiile Instant App, vom crea un proiect Instant App și apoi vom cheltui restul acestui articol obținând o experiență de primă mână cu diversele sale componente. 

Trebuie doar să știți că acest proiect nu conține niciun App Links, astfel încât să nu puteți testa componentele aplicației Instant pe AVD-ul dvs. (acesta este ceva ce vom explora în detaliu în partea a doua).

Pentru a crea proiectul:

  • Lansați asistentul de creare a proiectului, fie selectând Fișier> Nou> Proiect nou ... din bara de instrumente Android Studio sau dând clic pe Porniți un nou proiect Android Studio din aplicația Android Studio Bine ati venit ecran. 
  • Dă numele proiectului numele proiectului și dă clic pe Următor →
  • Seteaza SDK minim la Android 6.0 (Marshmallow). 
  • Selectează Includeți asistența aplicației Android Instant și faceți clic pe Următor →
  • Pentru a menține lucrurile simple, acceptați numele modulului implicit (caracteristică), apoi faceți clic pe Următor →.
  • Selectați Activitatea de bază apoi faceți clic pe Următor →.
  • În ecranul următor, acceptați toate valorile implicite, apoi faceți clic pe finalizarea.

Imediat, putem observa că acest proiect este structurat foarte diferit de proiectul tău Android tipic și constă din următoarele module:

  • App. Modulul de aplicație instalabil, cunoscut și ca modul APK. 
  • Baza. Modulul de bază.
  • Caracteristică. Deși acest proiect particular are doar unul, o aplicație poate consta în mai multe module de caracteristici.
  • Instantapp. Modulul aplicației instant. 

Cu excepția modulului de caracteristici, orice proiect care acceptă aplicații instant trebuie sa au toate modulele de mai sus, așa că să explorăm fiecare dintre aceste module în detaliu.  

1. Modulul de aplicare

Conceptul unui modul de aplicație nu poate fi nimic nou, însă atunci când proiectul dvs. acceptă aplicații instant, Manifestul modulului de aplicații pare mult mai gol decât probabil ați folosit: 

Există un motiv pentru care acest fișier este atât de gol: când construiți proiectul, conținutul tuturor celorlalte fișiere Manifest localizate pe întregul dvs. caracteristică de bază și caracteristică modulele sunt îmbinate cu acest fișier - deci nu va rămâne acest lucru gol pentru totdeauna! 

Dacă deschideți acest modul build.gradle fișier, atunci veți observa două elemente noi: 

dependențe proiect de implementare (': feature') proiect de implementare (': base')

Aici, declarăm că modulul nostru de aplicație are o dependență de caracteristică modul și baza modul. 

Când adăugați asistență aplicației Instant la un proiect, separați codul și resursele asociate în module de caracteristici care pot funcționa independent de aplicația instalabilă. Cu toate acestea, aceste module sunt încă părți ale aplicației dvs. instalabile, mai degrabă decât entități separate, motiv pentru care modulul nostru de aplicație declară caracteristicile și modulele de bază ca dependențe.

2. Modulul elementului de bază

Fiecare proiect de aplicație instant trebuie să includă un modul de bază cu o singură bază, care conține codul și resursele utilizate în toate modulele aplicației. De exemplu, dacă deschideți proiectul nostru bază / res / mipmap , veți vedea toate pictogramele lansatorului aplicației, care vor fi utilizate în mod clar în mai multe module. 


Deoarece conține cod și resurse comune, toate din modulele de caracteristici ale proiectului dvs. depind de acest modul de bază cu o singură bază. 

Continuând această temă, modulul caracteristică de bază conține intrările Manifest folosite pentru întregul dvs. proiect. De exemplu, proiectul tău bază / src / main / AndroidManifest.xml fișierul conține setările pentru pictograma, tema și eticheta aplicației: 

   

Celălalt element notabil este modulul de bază build.gradle fișier, care conține câteva atribute noi:

// Toate modulele de bază și modulele obișnuite utilizează pluginul com.android.feature, mai degrabă decât pluginul com.android.application // apply plugin: 'com.android.feature' android compileSdkVersion 26 buildToolsVersion "26.0.0 "// Specificati ca aceasta este singura caracteristica de baza a proiectului, folosindu-se expresia baseFeature true // baseFeature true ... ... ... dependencies // Folositi 'project application' pentru a adauga o dependenta de la modulul de baza, (': app') // Folosiți 'feature project' pentru a face referire la modulul nostru de caracteristici al proiectului, denumit apropriat 'feature' // feature project (': feature') 

Veți observa și acest lucru build.gradle fișierul lipsește applicationID atribut și (alertă spoiler) veți găsi exact același lucru atunci când venim să inspectăm modulul nostru de caracteristici build.gradle fişier. Proiectul nostru applicationID este declarată în modulul aplicației build.gradle fişier numai.

aplicației (:app) line în modulul nostru de bază build.gradle fișierul (vezi mai sus) asigură faptul că proiectul este unic applicationID atributul este propagat toate a noastră build.gradle fișiere, motiv pentru care acest atribut lipsește din restul proiectului nostru. 

Modulul de caracteristici

Când veniți în cele din urmă pentru a adăuga suport pentru aplicația Instant pentru un proiect existent, sarcina dvs. cea mai mare va fi extragerea fiecărei caracteristici a aplicației în propriul modul de caracteristici, deoarece fiecare modul caracteristic conține codul și resursele necesare pentru a livra această caracteristică numai. 

Dacă deschideți proiectul nostru caracteristică modulul, atunci veți vedea că acesta conține Activitate principala clasa, plus activity_main și content_main fișiere de resurse - în esență toate componentele incluse în Activitatea de bază șablon.  

Un singur modul de caracteristici poate consta în mai multe activități, dar fiecare modul trebuie să aibă cel puțin o activitate care este desemnată ca activitate de intrare a acestui modul. 

Fiecare activitate de punct de intrare este mapată la o anumită adresă URL, astfel încât atunci când utilizatorul atinge această adresă URL, acesta încarcă activitatea asociată și utilizatorul are acces la acest modul de caracteristică particular. 

Identificați activitatea unui punct de intrare a unui modul prin intermediul manifestului respectivului modul. În esență, trebuie să deschideți acest fișier și să adăugați următoarele la Activitatea pe care doriți să o utilizați ca punct de intrare: 

  • Un filtru de intenție, cu CATEGORY_LAUNCHER și ACTION_MAIN intențiile.
  • A element care conține toate informațiile despre adresa URL pe care doriți să o mapați la această activitate de intrare. 
  • Android: autoVerify atribut. Aceasta indică sistemului să verifice dacă aplicația dvs. are permisiunea de a acționa ca un handler implicit pentru respectiva adresă URL. Acesta este un mecanism important de securitate care ajută la protejarea proprietarilor de site-uri de aplicații rău intenționate, care ar putea încerca să-și deturneze adresele URL.

Dacă deschideți fișierul manifest al modulului nostru de caracteristici, atunci veți vedea că tot acest cod a fost deja adăugat la adresa noastră Activitate principala declaraţie:

            

Fișierul final pe care îl vom examina în acest modul este build.gradle fișier, care conține câteva linii de cod remarcabil: 

// Din nou, folosim pluginul com.android.feature, mai degrabă decât com.android.application // apply plugin: 'com.android.feature' android // După cum am menționat anterior, în această secțiune lipsește un 'applicationID' atributul // ... ... ... dependențele implementation fileTree (dir: 'libs', include: ['* .jar']) androidTestImplementation ('com.android.support.test.espresso: espresso-core: excludeți grupul: 'com.android.support', modul: 'support-adnotations') // Toate modulele de caracteristici au o dependență de modulul de bază, pe care îl declarăm aici // project implementation (': base') testImplementation 'junit: junit: 4,12' 

Deoarece toate modulele de funcții depind de modulul de bază, prima dată când utilizatorul cere orice din aplicația dvs., vor primi modulul de bază la care se adauga modulul de elemente pe care încearcă să îl acceseze. 

Rețineți că, deși acest proiect special constă într-un modul de bază și un modul de caracteristică, în cazul în care aplicația dvs. are doar o funcție pe care doriți să o puneți la dispoziție ca aplicație instantanee, atunci este posibil să creați un proiect care să cuprindă un modul de caracteristică de bază numai. Vom analiza ambele "tipuri" ale proiectului Instant App din întreaga serie. 

4. Modul Instant App

Modulul Instant App are un scop simplu: acționează ca un container care preia toate modulele dvs. de caracteristici și le transformă în APK-uri de aplicații instant.

Dacă deschideți modulul Instant App al acestui proiect, atunci veți vedea că acesta este aproape gol în afară de a build.gradle fișier, care declară pur și simplu modulul de bază și modulul de caracteristici ca dependențe:

aplicați pluginul: "com.android.instantapp" dependencies proiect implementare (': feature') implementare proiect (': base')

Testarea aplicației dvs.

Întrucât acest proiect nu conține niciun App Links, nu vom putea testa componentele aplicației sale instant, însă putem rula acest proiect ca aplicație instalabilă. Este posibil ca acest lucru să nu pară deosebit de interesant, dar ținând seama de faptul că cea mai mare parte a codului și a resurselor proiectului nostru se află în modulul de aplicații instant, este important să testați modul în care proiectul nostru funcționează ca o aplicație instalabilă. 

Lansați AVD-ul pe care l-am creat mai devreme sau conectați un smartphone fizic sau o tabletă compatibil Android la mașina dvs. de dezvoltare, apoi selectați Run> Run ...> app din bara de instrumente Android Studio. 

În ciuda faptului că toate noastre Activitate principala codul este localizat în modulul de caracteristici, odată ce încărcarea aplicației va apărea Activitate principalabutonul de acțiune plutitoare (FAB) și Salut Lume mesaj. Ceea ce vedem aici este modulul nostru de aplicare care ia codul și resursele care se găsesc în module distincte ale caracteristicilor funcțiilor de bază și ale funcțiilor de bază separate și combinându-le într-o aplicație instalabilă. 

Concluzie 

În acest tutorial am analizat modul în care funcționează Aplicațiile Instant și explorați diferitele motive pentru care ați putea dori să adăugați asistență Instant App pentru proiectele Android. 

Într-o lume ideală, decizia dvs. de a începe explorarea Aplicațiilor Instant ar coincide perfect cu începutul unui nou proiect Android, dar, din păcate, dezvoltarea unui dezvoltator este rareori convenabilă! Este mult mai probabil ca va trebui să reconfigurați un proiect existent pentru a sprijini aplicațiile instant, ceea ce nu este destul de la fel de simplu ca și selectarea unei casete din Expertul de creare a proiectului Android Studio! 

În următoarea postare, vom examina în detaliu modul de adăugare a asistenței aplicațiilor instant la un proiect existent. Vă voi arăta, de asemenea, cum să implementați App Links, astfel că până la sfârșitul următoarei postări veți fi creat un App Instant pe deplin funcțional pe care îl puteți lansa și testa pe orice dispozitiv compatibil AVD sau Android. 

.

Cod