Ogni volta che rilasci un'app per Android, avrai almeno un'idea approssimativa di ciò che desideri ottenere da questa app.
Questi obiettivi potrebbero essere molto specifici, come generare una certa quantità di entrate pubblicitarie nel primo trimestre, oppure potrebbero essere più generali, come ottenere un punteggio elevato su Google Play.
Qualunque altra cosa sia nella tua lista dei desideri, è possibile ottenere la tua app di fronte a quanti più utenti possibile sempre verrà visualizzato da qualche parte in tale elenco e Android Instant Apps è una nuova funzionalità che può aiutarti a farlo.
Le app istantanee ti offrono un modo completamente nuovo di raggiungere utenti che attualmente non hanno la tua app installata sul loro dispositivo, rendendo la tua app individuabile e accessibile da qualsiasi posizione che supporti URL, tra cui e-mail, risultati di ricerca di Google, post sui social media piattaforme, commenti di YouTube e forum.
In sostanza, le app istantanee consentono di separare ciascuna funzionalità della tua app in un modulo autonomo. Gli utenti possono quindi caricare su richiesta questi moduli di app istantanea toccando un URL che hai mappato a questo modulo specifico e senza dovendo installare la tua app in qualsiasi momento.
In questa serie in tre parti, ti mostrerò come aggiungere il supporto Instant App ai tuoi progetti Android. Alla fine di questa serie, avrai creato un'applicazione che consiste in due moduli di funzione di app istantanea separati, che puoi avviare e testare su qualsiasi dispositivo Android compatibile.
In questo primo post, mi concentrerò su cosa sono le Instant Apps, come funzionano e perché dovresti occupartene. Per offrirti un'esperienza di prima mano delle app istantanee, utilizzeremo la procedura guidata per la creazione di progetti di Android Studio per generare un'app preconfigurata con il supporto dell'app istantanea, in modo da poter vedere tutti i diversi componenti delle app istantanee, piuttosto che semplicemente leggendo su di loro.
Mentre la creazione di un'app preconfigurata con il supporto delle app istantanee è il modo più semplice e rapido per utilizzare questa funzione, in realtà è molto più probabile aggiungere il supporto di Instant App a un progetto esistente, quindi nella seconda parte ti mostrerò come fare esattamente questo. Fornirò un'app che è possibile scaricare da GitHub, quindi ti guideremo attraverso il processo passo-passo di riconfigurazione di questo progetto per supportare le app istantanee.
Il pezzo finale del puzzle è la creazione di un'app istantanea multi-funzione, quindi nella terza parte ti mostrerò come aggiungere un secondo modulo funzione alla tua applicazione e come utilizzare i collegamenti delle app Android per associare questo modulo a un URL diverso.
Uno dei modi migliori per descrivere le app istantanee è guardare un esempio di quando potresti usarli.
Immagina che un amico ti abbia inviato un link a un video di gatto che promettono che stai per farlo amore, ma quando si tocca il collegamento diventa chiaro che è necessario scaricare un'applicazione prima di poter guardare questo particolare video.
Indipendentemente dal fatto che tu finisca per scaricare l'app, o ignorare il link e rischiare di perdere il miglior video di gatto che Internet ha da offrire, questa è una brutta esperienza utente - ed è uno scenario che molti utenti di Android hanno familiarità con.
Molti di noi hanno avuto l'esperienza di installare un'app solo per completare un'attività unica. Ad esempio, puoi scaricare un'app solo per visualizzare un allegato e-mail che qualcuno ti ha inviato, per completare un acquisto su un sito web specifico o per tracciare un pacchetto che sta attualmente volando verso il tuo indirizzo.
Ora immaginiamo di nuovo lo scenario del nostro gatto video, ma questa volta lo sviluppatore dell'applicazione ha inserito tutto il codice e le risorse necessarie per riprodurre i contenuti video all'interno del proprio modulo delle caratteristiche delle app istantanee e ha mappato questo modulo all'URL www.example.com/video. Questa volta, quando tocchi www.esempio.it/video/cat-video, Google Play riconosce che questo URL è associato a un modulo di app istantaneo e recupera tutto il codice e le risorse necessari per riprodurre questo video. Il risultato finale? Puoi goderti 20 secondi in cui un gatto gioca in una scatola senza dover installare nulla, ovvero a tanto migliore esperienza utente.
Come vedrai nel prossimo post di questa serie, l'aggiunta del supporto di Instant App a un progetto esistente può essere un processo scoraggiante, che spesso richiede di cambiare completamente il modo in cui la tua applicazione è strutturata.
Poiché la ristrutturazione di un progetto non è una decisione che dovresti prendere alla leggera, in questa sezione ti aiuterò a decidere se tutto il tempo e gli sforzi valgono davvero la pena, coprendo tutti i principali vantaggi dell'aggiunta del supporto Instant App al tuo progetti:
Prima di iniziare il nostro viaggio in app istantanea, vale la pena notare che attualmente ci sono alcune cose che le app istantanee non può fare:
Inoltre, la tua domanda deve:
Infine, se la tua app fa parte del programma Designed for Families, non puoi offrirla come un'app istantanea.
Prima di poter creare il tuo primo progetto con il supporto istantaneo delle app, devi avere il seguente o superiore installato:
Dovresti anche assicurarti di avere le ultime versioni della Libreria di supporto Android e del Repository Android, quindi apri il Manager SDK di Android Studio e installa tutti gli aggiornamenti disponibili.
Una volta installato tutto quanto sopra, sarai in grado di scaricare l'SDK di sviluppo di app istantanee:
Attualmente, puoi testare solo le app istantanee su un Nexus 5X, Nexus 6P, Pixel, Pixel XL o Galaxy S7 con Android 6.0 o versioni successive. Tuttavia, se non possiedi nessuno di questi dispositivi, puoi creare un dispositivo virtuale Android (AVD) che emula uno di questi dispositivi, con alcune condizioni: l'AVD deve utilizzare un'immagine x86 e deve includere le API di Google.
Poiché non possiedo nessuno di questi dispositivi, creerò un AVD che emula un pixel:
Infine, dovrai accedere a un account Google sul tuo AVD:
In Android Studio 3.0 Preview 1 e versioni successive, la creazione di un progetto con supporto per Instant App integrato è facile come selezionare una casella di controllo, quindi anziché descrivere solo le funzioni di app istantanee, creeremo un progetto di app istantanea e quindi utilizzeremo il resto di questo articolo ha un'esperienza di prima mano con i suoi vari componenti.
Tieni presente che questo progetto non presenta collegamenti delle app, quindi non potrai testare i componenti delle app istantanee sul tuo AVD (questo è qualcosa che esploreremo in dettaglio nella seconda parte).
Per creare il tuo progetto:
Immediatamente, possiamo vedere che questo progetto è strutturato in modo molto diverso dal tuo tipico progetto Android, e comprende i seguenti moduli:
Ad eccezione del modulo feature, qualsiasi progetto che supporti le app istantanee dovere avere tutti i moduli sopra, quindi esploriamo ciascuno di questi moduli in dettaglio.
Il concetto di un modulo applicativo potrebbe non essere una novità, ma quando il tuo progetto supporta le app istantanee, il manifest del modulo applicativo sembra molto più vuoto di quanto probabilmente sei abituato a:
C'è un motivo per cui questo file è così vuoto: quando costruisci il tuo progetto, il contenuto di tutti gli altri file Manifest presenti in tutto il tuo caratteristica di base e caratteristica i moduli sono uniti con questo file, quindi non rimarrà per sempre vuoto!
Se apri questo modulo build.gradle file, quindi noterai due nuovi elementi:
dependencies implementation project (': feature') progetto di implementazione (': base')
Qui, stiamo dichiarando che il nostro modulo applicativo ha una dipendenza dal caratteristica
modulo e base
modulo.
Quando si aggiunge il supporto dell'app istantanea a un progetto, si separano il codice e le risorse correlate in moduli funzione che possono funzionare indipendentemente dall'applicazione installabile. Tuttavia, questi moduli sono ancora parti della tua app installabile, piuttosto che entità separate, motivo per cui il nostro modulo applicativo sta dichiarando la funzione e i moduli base come dipendenze.
Ogni progetto di app istantanea deve includere un singolo modulo di funzionalità di base, che contiene il codice e le risorse utilizzate in tutti i moduli dell'applicazione. Ad esempio, se apri il nostro progetto base / res / mipmap cartella, quindi vedrai tutte le icone di avvio dell'applicazione, che saranno chiaramente utilizzate in più moduli.
Poiché contiene codice e risorse comuni, tutti dei moduli funzione del progetto dipendono da questo modulo funzione base singola.
Continuando su questo tema, il modulo delle caratteristiche di base contiene le voci Manifest che vengono utilizzate nell'intero progetto. Ad esempio, il tuo progetto base / src / main / AndroidManifest.xml il file contiene le impostazioni per l'icona, il tema e l'etichetta della tua applicazione:
L'altro elemento notevole è il modulo base build.gradle file, che contiene alcuni nuovi attributi:
// Tutte le feature di base e i moduli di funzionalità "regolari" usano il plugin com.android.feature, piuttosto che il plugin com.android.application // applica il plugin: 'com.android.feature' android compileSdkVersion 26 buildToolsVersion "26.0.0 "// Specifica che questa è l'unica funzione di base del progetto, usando l'espressione 'baseFeature true' // baseFeature true ... ... ... dependencies // Usa 'progetto applicazione' per aggiungere una dipendenza dal modulo delle caratteristiche di base, al tuo modulo 'app' del progetto installabile // progetto applicativo (': app') // Usa 'feature project' per fare riferimento al modulo feature del nostro progetto, opportunamente chiamato 'feature' // feature project (': feature')
Noterai anche che questo particolare build.gradle il file manca un ID applicazione
attributo e (allarme spoiler) troverai esattamente la stessa cosa quando verremo a ispezionare i nostri moduli build.gradle file. Il nostro progetto ID applicazione
è dichiarato nel modulo dell'applicazione build.gradle file solo.
Il progetto di applicazione (
:
app)
linea nel nostro modulo base build.gradle file (vedi sopra) assicura che il singolo del progetto ID applicazione
l'attributo è propagato attraverso tutti della nostra build.gradle file, motivo per cui questo attributo è mancante dal resto del nostro progetto.
Quando alla fine arriverete ad aggiungere il supporto di Instant App a un progetto esistente, il compito più importante sarà estrarre ciascuna funzionalità della vostra applicazione nel proprio modulo di funzionalità, poiché ogni modulo di funzionalità contiene il codice e le risorse necessarie per fornire questa funzionalità solo.
Se apri il nostro progetto caratteristica modulo, quindi vedrai che contiene il Attività principale
classe, in più activity_main e content_main file di risorse, in sostanza tutti i componenti inclusi in Attività di base modello.
Un singolo modulo feature può essere costituito da più attività, ma ogni modulo deve avere almeno un'attività definita come attività del punto di ingresso di questo modulo.
Ogni attività del punto di ingresso viene mappata su un URL specifico, in modo che quando l'utente tocca questo URL carica l'attività associata e l'utente ha accesso a questo particolare modulo di funzionalità.
Si designa l'attività del punto di ingresso di un modulo tramite manifest di quel modulo. In sostanza, è necessario aprire questo file e aggiungere quanto segue all'attività che si desidera utilizzare come punto di ingresso:
CATEGORY_LAUNCHER
e ACTION_MAIN
intenti.
elemento contenente tutte le informazioni sull'URL che si desidera mappare a questa attività del punto di ingresso. Android: autoVerify
attributo. Questo dice al sistema di controllare che la tua app abbia il permesso di agire come gestore predefinito per questo particolare URL. Questo è un meccanismo di sicurezza importante che aiuta a proteggere i proprietari di siti Web da app dannose che potrebbero tentare di dirottare i loro URL.Se apri il file manifest del nostro modulo funzione, vedrai che tutto questo codice è già stato aggiunto al nostro Attività principale
dichiarazione:
Il file finale che vedremo in questo modulo è il build.gradle file, che contiene alcune righe di codice degno di nota:
// Di nuovo, stiamo usando il plugin com.android.feature, piuttosto che com.android.application // applica il plugin: 'com.android.feature' android // Come accennato in precedenza, in questa sezione manca un 'applicationID' attributo // ... ... ... dipendenze implementazione fileTree (dir: 'libs', include: ['* .jar']) androidTestImplementation ('com.android.support.test.espresso: espresso-core: 2.2.2', exclude group: 'com.android.support', module: 'support-annotations') // Tutti i moduli feature hanno una dipendenza dal modulo feature di base, che stiamo dichiarando qui // progetto di implementazione (': base') testImplementation 'junit: junit: 4.12'
Poiché tutti i moduli funzione dipendono dal modulo delle caratteristiche di base, la prima volta che l'utente richiede qualunque funzionalità dalla tua applicazione, riceveranno il modulo delle caratteristiche di base più il modulo funzione a cui stanno effettivamente tentando di accedere.
Si noti che sebbene questo particolare progetto sia costituito da un modulo feature di base e un modulo funzione, se la tua app ha solo una funzione che vuoi rendere disponibile come app istantanea, allora è possibile creare un progetto che consiste in un modulo feature di base solo. Analizzeremo entrambi i "tipi" di progetto di app istantanea in questa serie.
Il modulo Instant App ha uno scopo semplice: agisce come un contenitore che prende tutti i tuoi moduli funzione e li trasforma in APK di app istantanee.
Se apri il modulo Instant App di questo progetto, vedrai che è praticamente vuoto a parte un build.gradle file, che dichiara semplicemente il tuo modulo funzione di base e il tuo modulo funzione come dipendenze:
applica il plug-in: progetto di implementazione 'com.android.instantapp' dependencies progetto di implementazione (': feature') (': base')
Dal momento che questo progetto non contiene collegamenti di app, non saremo in grado di testare i suoi componenti delle app istantanee, ma possiamo ancora eseguire questo progetto come app installabile. Questo potrebbe non sembrare particolarmente eccitante, ma tenendo presente che la maggior parte del codice e delle risorse del nostro progetto si trovano nel modulo delle caratteristiche delle app istantanee, è importante verificare come il nostro progetto funzioni come un'applicazione installabile.
Avviare l'AVD creato in precedenza o collegare uno smartphone o tablet Android fisico compatibile al computer di sviluppo, quindi selezionare Esegui> Esegui ...> app dalla barra degli strumenti di Android Studio.
Nonostante il fatto che tutti i nostri Attività principale
il codice si trova nel modulo funzione, una volta caricata la nostra app vedrai il Attività principale
Il pulsante di azione fluttuante (FAB) e Ciao mondo Messaggio. Quello che stiamo vedendo qui è il nostro modulo applicativo che prende il codice e le risorse che si trovano nella funzione di Instant App separata e nei moduli di funzionalità di base e li combina in un'app installabile.
In questo tutorial abbiamo esaminato in modo approfondito come funzionano le app istantanee ed esplorato i vari motivi per cui potresti voler aggiungere il supporto di Instant App ai tuoi progetti Android.
In un mondo ideale, la tua decisione di iniziare ad esplorare le app istantanee coinciderebbe perfettamente con l'inizio di un nuovo progetto Android, ma sfortunatamente, essendo uno sviluppatore raramente questo è conveniente! È molto più probabile che dovrai riconfigurare un progetto esistente per supportare le app istantanee, il che non è vero abbastanza semplice come selezionare una casella di controllo nella procedura guidata di creazione del progetto di Android Studio!
Nel prossimo post, daremo uno sguardo approfondito su come aggiungere il supporto istantaneo delle app a un progetto esistente. Ti mostrerò anche come implementare collegamenti di app, quindi alla fine del prossimo post avrai creato un'app istantanea completamente funzionante che potrai avviare e testare su qualsiasi dispositivo AVD o Android compatibile.
.