Que sont les applications instantanées Android?

Chaque fois que vous publiez une application Android, vous aurez au moins une idée approximative de ce que vous souhaitez que cette application atteigne.. 

Ces objectifs peuvent être très spécifiques, tels que générer un certain montant de revenus publicitaires au premier trimestre, ou être plus généraux, comme obtenir une note élevée sur Google Play..

Quel que soit le contenu de votre liste de souhaits, vous devez placer votre application devant le plus grand nombre d'utilisateurs possible. toujours va figurer quelque part sur cette liste - et Android Instant Apps est une nouvelle fonctionnalité qui peut vous aider à le faire.

Les applications instantanées vous offrent un moyen totalement nouveau d’atteindre les utilisateurs qui n’ont pas votre application actuellement installée sur leur appareil en rendant votre application détectable et accessible depuis n’importe quel emplacement prenant en charge les URL, y compris les e-mails, les résultats de recherche Google et les publications sur les réseaux sociaux. plateformes, commentaires sur YouTube et forums.

Les applications instantanées vous permettent essentiellement de séparer chacune des fonctionnalités de votre application en un module autonome. Les utilisateurs peuvent ensuite charger n'importe lequel de ces modules d'application instantanés à la demande en appuyant sur une URL que vous avez mappée sur ce module spécifique. sans pour autant avoir à installer votre application à tout moment.

Dans cette série en trois parties, je vais vous montrer comment ajouter le support Instant App à vos projets Android. À la fin de cette série, vous avez créé une application composée de deux modules de fonctionnalités Instant App distincts, que vous pouvez lancer et tester sur tout appareil Android compatible.. 

Ce que nous allons couvrir

Dans ce premier article, je vais me concentrer sur ce que sont les applications instantanées, leur fonctionnement et les raisons pour lesquelles vous devriez vous en soucier. Pour vous donner une expérience pratique des applications instantanées, nous utiliserons l'assistant de création de projet d'Android Studio pour générer une application préconfigurée avec le support Instant App. Vous pourrez ainsi voir tous les différents composants Instant App, plutôt que que simplement lire à leur sujet.

Bien que la création d’une application préconfigurée avec le support Instant App soit le moyen le plus rapide et le plus simple d’utiliser cette fonctionnalité, vous êtes en réalité beaucoup plus susceptible d’ajouter un support Instant App à un projet existant. Par conséquent, dans la deuxième partie, je vous montrerai comment faire exactement cela. Je vais vous fournir une application que vous pouvez télécharger depuis GitHub, puis vous guider pas à pas dans la procédure de reconfiguration de ce projet pour prendre en charge Instant Apps..

La dernière pièce du puzzle consiste à créer une application instantanée multi-fonctions. Dans la troisième partie, je vous montrerai comment ajouter un deuxième module de fonctionnalités à votre application et comment utiliser les liens d'applications Android pour mapper ce module sur une autre URL.. 

Que sont les applications instantanées??

Une des meilleures façons de décrire Instant Apps est de regarder un exemple d'utilisation possible..  

Imaginez qu'un ami vous ait envoyé un lien vers une vidéo de chat avec laquelle il vous promet amour, mais lorsque vous appuyez sur le lien, il devient évident que vous devez télécharger une application avant de pouvoir regarder cette vidéo.  

Que vous finissiez par télécharger l'application, ou que vous ignoriez le lien et que vous risquiez de manquer la meilleure vidéo de chat offerte par Internet, il s'agit d'une mauvaise expérience utilisateur - et c'est un scénario que beaucoup d'utilisateurs d'Android connaissent bien.. 

La plupart d'entre nous ont déjà installé une application pour effectuer une tâche unique. Par exemple, vous pouvez télécharger une application uniquement pour afficher une pièce jointe que quelqu'un vous a envoyée, pour effectuer un achat sur un site Web spécifique ou pour suivre un package en cours d'acheminement vers votre adresse..

