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..
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..
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.
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:
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:
De plus, votre candidature doit:
Enfin, si votre application fait partie du programme Designed for Families, vous ne pouvez pas l'offrir comme application instantanée..
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:
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:
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:
Enfin, vous devez vous connecter à un compte Google sur votre AVD:
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:
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:
À 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.
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..
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.
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:
CATEGORY_LAUNCHER
et ACTION_MAIN
l'intention.
élément contenant toutes les informations sur l'URL que vous souhaitez mapper à cette activité de point d'entrée. 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..
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')
É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é principale
bouton 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..
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..
.