En mai, Google a annoncé la prochaine version de la plate-forme Android, Android M. Bien que l’on ignore encore ce que signifie le «M» (Marshmallow? Macaroon? Macadamia Nut Cookie?), Vous pouvez déjà mettre la main sur l’aperçu du développeur Android M . L'aperçu du développeur 2 est sorti il y a quelques jours à peine.
Dans ce didacticiel, nous verrons comment configurer votre environnement de développement et cette première version d'Android M avant d'explorer certaines des nouvelles fonctionnalités incluses dans cet aperçu pour les développeurs. Nous allons voir comment vous pouvez utiliser le nouveau Liaison de données une bibliothèque permettant de réduire le code général, comment votre application peut tirer parti du nouveau modèle d'autorisations d'Android M et comment la liaison des applications intégrées d'Android est appelée à devenir plus puissante dans Android M.
Bien que vous puissiez explorer les fonctionnalités d'Android M dans l'aperçu du développeur, n'oubliez pas qu'il s'agit d'une développement communiqué qui offre Aperçu API, vous devez donc vous attendre à des changements significatifs jusqu’au SDK final. Vous ne pouvez pas non plus publier des applications qui ciblent l'aperçu du développeur M sur Google Play..
Cet aperçu du développeur étant un travail en cours, il est important de garder votre environnement de développement à jour et de toujours travailler avec la toute dernière version de l'aperçu du développeur d'Android M. Pour vous assurer de ne manquer aucune mise à jour, vous pouvez créer un signet sur le blog des développeurs Android, rejoindre la communauté des développeurs Android M et noter les dates de publication (provisoires) de Google..
Si vous souhaitez commencer à expérimenter avec la version de prévisualisation du développeur Android M, vous aurez besoin d'Android Studio 1.3 bêta ou d'une version ultérieure..
L'équipe Android Studio publie des mises à jour via plusieurs canaux, stable, bêta, dev, et le canari canal. Malgré la bêta tag, vous trouverez Android Studio 1.3 beta sur le canal des Canaries.
Pour vous connecter au canal canarien:
À ce stade, Android Studio doit vous demander si vous souhaitez télécharger la dernière version de Canary. Cliquez sur Mettre à jour et redémarrer. Si vous ne voyez pas de boîte de dialogue, essayez de fermer le Préférences fenêtre en cliquant Mettre à jour. Cela devrait forcer la boîte de dialogue à apparaître.
Ensuite, ouvrez votre SDK Manager et téléchargez:
Et c'est tout. Votre environnement de développement est maintenant Android M-ready.
Dans les sections suivantes, je couvrirai quelques-unes des principales fonctionnalités introduites dans le kit de développement logiciel de prévisualisation et vous montrerai comment utiliser ces fonctionnalités dans vos propres projets Android M.
Si vous souhaitez créer un exemple de projet Android M et essayer vous-même certains extraits de code, créez simplement un nouveau projet Android normalement, mais définissez le SDK minimal sur MNC Android M (Aperçu).
Android M ajoute la liaison de données au jeu d'outils du développeur avec la sortie d'une bibliothèque de liaison de données dédiée. Cette nouvelle bibliothèque de liaisons de données vise à réduire la quantité de code que vous devez écrire en vous permettant de lier des données directement à des vues spécifiques dans vos fichiers de mise en page..
Le meilleur moyen de comprendre le fonctionnement de la liaison de données est de la voir en action. Donc, au lieu de regarder la théorie derrière la liaison de données, restons coincés dans du code.
Pour rendre la liaison de données disponible pour votre projet, vous devez ajouter la dépendance de la bibliothèque de liaison de données à celle de votre projet. build.gradle fichier. Ouvrez votre fichier de construction Gradle de niveau supérieur et ajoutez les éléments suivants:
… Dépendances classpath "com.android.tools.build:gradle:1.3.0-beta4" classpath "com.android.databinding: dataBinder: 1.0-rc0"
Vous devez également ajouter le plug-in de liaison de données à chaque module où vous souhaitez utiliser la liaison de données. Ouvrez votre module build.gradle déposer et ajouter ce qui suit:
appliquer le plugin: 'com.android.application' appliquer le plugin: 'com.android.databinding'
Avec la bibliothèque de liaison de données configurée, examinons un exemple de base de liaison de données. Imaginez que vous ayez un Étudiant
classe:
Classe publique Student public final String firstName; public Student (String firstName) this.firstName = firstName;
Vous souhaitez afficher le prénom de l'étudiant dans votre fichier de mise en page. Pour ce faire via la liaison de données, vous utiliseriez les éléments suivants dans votre fichier de mise en page:
Cette nouvelle
balise transforme votre fichier de présentation en un fichier de présentation de liaison de données.
Entre ceux-ci balises, vous listez toutes les variables que vous voulez lier aux éléments de votre interface utilisateur.
Cette ligne de code définit une variable, étudiant
dans ce cas, et décrit une propriété que vous pouvez ensuite utiliser dans votre mise en page.
Après la fermeture balise, vous pouvez créer le reste de votre mise en page comme d'habitude, la seule différence est que vous pouvez maintenant définir la propriété de
étudiant
à Prénom
dans votre fichier de mise en page.
android: text = "@ student.firstName" />
Android Studio peut signaler certaines erreurs jusqu'à ce que vous construisiez votre projet. En effet, la bibliothèque de liaisons de données doit générer une classe contenant les liaisons à partir des propriétés de présentation et sachant attribuer des valeurs aux expressions de liaison. Ce fichier n’est généré que lorsque vous générez votre projet, ouvrez le Construire menu et sélectionnez Faire un projet.
Android Studio construit votre projet et génère une nouvelle classe nommée d'après votre fichier de mise en forme, avec l'ajout d'un suffixe de liaison (par exemple,., ActivityMainBinding
).
Pour que cette liaison fonctionne, vous devez ajouter la classe de liaison à la onCreate ()
méthode de votre activité principale:
@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); ActivityMainBinding binding = DataBindingUtil.setContentView (this, R.layout.main_activity); Étudiant étudiant = nouvel étudiant ("Test"); binding.setStudent (étudiant);
Ceci est un exemple très simple de liaison de données. Lorsque vous utilisez la bibliothèque de liaisons de données dans vos propres projets, il est généralement utile de développer cet exemple de base et de donner à vos objets de données la possibilité de mettre à jour l'interface utilisateur de votre application chaque fois que la propriété de cet objet de données change. Pour voir un exemple de ce type de liaison de données en action, consultez le Guide de liaison de données officiel de Google..
Nous stockons tous plus d'informations personnelles que jamais sur nos smartphones et nos tablettes. Il est donc logique que Google donne aux utilisateurs un contrôle accru sur les informations auxquelles leurs applications mobiles ont accès dans Android M.
Jusqu'à présent, les applications Android adoptaient une approche du tout ou rien en matière d'autorisations. Lors de l'installation, les applications demandent toutes les autorisations dont elles pourraient éventuellement avoir besoin et les utilisateurs peuvent ensuite accepter ou refuser la liste complète des autorisations..
Android M introduit un tout nouveau modèle d'autorisations qui donne aux utilisateurs la possibilité de choisir quelles autorisations ils accordent à chaque application au moment de l'exécution. Pour l’essentiel, les applications demandent des autorisations au fur et à mesure de leurs besoins, puis l’utilisateur peut accepter ou refuser chaque autorisation..
Par exemple, l'utilisateur pourrait laisser l'application Facebook accéder à son emplacement mais pas au microphone ni à la caméra de son appareil. Les utilisateurs peuvent également révoquer les autorisations précédemment accordées. S'ils décident qu'ils ne veulent plus que Facebook connaisse leur position, ils peuvent toujours révoquer android.permission.ACCESS_FINE_LOCATION
.
Le nouveau modèle d'autorisations est une bonne nouvelle pour les utilisateurs d'Android soucieux de la sécurité, mais qu'est-ce que cela signifie pour les développeurs?
Tout d'abord, le nouveau modèle d'autorisations est uniquement pris en charge sur Android M. Bien que le système d'exploitation Android facilite réellement la compatibilité ascendante (comme vous le verrez dans une minute), votre application doit savoir si elle est installée sur un appareil fonctionnant sous Android M ou un appareil exécutant une version antérieure d'Android.
Vérifier la version d'Android peut sembler simple, mais cette tâche assez routinière devient un peu plus confuse en raison de la nature de développement uniquement d'Android M. Actuellement, pour que votre application vérifie si elle est installée sur l'aperçu du développeur Android M, vous devez utiliser le nom de code MNC.
retourne "MNC" .equals (Build.VERSION.CODENAME);
Toutefois, selon les exemples de code de Google, une fois l'API finalisée, votre application devrait utiliser les éléments suivants:
return Build.VERSION.SDK_INT == Build.VERSION_CODES.MNC;
Donc utiliser "MNC" .équals
pour le moment, mais ne soyez pas surpris si cela change avant la version finale du SDK. Assurez-vous également de revérifier ce morceau de code une fois que le SDK Android M final fait son apparition..
Quelle que soit la version d'Android sur laquelle votre appareil se termine, vous déclarez normalement toutes les autorisations de votre manifeste. Ensuite, si votre application est installée sur un appareil exécutant un logiciel autre qu'Android M, elle rétablit simplement l'ancien modèle d'autorisations et demande toutes les autorisations au moment de l'installation..
La gestion des demandes d'autorisation et des réponses sur Android M est un peu plus compliquée, mais vous déclarez toujours les autorisations exactement de la même manière, dans votre manifeste..
Le seul problème est que si votre application requiert une autorisation sur Android M uniquement, vous devez la déclarer à l'aide du nouveau
élément. Sur Android M,
se comporte exactement comme
, mais tout ce qui est déclaré avec
est ignoré sur les appareils pré-Android M.
Imaginez que votre application ait vérifié qu'elle est installée sur Android M, comment procéder pour demander des autorisations et gérer les réponses des utilisateurs?
Ce sont les différentes étapes:
Context.checkSelfPermission (nom_autorisation)
.Activity.requestPermissions (String [], int)
méthode. Lorsque vous appelez cette méthode, le système affiche une boîte de dialogue dans laquelle l'utilisateur peut accorder ou refuser l'autorisation. Vous remarquerez peut-être qu’il n’ya aucun moyen d’ajouter un String / @ StringRes
pour expliquer pourquoi vous faites cette demande. Par conséquent, s'il n'est pas immédiatement évident pourquoi votre application a besoin d'une autorisation particulière, vous souhaiterez peut-être donner des informations à l'utilisateur avant d'appeler. demandePermissions
.onRequestPermissionsResult (int, String [], int [])
méthode et passe les résultats.onRequestPermissionsResult ()
données, votre activité doit remplacer cette méthode:@Override public void onRequestPermissionsResult (int requestCode, Permissions de chaîne [], int [] grantResults) switch (requestCode) case YOUR_REQUEST_CODE: if (grantResults [0] == PackageManager.PERMISSION_GRANTED) else return;
Un nouveau modèle d'autorisations signifie de nouvelles meilleures pratiques. Voici quelques instructions qui peuvent vous aider à utiliser plus efficacement les paramètres d'autorisation détaillés d'Android M.
Chaque fois que votre application effectue une demande d'autorisation, vous donnez à l'utilisateur la possibilité de réduire les fonctionnalités de votre application en refusant cette demande. Donc, vous devez concevoir votre application pour faire le moins de demandes d'autorisation possible.
Vous voudrez peut-être également déterminer si vous pouvez obtenir les mêmes résultats en demandant à une autre application d'exécuter la tâche en question via une intention. Par exemple, au lieu de demander android.permission.CAMERA
, vous pourriez utiliser un MediaStore.ACTION_IMAGE_CAPTURE
intention.
L’utilisateur peut refuser tout (et même chaque) demande d'autorisation. Si cela se produit, assurez-vous que votre application ne se bloque pas, ne plante pas, ne fonctionne pas ou ne désactive pas des fonctionnalités sans aucune explication. Après tout, vos utilisateurs pourraient penser que votre application a un problème fondamental et risquent même de vous laisser un avis négatif sur Google Play..
La gestion des rejets varie en fonction de votre application, mais cela peut impliquer le retour d'un jeu de données vide, la suppression d'une option du menu de votre application ou l'affichage d'une fenêtre contextuelle expliquant que l'utilisateur peut déverrouiller cette fonctionnalité en accordant certaines autorisations à votre application.
Votre objectif est de fournir une expérience utilisateur exceptionnelle, quelles que soient les autorisations que l'utilisateur choisit d'accorder ou de refuser. Cela signifie que vous voulez vous assurer que votre application peut gérer toutes les éventualités et que le seul moyen de le faire est de tester.
Lorsque vous naviguez sur Internet, cliquer sur un lien fait souvent apparaître un Sélecteur d'applications dialogue. Bien que cela soit utile lorsque plusieurs applications peuvent gérer le contenu lié, cette étape supplémentaire n'est souvent pas nécessaire, en particulier lorsque vous ne disposez que d'une application capable de gérer le contenu en question..
Dans la prochaine version M, les liens intégrés aux applications d’Android font l’objet d’une mise à niveau visant à supprimer cette fonction souvent inutile. Sélecteur d'applications étape en associant automatiquement les applications à des domaines Web.
Par exemple, imaginons que vous ayez cliqué sur un lien vers un profil Twitter dans vos résultats de recherche Google. Dans Android M, le système vérifie si l'une de vos applications peut gérer cette URL Twitter et activer la liaison automatique. Android lancera ensuite l'application officielle Twitter sans afficher le Sélecteur d'applications dialogue (en supposant que Twitter est installé sur votre appareil).
C'est une bonne nouvelle si vous possédez un domaine Web lié à votre application. Une fois que vous avez associé votre site Web à votre application, chaque fois qu'un utilisateur clique sur un lien de votre site Web, le système d'exploitation lancera automatiquement votre application au lieu d'afficher le message. Sélecteur d'applications dialogue. Cela vous aide non seulement à offrir une expérience utilisateur plus transparente, mais cela permet de ramener l'utilisateur vers votre application, plutôt que de lui donner la possibilité d'utiliser une application tierce concurrente ou un navigateur Web..
Pour établir un lien entre votre application et un domaine Web personnel, vous devez héberger un fichier JSON sur le serveur. .bien connu emplacement sur votre domaine.
Si vous souhaitez que votre application gère automatiquement les liens associés à votre site Web (mywebsite.com), vous devez télécharger un fichier JSON à la racine de mywebsite.com..
Voici un exemple du contenu et de la mise en page d’un statement.json Le fichier indiquant que Android doit toujours utiliser votre application (myapp) pour afficher le contenu relatif à mywebsite.com:
http: //: /.well-known/statements.json ["relation": ["delegate_permission / common.handle_all_urls"], "target": "namespace": "android_app", "package_name": " "," sha256_cert_fingerprints ": [" 6C: EC: C5: 0E: 34: AE… EB: 0C: 9B "]]
le nom du paquet
clé fait référence au nom du package que vous avez déclaré dans le manifeste de votre application. La valeur de la sha256_cert_fingerprints
la clé est l'empreinte publique du certificat (SHA256) du certificat de signature de votre application.
Notez que dans la première version d’aperçu du développeur M, ce fichier JSON est vérifié via le protocole HTTP. Dans la version finale M, cela sera vérifié sur le protocole HTTPS chiffré. Encore une fois, c’est l’une des bizarreries de travailler avec un aperçu du développeur et quelque chose que vous voudrez surveiller les versions ultérieures..
La dernière étape consiste à dire au système d'exploitation Android qu'il n'a pas besoin d'inviter l'utilisateur à spécifier certains types de liens. Cela signifie ajouter le android: autoVerify = "true"
attribuer à chacun
tag dans le manifeste de votre application.
Quand le Android: autoVerify
Si l'attribut est présent dans le manifeste de votre application, le système d'exploitation Android vérifie ces liens lorsque l'utilisateur installe votre application pour la première fois. Essentiellement, une liste de noms d’hôte uniques est compilée à partir du
balises dans le package, et nouvelle M Android Filtre d'intention vérificateur Le composant tente d'extraire le fichier JSON de chaque nom d'hôte. Ces fichiers JSON sont ensuite comparés à l'ID de l'application et au certificat du package installé. Le gestionnaire de packages d'Android stocke le résultat..
Bien sûr, si cette vérification échoue, le comportement du lien de l'application ne sera pas disponible pour votre application. Mais en supposant que la vérification réussisse, Android M lancera automatiquement votre application chaque fois que l'utilisateur clique sur un lien lié à votre domaine Web..
Dans ce didacticiel, nous avons expliqué comment la liaison d'applications, le nouveau modèle d'autorisations et la bibliothèque de liaison de données fonctionneraient sous Android M. Nous avons également vu comment vous pouvez commencer à expérimenter avec ces nouvelles fonctionnalités aujourd'hui en configurant Android M aperçu du développeur dans Android Studio 1.3 beta ou supérieur.
Pour plus d'informations sur Android M, consultez la documentation officielle de Google. Vous trouverez ici plus d'informations sur les nouvelles fonctionnalités, un guide de test et, si vous souhaitez acquérir une expérience pratique d'Android M du point de vue de l'utilisateur, vous trouverez des images système que vous pouvez afficher en Flash sur votre appareil Android..