Imaginons à nouveau le scénario vidéo de notre chat, mais cette fois-ci, le développeur de l'application a placé tout le code et toutes les ressources nécessaires pour lire du contenu vidéo dans son propre module de fonctionnalité d'application instantanée, et a mappé ce module sur l'URL www.example.com/video. Cette fois, lorsque vous appuyez sur www.example.com/video/cat-video, Google Play reconnaît que cette URL est associée à un module d'application instantané et récupère tout le code et les ressources nécessaires à la lecture de cette vidéo. Le résultat final? Vous pouvez profiter de 20 secondes d’un chat jouant dans une boîte sans rien installer, ce qui est une beaucoup meilleure expérience utilisateur.  

Pourquoi devrais-je commencer à utiliser la fonctionnalité Instant App??

Comme vous le verrez dans le prochain article de cette série, l'ajout de la prise en charge d'Instant App à un projet existant peut s'avérer un processus fastidieux qui nécessite souvent de modifier complètement la structure de votre application..

Étant donné que la restructuration d'un projet n'est pas une décision à prendre à la légère, je vais vous expliquer dans cette section si le temps et les efforts consacrés en valent vraiment la peine, en décrivant tous les avantages majeurs de la prise en charge d'Instant App. projets:

  • Cela supprime la barrière entre votre application et les nouveaux utilisateurs.. L'installation d'une application via Google Play n'est pas un processus particulièrement difficile ou fastidieux, mais reste le principal obstacle entre votre application et les nouveaux utilisateurs potentiels. Peu importe le temps que vous passez à créer une page Google Play convaincante qui plaira à la majorité des utilisateurs. Installer bouton, certaines personnes vont toujours abandonner au moment de l'installation. 
  • Cela vous aide à atteindre de nouveaux utilisateurs. Bien que vous ayez toujours été en mesure de promouvoir votre application à divers endroits sur le Web, tels que votre propre site Web, votre blog ou les médias sociaux, la connexion avec les nouveaux utilisateurs leur a déjà demandé de visiter la page Google Play de votre application à un moment donné (avec le rare exception des utilisateurs qui préfèrent ne pas charger leurs applications). Les applications instantanées suppriment cette dépendance vis-à-vis de la page Google Play de votre application en rendant votre application directement accessible depuis n'importe quel emplacement prenant en charge les URL, vous offrant ainsi des possibilités presque illimitées de vous connecter à de nouveaux utilisateurs.. 
  • Cela garantit que le contenu partagé est la meilleure publicité possible pour votre application.. Un utilisateur partageant le contenu de votre application est l’un des moyens les plus efficaces d’atteindre un nouveau public. Vous souhaitez donc faire bonne impression! Auparavant, il était difficile de fournir une expérience cohérente aux utilisateurs qui n'ont pas installé votre application sur leur appareil, mais les applications instantanées vous permettent de garantir une expérience transparente et native pour les utilisateurs. toutes les personnes.
  • Aide les utilisateurs à accéder à votre application, même en dépit des restrictions d'Internet. Bien que la couverture Internet s'améliore constamment, vous pouvez parfois avoir du mal à trouver un réseau rapide et fiable, ou vous approchez de votre limite mensuelle de données et craignez des frais supplémentaires. Lorsque vous êtes confronté à une connexion Internet lente ou incohérente, le téléchargement d'une application entière peut être un processus fastidieux et frustrant. Lorsque vous risquez de dépasser votre limite de données, le téléchargement d'une nouvelle application peut être suffisant frais supplémentaires. Tous les modules d'application instantanée doit être de 4 Mo ou moins, donc même si le téléchargement d'une application entière est hors de question, alors accéder à un module d'application instantané peut toujours être une option viable. 
  • Augmenter l'attrait des applications sensibles à la localisation et au temps. Bien que les applications conçues pour un lieu ou un événement spécifique ne constituent pas un nouveau concept, posez-vous la question suivante: quelle est la probabilité d’installer une application que je sais que je ne pourrai utiliser que pendant une période limitée ou dans un environnement différent? certain endroit? Les applications instantanées peuvent augmenter l'attrait des applications sensibles au temps et à la localisation, en permettant à l'utilisateur d'accéder à toutes les fonctionnalités les plus importantes de votre application en un clic d'une URL.. 

