1. Quelques mots
2. Détails
SDK Android
Placez votre SDK Android dans votre répertoire domestique ou d'autres endroits qui ne sont pas liés à l'application. Certains IDE associeront le SDK lors de l'installation et placeront le SDK dans le même répertoire de l'IDE. Lorsque vous devez mettre à niveau (réinstaller) l'IDE ou remplacer l'IDE, vous trouverez quelque chose de mal. De plus, si votre IDE s'exécute sous un compte d'utilisateur au lieu de root, ne placez pas le SDK dans le répertoire au niveau du système, sinon une autorisation sudo est requise lorsque vous l'utilisez.
Système de construction
Le choix par défaut est Gradle. Ant a de nombreuses restrictions et est trop grande. Avec Gradle, vous pouvez le faire facilement:
- compiler différentes saveurs ou variantes d'application
-Créatiser les classes simples -script des tâches
-Merger et télécharger des dépendances
-Cystores personnalisés
-etc
Le plug-in Gradle pour Android est également désigné par Google comme le nouveau système de compilation standard, et Google continue de le mettre à niveau.
Structure du projet
Il existe deux options populaires: l'ancienne structure du projet Ant & Eclipse ADT; La nouvelle structure de projet Gradle & Android Studio. Vous devez choisir ce dernier. Si votre projet utilise une ancienne structure, remplacez-la.
Ancienne structure
Old-structure ├─ Assets├─ Libs├fique
Nouvelle structure
Nouvelle-structure ├─ Library-Foobar├─ App│ ├─ Libs│ ├─ Src│ ├fique AndroidManifest.xml│ ├fique Build.gradle│ └─ Proguard-Rules.Pro├fique Build.Gradle└fiques Setting.Gradle
La principale différence entre la nouvelle structure est le fractionnement du «Source Code Set» (Main, AndroidTest), qui est le concept de Gradle.
L'utilisation de "l'application" le plus haut niveau est utile pour distinguer votre application des autres projets de bibliothèque référencés par votre application (comme la bibliothèque-Foobar). Puis Settings.gradle conserve l'index de l'application à ces bibliothèques, et App / build.gradle peut pointer vers ces bibliothèques.
Gradle Configuration
Architecture générale Veuillez suivre Google's Guide sur Gradle pour Android;
Petites tâches (scripts), vous pouvez utiliser Gradle pour créer de petites tâches au lieu de Shell, Python ou Perl, etc. Pour plus de détails, veuillez vous référer à la documentation de Gradle;
mot de passe. Dans votre application build.gradle, vous devez définir SigningConfigs pour la compilation de publication. Les détails sont les suivants:
N'écrivez pas comme ce qui suit, il apparaîtra dans votre système de contrôle de version:
SigningConfigs {release {StoreFile File ("MyApp.KeyStore") StorePassword "Password123" Keyalias "thekey" KeyPassword "Password789"}}Au lieu de cela, vous devez créer un fichier gradle.properties qui ne sera pas ajouté au système de contrôle de version.
Keystore_password = mot de passe123key_password = mot de passe789
Ce fichier sera automatiquement importé par Gradle, vous pouvez donc l'utiliser dans build.gradle comme ceci:
SigningConfigs {release {try {StoreFile File ("myApp.keystore") StorePasswordKeyStore_Password Keyalias "thekey" keyPasswordkey_password} Catch (ex) {thrownewinvalidUserDataException ("vous devez définir keystore_password et key_password dans Gradle.properties.").}}}}}}}}}}}}}}}}(Si vous utilisez Maven, veuillez vous référer au document d'origine)
Bibliothèque
Jackson est une bibliothèque Java qui peut convertir des objets et des données JSON les uns dans les autres. GSON est également un choix tout aussi bon. Cependant, nous pensons que JSCKSON est meilleur car il prend en charge plusieurs façons de gérer JSON: streaming, modèle d'arbre de mémoire et entraîner la liaison des données JSON-POJO. Mais rappelez-vous, Jackson est plus grand que GSON, vous devriez donc le considérer comme vous le souhaitez, si vous voulez éviter la limite de méthodes 65K, il est préférable d'utiliser GSON. Autres options: Json-Smart et Boon JSON
Réseau, cache et images. Utilisez la volée ou la modernisation. La volée peut également être utilisée pour charger et mettre en cache des images. Si vous choisissez Retrofit, vous pouvez utiliser Picasso pour charger et mettre en cache des images. Utilisez ensuite OKHTTP pour effectuer une demande HTTP valide. Ces trois types: Retrofit, Picasso et OKHTTP proviennent tous de la même entreprise, donc elles se complètent. OKHTTP peut être utilisé pour se connecter à Volley.
Rxjava est une bibliothèque de programmation réactive, en d'autres termes, gère les événements asynchrones. (Pour plus de détails, veuillez vous référer au document d'origine)
Retrolambda est une bibliothèque Java qui vous aide à utiliser les expressions Lambda sur Android ou d'autres plates-formes avant JDK8. (Pour plus de détails, veuillez vous référer au document d'origine)
Enfin, n'oubliez pas les limitations de la méthode DEX et n'utilisez pas trop de bibliothèques. (Les applications Android, lorsqu'elles sont emballées dans des fichiers dex, ont une limite maximale: 65535 Méthodes de référence [1] [2] [3]. Si vous dépassez la limite, une erreur grave se produira.
Activités et fragments
Les fragments doivent être l'option par défaut pour votre interface d'interface d'interface utilisateur Android. Les fragments peuvent être réutilisés dans votre application. Nous vous recommandons d'utiliser des fragments au lieu d'activités pour dessiner des interfaces en fonction des points suivants:
Structure du package Java
La structure Java dans les applications Android est proche de la structure MVC (modèle-View-contrôleur). Dans Android, les fragments et l'activité sont en fait des classes de contrôleur. Dans un autre point de vue, ils font partie de l'interaction des utilisateurs, c'est-à-dire qu'ils appartiennent à la classe de vue de vue.
Par conséquent, il nous est difficile de distinguer strictement si un fragment (ou une activité) est un contrôleur ou une vue. Donc, du point de vue des forfaits Java, nous ferions mieux de mettre des fragments dans leurs propres packages de fragments, puis l'activité est dans le package le plus avancé (suivez les suggestions ci-dessus). Bien sûr, si vous voulez avoir 2 activités ou plus, vous créez un package d'activités.
De cette façon, toute la structure ressemble à une structure MVC typique. Un package de modèles contient des Pojos, qui sont utilisés pour convertir les données JSON obtenues par l'interface API, et un package de vues contient des vues, des notifications, des vues de barre d'action, des widgets, etc. Les adaptateurs sont une couche intermédiaire située entre les données et les vues. Cependant, ils ont généralement besoin de sortir la vue View via GetView (), afin que vous puissiez placer des adaptateurs dans l'emplacement du sous-package du package de vues.
Certaines classes de contrôleur au niveau de l'application qui appartiennent uniquement au système Android doivent être placées dans le package des gestionnaires. Diverses classes de traitement des données, telles que les DateUtils, peuvent être placées dans le package UTILS. Les classes qui interagissent avec le serveur d'arrière-plan doivent être placées dans le package réseau.
En bref, l'architecture globale de l'interaction avec le serveur pour interagir avec l'utilisateur peut être conçue comme suit:
com.futurice.project ├─ Réseau ├─ Modèles ├─ Gestionnaires ├─ Utils ├─ Fragments ├─ Vues ├─ Adaptors ├─ Action ├dresse widgets ├─ Notifications
Dénomination des fichiers de ressources
Suivez la convention de préfixe, similaire à type_foo_bar.xml, telles que: fragment_contact_details.xml, View_primary_button.xml, activité_main.xml.
Organisez des fichiers de mise en page
Si vous ne savez pas comment normaliser un fichier XML de mise en page, vous pouvez vous référer aux conventions suivantes:
<? xml version = "1.0" Encoding = "utf-8"?> <linearlayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tool Android: Layout_Height = "Match_Parent" Android: Layout_Height = "Match_Parent" Android: Orientation = "Vertical"> <TextView Android: ID = "@ + id / name" Android: Layout_Width = "Match_Parent" Android: Layout_Height = "Wrap_Content" Android: Sayout_AlignPaRentRright = "True" et Text = "Text / Nom / Nom style = "@ style / sancytex