Čo sú rýchle aplikácie pre Android?
() translation by (you can also view the original English article)
Vždy, keď vydáte nejakú aplikáciu na Android, máte nejakú predstavu, čo by vaša aplikácia mala dosiahnuť.
Ciele môžu byť veľmi špecifiké, ako je získanie nejakého príjmu z reklám v prvom štvrťroku alebo viac všeobecné, ako je získanie vysokého hodnotenia na Google Play.
Nech sa jedná o čokoľvek, zobraziť aplikáciu čo najviac používateľom je vždy jednou z úloh na zozname—rýchle aplikácie vám v tom pomôžu.
Rýchle aplikácie ponúkajú nový spôsob ako si získať používateľov, ktorí nemajú nainštalovanú vašu aplikáciu vo vašom zariadení, tým, že sa vaša aplikácia zjaví kliknutím na špeciálny odkaz.
V podstate rýchle aplikácie vám povoľujú rozdeliť aplikáciu do samostatných modulov. Používatelia ich môžu načítať na požiadanie kliknutím na odkaz, ktorý je zmapovaný na určený modul bez inštalácie aplikácie.
V tejto sérii si ukážeme, ako pridať podporu pre rýchle aplikácie do vašich projektov. Na konci série budeme mať aplikáciu, ktorá bude mať dva samostatné moduly s vlastnosťou rýchlej aplikácie, ktoré môžete spustiť a otestovať na ľubovoľnom Android zariadení.
Čo bude táto časť obsahovať
V tejto časti sa pozrieme, čo sú rýchle aplikácie, ako fungujú a prečo by ste sa mali o ne zaujímať. Aby ste hlavne získali skúsenosti ohľadom Instant Apps, použijeme sprievodcu Android Studia pre tvorbu aplikácie, ktorá je prednastavená pre podporu Instant Apps, aby ste mohli používať všetky možné komponenty Instant App.
Zatiaľčo tvorba aplikácie, ktorá je prednastavená s podporou pre rýchle aplikácie je najrýchlejšou a najjednoduchšou cestou pre použitie tejto vlastnosti, v skutočnosti je pravdepodobnejšie, že pridáte podporu pre rýchle aplikácie do existujúceho projektu—ukážeme si to v druhej časti. Použijem aplikáciu stiahnutú z GitHubu na vytvorenie procesu znovu nastavenia projektu pre pridanie podpory Instantných aplikácií.
Poslednou skladačkou bude vytvorenie rýchlej aplikácie s viacerými vlastnosťami, takže v tretej časti si ukážeme, ako pridať ďalší modul do vašej aplikácie a ako použiť odkazy pre aplikácie pre zmapovanie modulu do odkazu.
Čo sú rýchle aplikácie?
Jeden z najlepších spôsobov, ako vysvetliť, čo sú rýchle aplikácie je ukázať ich príklady.
Predstavte si, že váš priateľ vám odoslal odkaz na video, ktoré si myslí, že ho budete milovať, ale keď na ten odkaz ťuknete, budete vedieť, že si musíte stiahnuť aplikáciu, než začnete pozerať video.
Bez ohľadu na to, či si stiahnete aplikáciu, alebo sa na ňu vykašlete a nepozriete si to najlepšie mačacie video, je to zlý používateľská skúsenosť—a scenár, s ktorým je väčšina používateľov oboznámená.
Väčšina z nás si už raz stiahla aplikáciu len pre uskutočnenie jedinej úlohy. Napríklad, stiahli ste si aplikáciu iba aby ste si pozreli prílohu, ktorú ste dostali, dokončili nákup na stránke alebo sledovali balíček, ktorý cestuje na vašu adresu.
Teraz si predstavme scenár s mačacím videom, ale tento raz vývojár umiestnil všetok kód a vyžadované zdroje k tomu, aby sa to video prehalo v samostatnom module pomocou odkazu www.example.com/video. Teraz, keď ťuknete na www.example.com/video/cat-video, Google Play rozpozná, že tento odkaz je spojený s rychlým modulom a prehrá to video. Výsledok? Uvidíte 20 sekundové video, kde sa mačka hrá s krabicou bez toho, aby ste hocičo inštalovali, ponúkne to omnoho lepší zážitok.
Prečo by som mal používať rýchle aplikácie?
Ako uvidíte v ďalšej časti tejto série, pridávanie podpory pre rýchle aplikácie do exstujúceho projektu je odstrašujúci proces, vyžadujúc zmenu spôsobu štruktúry aplikácie.
Pretože rozhodnutie pre zmenu štruktúry nie je jednoduché, v tejto sekcii vám pomôžeme, či všetok ten čas a snaha stojí za to, pokrytím hlavných výhod pre pridanie podpory pre rýchle aplikácie do projektov:
- Odstraňuje bariéru medzi aplikáciou a novými používateľmi. Inštalácia aplikácie cez Google Play nie je obzvlášť náročný alebo zdĺhavý proces, ale je to najväčšia bariéra medzi vašou aplikáciou a potencionalnými novými používateľmi. Bez ohľadu na to, koľko času strávite vytváraním neprekonateľnej stránky na Google Play, väčšina používateľov bude vyhľadávať tlačidlo Inštalovať, takže niektorí používatelia vždy odídu ešte počas procesu inštalácie.
- Pomáha vám nájsť nových používateľov. Aj keď môžete promovať vašu aplikáciu na rôznych miestach na internete, ako je vaša stránka, blog alebo sociálne média, pre spájanie sa s novými používateľmi sa musíte spoľahnúť, aby navštívili stránku vašej aplikácie na Google Play. Rýchle aplikácie odstráňujú porebu navštíviť stránku na Google Play tým, že aplikácia môže byť dostupná kdekoľvek, kde sú dostupné URL, čo znamená, že máte neobmedzené možnosti sa spojiť s novými používateľmi.
- Zaisťuje to, že zdieľaný obsah je najlepšou reklamou pre vašu apliáciu. Používateľ, ktorý zdieľa obsah vašej aplikácie je najefektívnejším spôsobom získať nových používateľov, pretože prvý pohľad je dôležitý! Poskytnúť konzistentný zážitok bolo ťažké pre používateľov, ktorí nemali vašu aplikáciu nainštalovanú na telefóne, ale rýchle aplikácie vám zaručujú bezšvíkový, natívny zážitok pre každého.
- Pomáha používateľov pristupovať k aplikácii, aj s problemámi s internetom. Zatiaľčo internetové pokrytie sa zlepšuje, niekedy môžete mať problém nájsť rýchlu a spoľahlivú sieť alebo možno už ste takmer vyčerpali mobilné dáta a ste znepokojený z ďalších poplatkov. Zatiaľčo máte problém s pomalým alebo nekonzistentným pripojením, sťahovanie celej aplikácie môže byť zdĺhavý a frustrujúci proces, a keď ste v nebezpečenstve vyčerpania dát, sťahovanie novej aplikácie môže byť dostatok pre pridanie ďalších poplatkov. Všetky rýchle moduly musia byť menej ako 4MB, takže keď sťahovanie celej aplikácie neprichádza do úvahy, prístup k rýchlej aplikácii stále môže byť uskutočniteľná možnosť.
- Zvyšuje žiadosť o aplikácie založené na mieste a čase. Zatiaľčo aplikácie, ktoré sú navrhnuté na určené miesto alebo udalosť nie sú novinkou, opýtajte sa sám seba: aká je pravdepodobnosť, že si nainštalujem aplikáciu, ktorú môžem používať iba po nejakú dobu na nejakom mieste? Rýchle aplikácie môžu zvýšiť žiadosť o aplikácie založené na čase a mieste povolením používateľovi pristupovať k najdôležitejším vlastnostiam ťuknutím na odkaz.
Obmedzenia
Predtým, než začneme tvoriť rýchle aplikácie si musíme uvedomiť, že je pár vecí, ktoré rýchle aplikácie nedokážu:
- Pristupovať k identifikátorom zariadenia ako sú IMEI a MAC adresy.
- Používať služby na pozadí.
- Vykonávať notifikácie na pozadí.
- Pristupovať k externým úložiskám zariadenia.
- Pristupovať k zoznamu aplikácii nainštalované na zariadení používateľa—ibaže aplikácie sú nastavené ako viditeľné pre rýchle aplikácie.
Taktiež vaša aplikácia musí:
- Byť dostupná k stiahnuti v obchode Google Play.
- Používať nový model pre povolenia dostupný v Androide 6.0 (úroveň API 23). Pretože používateľ neinštaluje instantnú aplikáciu, tu nie je žiadná príležitosť opýtať si povolenia dopredu. Ak vaše instanté moduly vyžadujú prístup ku citlivým schopnostiam zariadenia alebo používateľským informáciám, potebujete si ich vyžiadať počas behu aplikácie.
- Podporovať odkazy aplikácie. Toto je mechanizmus, kde zmapujete každý modul na špecifický odkaz. Bližšie k odkazom aplikácie pôjdeme v ďalšej časti.
Nakoniec, keď vaša aplikácia je súčasťou programu Designed for Families, aplikácia nemôže byť poskytnutá ako rýchla aplikácia.
Nastavenie vývojárského prostredia
Predtým, než vytvoríme prvý projekt s podporou pre rýchle aplikácie, musíme mať nainštalované programy s týmito verziami alebo vyššími:
- Android Studio 3.0 Preview
- Android SDK 6.0
- Android SDK Build Tools 26.x
- Android SDK Tools 25.x
- Android SDK Platform Tools 25.x
Taktiež musíte mať nainštalované najnovšie verzie Android Support Library and Android Repistory, takže otvorte SDK Manager Android Studia a nainštalujte všetky dostupné aktualizácie.
Keď máte všetko nainštalované, môžete začať sťahovať Instant Apps Development SDK:
- Otvorte SDK Manager a kliknite na kartu SDK Tools.
- Vyberte Instant Apps Development SDK.
- Kliknite na Apply.
V súčasnosti môžete testovať rýchle aplikácie iba na zariadeniach Nexus 5X, Nexus 6P, Pixel, Pixel XL alebo Galaxy S7, ktoré bežia na Android 6.0 alebo vyššie. Avšak, ak nevlastníte ani jedno z týchto zariadení, môžete si vytvoriť virtuálne zariadenie Androidu, ale pod podmienkou, že bude používať obraz x86 a bude využívať API Googlu.
Pretože nevlastním ani jedno z týchto zariadení, vytvorím si virtuálne zariadenie, ktoré emuluje Pixel:
- Spustite AVD Manager.
- Kliknite na tlačidlo Create virtual device….
- Vyberte Pixel a kliknite na Next.
- Kliknite na kartu x86 Images.
- Vyberte systémový obraz, ktorý beží na Android 6.0 a využíva API Googlu, napríklad Marshmallow / 23 / x86 / Android 6.0 (Google APIs).
- Kliknite na Next.
- Dajte svojmu zariadeniu názov a kliknite na Finish.
- Spustite svoje virutálne zariadenie.
Nakoniec sa prihláste do zariadenia pomocou účtu Google:
- Zapnite svoje virtuálne zariadenie a otvorte launcher.
- Vyberte aplikáciu Google.
- Zadajte vašu e-mailovú adresu a heslo. Môže to byť buď skutočný účet alebo účet vytvorený na účely testovania projektov.
Vytváranie prvej instantnej aplikácie
Od verzie Android Studio 3.0 Preview 1 alebo vyššie vytváranie projektu so vstavanou podporou pre rýchle aplikácie je tak jednoduché, že stačí zaškrtnúť políčko, takže namiesto toho, aby sme vysvetlili vlasnosti rýchlej aplikácie, proste vytvoríme projekt s podporou pre rýchle aplikácie.
Vedzte, že váš projekt neobsahuje žiadne odkazy aplikácie, takže nebudete môcť testovať vaše komponenty rýchlej aplikácie vo vašom virtuálnom zariadení (tým sa budeme zaoberať v druhej časti).
Pre vytvorenie projektu:
- Spustite sprievodcu tvorby projektu, buď vybraním File > New > New project… z panela nástrojov Android Studia, alebo kliknutím na Start a new Android Studio project z uvítacej obrazovky.
- Nazvite ho a kliknite na Next.
- Nastavte Minimum SDK na Android 6.0 (Marshmallow).
- Zaškrtnite políčko Include Android Instant app support a kliknite na Next.
- Aby to bolo jednoduché, prijmite štandardný názov modulu (feature) a kliknite na Next.
- Vyberte Basic Activity a kliknite na Next.
- Na ďalšej obrazovke prijmite štandardné hodnoty a kliknite na Finish.
Hneď vidíme, že projekt má odlišnú štruktúru oproti štandardnému Android projektu a skladá sa nasledujúcich modulov:
- App. Modul inštaľovateľnej aplikácie, známy aj ako APK modul.
- Base. Základný modul vlastností.
- Feature. Aj keď tento projekt má iba jeden modul, aplikácia môže pozostávať z viacerých modulov.
- Instantapp. Modul pre rýchlu aplikáciu.