Restrictions et Limitations

Avant de commencer notre parcours d’applications instantanées, il convient de noter qu’il existe actuellement quelques fonctionnalités que les applications instantanées ne peux pas faire:

  • Identificateurs de périphérique d'accès tels que les adresses IMEI et MAC.
  • Utiliser les services d'arrière-plan.
  • Effectuer des notifications en arrière-plan. 
  • Accéder au stockage externe de l'appareil.
  • Accédez à la liste des applications installées sur le périphérique de l'utilisateur, à moins que ces applications ne se soient spécifiquement rendues découvrables pour les applications instantanées..

De plus, votre candidature doit: 

  • Être téléchargeable gratuitement sur le Google Play store.
  • Utilisez le nouveau modèle d'autorisations introduit dans Android 6.0 (API de niveau 23). Étant donné que l'utilisateur n'installe pas d'application instantanée, il n'est pas possible de demander des autorisations à l'avance. Si vos modules de fonctionnalités d'application instantanée nécessitent un accès à des fonctionnalités de périphérique sensibles ou à des informations utilisateur, vous devez demander ces autorisations au moment de l'exécution.. 
  • Support App Links. C'est le mécanisme que vous utiliserez pour mapper chacun de vos modules d'application instantanée sur une URL spécifique. Je couvrirai les liens de l'application en détail dans le prochain post. 

Enfin, si votre application fait partie du programme Designed for Families, vous ne pouvez pas l'offrir comme application instantanée.. 

Configuration de votre environnement de développement

Avant de pouvoir créer votre premier projet avec une prise en charge instantanée des applications, vous devez avoir préalablement installé les logiciels suivants:

  • Android Studio 3.0 Aperçu
  • Android SDK 6.0
  • Outils de génération de SDK Android 26.x
  • Outils de SDK Android 25.x
  • Outils de plate-forme SDK Android 25.x

Assurez-vous également de disposer des dernières versions de la bibliothèque de support Android et du référentiel Android. Ouvrez donc le SDK Manager d'Android Studio et installez les mises à jour disponibles.. 

Une fois que vous avez installé tout ce qui précède, vous pourrez télécharger le kit de développement logiciel Instant Apps Development: 

  • Ouvrez le SDK Manager et sélectionnez le Outils SDK languette. 
  • Sélectionner Kit de développement logiciel Instant Apps.
  • Cliquez sur Appliquer.

Actuellement, vous ne pouvez tester que des applications instantanées sur un Nexus 5X, un Nexus 6P, un Pixel, un Pixel XL ou un Galaxy S7 exécutant Android 6.0 ou une version ultérieure. Toutefois, si vous ne possédez aucun de ces périphériques, vous pouvez créer un périphérique virtuel Android (AVD) qui émule l'un de ces périphériques, à quelques conditions près: le AVD doit utiliser une image x86 et inclure les API Google..

Comme je ne possède aucun de ces appareils, je vais créer un AVD qui émule un pixel: 

  • Lancer le gestionnaire AVD.
  • Clique le Créer un périphérique virtuel… bouton.
  • Sélectionner Pixel, puis cliquez sur Suivant.
  • Sélectionnez le Images x86 languette. 
  • Sélectionnez une image système exécutant Android 6.0 et incluant les API Google, par exemple. Marshmallow / 23 / x86 / Android 6.0 (API Google).
  • Cliquez sur Suivant.
  • Donnez un nom à votre AVD, puis cliquez sur terminer.
  • Lancez votre AVD.

