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.
Î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.
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.
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:
Î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:
În plus, cererea dvs. trebuie:
Î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.
Înainte de a vă crea primul proiect cu suport instant de aplicație, va trebui să aveți instalat următoarele sau mai mult:
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:
Î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:
În cele din urmă, va trebui să vă conectați la un cont Google pe AVD:
Î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:
Imediat, putem observa că acest proiect este structurat foarte diferit de proiectul tău Android tipic și constă din următoarele module:
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.
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.
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.
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:
CATEGORY_LAUNCHER
și ACTION_MAIN
intențiile.
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.
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')
Î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 principala
butonul 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ă.
Î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.
.