Okrem modulu feature, každý projekt, ktorý podporuje rýchle aplikácie musí mať všetky spomenuté moduly, takže sa teraz na tie moduly pozrieme hlbšie.
1. Modul aplikácie
Koncept modulu aplikácie nie je žiadnou novinkou, ale keď váš projekt podporuje rýchle aplikácie, súbor Manifest modulu aplikácie je prázdnejší, než na ktorý ste zvyknutý:
1 |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
2 |
package="com.jessicathornsby.myapplication.app" /> |
Dôvodom, prečo je tento súbor tak prázdny je, že keď začnete budovať váš projekt, obsah všetkých ostatných Manifest súborov, ktoré sa nachádzajú v moduloch base a feature sú spojené s týmto súborom—ten súbor neostane prázdny!
Ak otvoríte súbor build.gradle pre tento modul, uvidíte tieto nové prvky:
1 |
dependencies { |
2 |
implementation project(':feature') |
3 |
implementation project(':base') |
4 |
} |
Tu vidíte, že náš modul aplikácie má závislosť na moduloch feature
a base
.
Keď do projektu pridáte podporu pre rýchle aplikácie, roddeľujete kód a zdroj do samostatných modulov vlastností, aby fungovali nezávisle od inštaľovateľnej aplikácie. Avšak, namiesto toho, aby boli samostatnými prvkami, tieto moduly sú stále súčasťou vašej inštalovateľnej aplikácie, čo je dôvod, prečo modul aplikácie označuje základný modul a modul vlastnosti ako závislosti.
2. Základný modul
Každý projekt s rýchlou aplikáciou prichádza s jedným základným modulom, ktorý obsahuje kód a zdroje, ktorý je použitý v každom module aplikácie. Napríklad, keď otvoríte priečinok base/res/mipmap, uvidíte všetky ikony vašej aplikácie, ktoré určite budú použité v rôznych moduloch.
Pretože modul obsahuje občajný kód a zdroje, všetky moduly projektu závisia od tohto modulu.
Základný modul obsahuje vstupy do súbora Manifest, ktoré sú zdieľané naprieč celým projektom. Napríklad, súbor base/src/main/AndroidManifest.xml obsahuje tieto nastavenia na ikonu, tému a názov aplikácie.
1 |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
2 |
package="com.jessicathornsby.myapplication"> |
3 |
|
4 |
<application
|
5 |
android:allowBackup="true" |
6 |
android:icon="@mipmap/ic_launcher" |
7 |
android:label="@string/app_name" |
8 |
android:roundIcon="@mipmap/ic_launcher_round" |
9 |
android:supportsRtl="true" |
10 |
android:theme="@style/AppTheme" /> |
11 |
</manifest>
|
Ďalším význačným prvkom je súbor základného modulu build.gradle, ktorý obsahuje niekoľko nových atribútov:
1 |
//All base feature and “regular” feature modules use the com.android.feature plugin, rather than the com.android.application plugin// |
2 |
|
3 |
apply plugin: 'com.android.feature' |
4 |
|
5 |
android { |
6 |
compileSdkVersion 26 |
7 |
buildToolsVersion "26.0.0" |
8 |
|
9 |
//Specify that this is the project’s one and only base feature, using the ‘baseFeature true’ expression// |
10 |
|
11 |
baseFeature true |
12 |
… |
13 |
… |
14 |
… |
15 |
dependencies { |
16 |
|
17 |
//Use ‘application project’ to add a dependency from the base feature module, to your project’s installable ‘app’ module// |
18 |
|
19 |
application project(':app') |
20 |
|
21 |
//Use ‘feature project’ to reference our project’s feature module, aptly named ‘feature’// |
22 |
|
23 |
feature project(':feature') |
24 |
Všimnite si, že tomuto súboru build.gradle chýba atribút applicationID
a (spoiler alert) to isté bude aj v súbore modulu vlastnosti build.gradle. applicationID
nášho projektu je deklarovaný iba v súbore modulu aplikácie build.gradle.
Riadok application project(:app)
v našom súbore základného modulu build.gradle zaisťuje, že applicationID
projektu je šírený naprieč všetkými súbormi build.gradle, čo je dôvod, prečo tento atribút nie je napísaný v iných súboroch.
3. Modul vlastnosti
Keď chcete pridať podporu pre rýchle aplikácie do existujúceho projektu, najväčšou úlohou bude vytiahnuť všetky moduly aplikácie do vlastného modulu, zatiaľčo modul vlastnosti obsahuj kód a zdroje vyžadované pre dodanie iba tejto vlasnosti.
Ak otvoríte modul feature, uvidíe, že obsahuje triedu MainActivity
a zdrojové súbory activity_main a content_main—v podstate všetky komponenty su zahrnuté v šablóne Basic Activity.



Jeden modul vlastnosti môže obsahovať niekoľko Activity tried, ale každý modul musí mať aspon jednu Activity triedu, ktorá je určená ako vstupná trieda.
Každá vstupná trieda Activity je zmapovaná na určený odkaz, takže vždy, keď používateľ klikne na odkaz, načíta sa s ním spojená trieda Activity a používateľ má prístup k modulu vlastnosti.
Vstupnú triedu menujete pomocou súboru Manifest tohto modulu. V podstate, keď chcete používať triedu ako vstupnú, musíte otvoriť tento súbor a pridať toto do Activity triedy:
- Zámerný filter, spolu so zámermi
CATEGORY_LAUNCHER
aACTION_MAIN
. - Prvok
<data>
, ktorý obsahuje všetky informácie o odkaze, ktorý chcete zmapovať do vstupnej Activity triedy. - Atribút
android:autoVerify
. To povie systému, že či má vaša aplikácia povolenie konať ako predvolený program pre určený odkaz. To je dôležitý bezpečnostný mechanizmus, ktorý pomáha ochrániť majiteľov stránok od zákerných aplikácii, ktoré sa pokúšajú zneužiť ich odkazy.
Ak otvoríte súbor Manifest modulu vlastnosti, uvidíte, že všetok tento kód bol pridaný do deklarácie MainActivity
:
1 |
<activity
|
2 |
android:name=".MainActivity" |
3 |
android:label="@string/app_name" |
4 |
android:theme="@style/AppTheme.NoActionBar"> |
5 |
<intent-filter android:order="1"> |
6 |
<action android:name="android.intent.action.VIEW" /> |
7 |
|
8 |
<category android:name="android.intent.category.BROWSABLE" /> |
9 |
<category android:name="android.intent.category.DEFAULT" /> |
10 |
|
11 |
<data
|
12 |
android:host="jessicathornsby.com" |
13 |
android:path="www.example.com/MainActivity" |
14 |
android:scheme="https" /> |
15 |
</intent-filter>
|
16 |
<intent-filter>
|
17 |
<action android:name="android.intent.action.MAIN" /> |
18 |
|
19 |
<category android:name="android.intent.category.LAUNCHER" /> |
20 |
</intent-filter>
|
21 |
<intent-filter android:autoVerify="true"> |
Posledný súbor, na ktorý sa pozrieme je súbor build.gradle, ktorý obsahuje pár riadkov pozorudného kódu:
1 |
//Again, we’re using com.android.feature plugin, rather than com.android.application// |
2 |
|
3 |
apply plugin: 'com.android.feature' |
4 |
|
5 |
android { |
6 |
|
7 |
//As previously mentioned, this section is missing an ‘applicationID’ attribute// |
8 |
|
9 |
… |
10 |
… |
11 |
… |
12 |
dependencies { |
13 |
implementation fileTree(dir: 'libs', include: ['*.jar']) |
14 |
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { |
15 |
exclude group: 'com.android.support', module: 'support-annotations' |
16 |
}) |
17 |
|
18 |
//All feature modules have a dependency on the base feature module, which we’re declaring here// |
19 |
|
20 |
implementation project(':base') |
21 |
testImplementation 'junit:junit:4.12' |
Pretože všetky tieto moduly sú založené na základnom module, keď používateľ po prvý krát si vyžiada akúkoľvek funkciu z vašej aplikácie, dostanú základný modul a modul vlastnosti, na ktorý sa snažia pristupovať.
Vedzte, že aj keď tento projekt pozostáva zo základného modulu a modulu vlastnosti, keď vaša aplikácia má iba jednu vlastnosť, ktorú môžete využiť ako rýchlu aplikáciu, tak potom je možné vytvoriť projekt, ktorý pozostáva iba zo základného modulu. Počas priebehu série sa pozrieme na oba "typy" rýchlych aplikácií.
4. Modul rýchlej aplikácie
Modul rýchlej aplikácie ma jediný účel: správa sa ako container, ktorý berie všetky moduly vlastnosti a premieňa ich na rýchle aplikácie.
Keď otvoríte modul rýchlej aplikácie tohto projektu, uvidíte, že je celkóm prázdny oproti súboru build.gradle, čo deklaruje základný modul a modul vlastnosti ako závislosti:
1 |
apply plugin: 'com.android.instantapp' |
2 |
|
3 |
dependencies { |
4 |
implementation project(':feature') |
5 |
implementation project(':base') |
6 |
} |
Testovanie aplikácie
Pretože tento projekt neobsahuje žiadne odkazy aplikácie, nie je možné otestovať komponenty tejto rýchlej aplikácie. Ale stále môžeme spustiť tento projekt ako inštalovateľnú aplikáciu. Možno to nie je také vzdrušujúce, ale vzhľadom k tomu, že väčšina kódu a zdrojov vášho projektu sa nachádzajú v module rýchlej aplikácie, je dôležité ako náš projekt funguje ako inštalovateľná aplikácia.
Spustite virtuálne zariadenie alebo pripojte váš kompatibilný Android telefón do vášho vývojárskeho stroja a z panela nástrojov vyberte Run > Run… > app.
Napriek tomu, že kód MainActivity
sa nachádza v module vlastnosti, keď sa načíta naša aplikácia, uvidíte plávajúce tlačidlo akcie a správu Hello World. To, čo tu vidíme je, že náš modul aplikácie berie kód a zdroje, ktoré sa nachádzajú v samostatnom module, kombinujúc do jednej inštalovateľnej aplikácie.
Záver
V tomto návode sme sa pozreli na to, ako fungujú rýchle aplikácie a uviedli sme si dôvody, prečo by ste mali uvažovať nad pridaním podpory pre rýchlu aplikáciu do vášho projektu.
V ideálnom svete je začatie pridania rýchlej aplikácie veľmi jednoduché, hlavne pri štarte nového projektu, bohužiaľ, byť vývojárom nie je vždy také jednoduché. Je viac pravdepodobné, že budete musieť upraviť svoj existujúci projekt, aby ste pridali podporu pre rýchle aplikácie, čo nie je také rýchle ako odškrtnutie políčka počas tvorby pojektu.
V ďalšej časti sa pozrieme, ako pridať podporu pre rýchle aplikácie do existujúceho projektu. Taktiež sa pozrieme, ako implementovať odkazy aplikácie, takže na konci série budete mať plnefunkčnú prýchlu aplikáciu, ktorú môžete spustiť a otestovať na každom kompatibilnom a virtuálnom Android zariadení.
Zostaňte naladení! Zatiaľ si pozrite ďalšie články ohľadom vývoja aplikácií pre Android.