Enfin, vous devez vous connecter à un compte Google sur votre AVD:

  • Basculez sur votre AVD et ouvrez le lanceur de l'appareil.
  • Sélectionnez le Google app.
  • Entrez une adresse Gmail et un mot de passe. Il peut s'agir de votre compte réel ou d'un compte créé uniquement à des fins de test de vos projets Android.. 

Création de votre première application instantanée 

Dans Android Studio 3.0 Preview 1 et les versions ultérieures, créer un projet intégrant la prise en charge d'Instant App est aussi simple que de cocher une case. Par conséquent, plutôt que de simplement décrire les fonctionnalités d'Instant App, nous allons créer un projet Instant App, puis passer le reste de cet article en obtenant une expérience de première main avec ses divers composants. 

Sachez simplement que ce projet ne contient aucun lien d'application, vous ne pourrez donc pas tester ses composants Instant App sur votre AVD (nous allons explorer cela en détail dans la deuxième partie)..

Pour créer votre projet:

  • Lancez l’assistant de création de projet, soit en sélectionnant Fichier> Nouveau> Nouveau projet… depuis la barre d’outils Android Studio, ou en cliquant sur Démarrer un nouveau projet Android Studio d'Android Studio Bienvenue écran. 
  • Donnez un nom à votre projet, puis cliquez sur Suivant
  • Met le SDK minimum vers Android 6.0 (guimauve). 
  • Sélectionnez le Inclure le support Android Instant App case à cocher, et cliquez Suivant
  • Pour que les choses restent simples, acceptez le nom du module par défaut (fonctionnalité) puis cliquez sur Suivant.
  • Sélectionner Activité de base puis cliquez sur Suivant.
  • Sur l'écran suivant, acceptez toutes les valeurs par défaut, puis cliquez sur terminer.

Immédiatement, nous pouvons voir que ce projet est structuré de manière très différente de votre projet Android typique et comprend les modules suivants:

  • App. Le module d'application installable, également appelé module APK. 
  • Base. Le module de fonctionnalités de base.
  • Fonctionnalité. Bien que ce projet particulier n'en ait qu'un, une application peut comporter plusieurs modules de fonctionnalités..
  • Instantapp. Le module d'application instantanée. 

À l'exception du module de fonctionnalité, tout projet prenant en charge les applications instantanées doit avoir tous les modules ci-dessus, alors explorons chacun de ces modules en détail.  

1. Module d'application

Le concept d'un module d'application n'est peut-être pas nouveau, mais lorsque votre projet prend en charge les applications instantanées, le manifeste du module d'application semble beaucoup plus vide que ce à quoi vous êtes probablement habitué: 

Ce fichier est si vide pour une raison: lorsque vous construisez votre projet, le contenu de tous les autres fichiers Manifest situés dans votre caractéristique de base et fonctionnalité les modules sont fusionnés avec ce fichier, donc ça ne va pas rester à jamais vide! 

Si vous ouvrez ce module build.gradle fichier, alors vous remarquerez deux nouveaux éléments: 

dépendances projet d'implémentation (': fonctionnalité') projet d'implémentation (': base')

Ici, nous déclarons que notre module d’application dépend du fonctionnalité module et base module. 

Lorsque vous ajoutez la prise en charge d'Instant App à un projet, vous séparez le code et les ressources associés en modules de fonctionnalités pouvant fonctionner indépendamment de l'application pouvant être installée. Cependant, ces modules font toujours partie de votre application installable, plutôt que des entités séparées. C'est pourquoi notre module d'application déclare les modules de fonctionnalité et de base comme des dépendances..

2. Module de fonctions de base

Chaque projet d'application instantanée doit inclure un seul module de fonctionnalités de base, contenant le code et les ressources utilisés dans tous les modules de votre application. Par exemple, si vous ouvrez notre projet base / res / mipmap dossier, alors vous verrez toutes les icônes de lanceur de l'application, qui vont clairement être utilisés sur plusieurs modules. 


Puisqu'il contient du code commun et des ressources, tout des modules de fonctionnalités de votre projet dépendent de ce module de fonctionnalités de base unique. 

Poursuivant sur ce thème, le module de fonctionnalité de base contient les entrées du manifeste utilisées dans l'ensemble de votre projet. Par exemple, votre projet base / src / main / AndroidManifest.xml Le fichier contient les paramètres de l'icône, du thème et de l'étiquette de votre application: 

   

L’autre élément notable est le module de base build.gradle fichier, qui contient quelques nouveaux attributs:

// Toutes les fonctionnalités de base et les modules de fonctionnalités «standard» utilisent le plugin com.android.feature plutôt que le plugin com.android.application // apply plugin: 'com.android.feature' android compileSdkVersion 26 buildToolsVersion "26.0.0 "// Spécifiez qu'il s'agit de la seule et unique fonctionnalité de base du projet, à l'aide de l'expression 'baseFeature true' // // baseFeature true……… dépendances // Utilisez 'projet d'application' pour ajouter une dépendance du module de fonctionnalité de base à votre module 'app' installable du projet // projet d'application (': app') // Utilisez 'projet de fonctionnalité' pour référencer le module de fonctionnalité de notre projet, ainsi nommé 'fonctionnalité' // projet de fonctionnalité (': fonctionnalité') 

Vous remarquerez également que ce particulier build.gradle il manque un fichier ID d'application attribut, et (alerte spoiler) vous trouverez exactement la même chose quand nous allons inspecter notre module de fonctionnalité build.gradle fichier. Nos projets ID d'application est déclaré dans le module d'application build.gradle fichier seulement.

le projet d'application (:app) ligne dans notre module de base build.gradle fichier (voir ci-dessus) garantit que le fichier unique du projet ID d'application attribut est propagé à travers tout de nôtre build.gradle fichiers, raison pour laquelle cet attribut est absent du reste de notre projet. 

3. Module de fonctionnalités

Lorsque vous finirez par ajouter le support Instant App à un projet existant, votre tâche la plus importante sera d'extraire chacune des fonctionnalités de votre application dans son propre module de fonctionnalité, car chaque module de fonctionnalité contient le code et les ressources nécessaires pour fournir cette fonctionnalité. seulement. 

Si vous ouvrez notre projet fonctionnalité module, alors vous verrez qu'il contient la Activité principale classe, plus activité_main et content_main fichiers de ressources - essentiellement tous les composants qui sont inclus dans le Activité de base modèle.  

Un module à fonctionnalité unique peut comporter plusieurs activités, mais chaque module doit avoir au moins une activité désignée comme activité d'entrée de ce module.. 

Chaque activité de point d'entrée est associée à une URL spécifique. Ainsi, lorsque l'utilisateur appuie sur cette URL, il charge l'activité associée et l'utilisateur a accès à ce module de fonctionnalité particulier.. 

Vous désignez l'activité du point d'entrée d'un module via le manifeste de ce module. Pour l’essentiel, vous devez ouvrir ce fichier et ajouter les éléments suivants à l’activité que vous souhaitez utiliser comme point d’entrée: 

  • Un filtre d'intention, avec le CATEGORY_LAUNCHER et ACTION_MAIN l'intention.
  • UNE élément contenant toutes les informations sur l'URL que vous souhaitez mapper à cette activité de point d'entrée. 
  • le Android: autoVerify attribut. Cela indique au système de vérifier que votre application est autorisée à agir en tant que gestionnaire par défaut pour cette URL particulière. Il s'agit d'un mécanisme de sécurité important qui aide à protéger les propriétaires de sites Web contre les applications malveillantes susceptibles de détourner leurs URL..

Si vous ouvrez le fichier manifeste de notre module de fonctionnalités, vous verrez que tout ce code a déjà été ajouté à notre Activité principale déclaration:

            

Le fichier final que nous allons examiner dans ce module est le build.gradle fichier, qui contient quelques lignes de code remarquable: 

// Encore une fois, nous utilisons le plugin com.android.feature, plutôt que com.android.application // apply plugin: 'com.android.feature' android // Comme mentionné précédemment, cette section manque d'un 'applicationID' attribut //……… dépendances implementation fileTree (dir: 'libs', inclure: ['* .jar'])) androidTestImplementation ('com.android.support.test.espresso: espresso-core: 2.2.2',  groupe d'exclusion: 'com.android.support', module: 'annotations-support') // Tous les modules de fonctions ont une dépendance sur le module de fonctions de base, que nous déclarons ici // projet d'implémentation (': base') testImplementation 'junit: junit: 4.12' 

Puisque tous les modules de fonctions dépendent du module de fonctions de base, la première fois que l'utilisateur demande tout fonctionnalité de votre application, ils recevront le module de fonctionnalité de base plus le module de fonctionnalité qu'ils essaient réellement d'accéder. 

Notez que bien que ce projet particulier consiste en un module de fonctionnalités de base et un module de fonctionnalités, si votre application ne dispose que d'une fonctionnalité que vous souhaitez rendre disponible en tant qu'application instantanée, vous pouvez créer un projet constitué d'un module de fonctionnalités de base. seulement. Nous examinerons les deux "types" de projets Instant App tout au long de cette série.. 

4. Module d'application instantanée

Le module Instant App a un but simple: il agit comme un conteneur qui prend tous vos modules de fonctionnalités et les transforme en APK Instant App..

Si vous ouvrez le module Instant App de ce projet, vous verrez qu'il est pratiquement vide, à part un build.gradle fichier, qui déclare simplement votre module de fonctionnalité de base et votre module de fonctionnalité comme dépendances:

apply plugin: dépendances 'com.android.instantapp' projet d'implémentation (': fonctionnalité') projet d'implémentation (': base')

Tester votre application

Étant donné que ce projet ne contient aucun lien d'application, nous ne pourrons pas tester ses composants d'application instantanés, mais nous pouvons toujours exécuter ce projet en tant qu'application installable. Cela ne semble pas particulièrement excitant, mais étant donné que la majeure partie du code et des ressources de notre projet se trouvent dans le module de fonctionnalités d'application instantanée, il est important de tester le fonctionnement de notre projet en tant qu'application installable.. 

Lancez l’AVD créé précédemment ou connectez un smartphone ou une tablette Android physique compatible à votre ordinateur de développement, puis sélectionnez Exécuter> Exécuter…> app depuis la barre d'outils Android Studio. 

Malgré le fait que tous nos Activité principale le code est situé dans le module de fonctionnalité, une fois que notre application se charge, vous verrez le Activité principalebouton d’action flottant (FAB) et Bonjour le monde message. Nous voyons ici que notre module d’application prend le code et les ressources qui se trouvent dans des modules de fonctionnalités Instant App et de fonctionnalités de base séparés, et les combine dans une application installable.. 

Conclusion 

Dans ce didacticiel, nous avons examiné en détail le fonctionnement d’Applications instantanées et exploré les différentes raisons pour lesquelles vous voudriez peut-être ajouter le support Instant App à vos projets Android.. 

Dans un monde idéal, votre décision d'explorer Instant Apps coïnciderait parfaitement avec le lancement d'un nouveau projet Android, mais malheureusement, être développeur est rarement aussi pratique! Il est beaucoup plus probable que vous deviez reconfigurer un projet existant pour prendre en charge Instant Apps, ce qui n'est pas le cas. assez aussi simple que de cocher une case dans l'assistant de création de projet d'Android Studio! 

Dans le prochain article, nous examinerons en détail comment ajouter une prise en charge instantanée des applications à un projet existant. Je vais également vous montrer comment implémenter des liens d'application. Ainsi, à la fin du prochain article, vous aurez créé une application instantanée entièrement opérationnelle que vous pourrez lancer et tester sur tout appareil compatible AVD ou Android.. 

.