Le nouveau ResourceProvider – Le démarrage
Si vous avez suivi mon travail, vous savez que je suis obsédé par les architectures logicielles MVP Passive View et que je suis constamment à la recherche de nouvelles et meilleures façons de les implémenter. Entrer ResourceProvider: Le processeur d’annotation que j’ai écrit pour générer des API de gestion des ressources agnostiques pour le développement d’applications Android.
Beaucoup d’entre vous pourraient affirmer que la définition de ressources peut simplement être une responsabilité que vous déléguez à la classe View dans votre système MVP, mais la logique autour de laquelle les chaînes et les images vont là où doit aller dans le présentateur, et cela peut conduire à écrire beaucoup de View API de classe avec des noms comme setErrorTextForInvalidAmount (), ce qui peut être fastidieux et prendre du temps.
Au lieu de cela, ResourceProvider examine votre fichier R.java et génère quelques classes utiles qui contiennent toutes les API que vous pourriez souhaiter, en fonction des options que vous définissez. De cette façon, votre présentateur peut gérer de manière affective la logique liée aux ressources, sans être pollué par une instance de contexte Android. Le processeur générera des API uniquement pour les chaînes, ou les chaînes et les drawables, ou toute combinaison de ressources que vous souhaitez. Ou… eh bien… il faisait ça.
Ok, donc je ne l’ai pas cassé, autant que ne pas le mettre à jour, puis tout le reste l’a cassé. Eh bien, pas tout, autant que spécifiquement le Plugin Android Gradle. En fait, dans la version 3.6.0 de l’AGP, ils ont cessé de générer le fichier R.java, et ont commencé à générer directement la classe R en tant que bytecode, et à en faire un JAR. Du notes de version:
Génération de classe R plus rapide pour les projets de bibliothèque: Auparavant, le plugin Android Gradle générerait un
R.java
fichier pour chacune des dépendances de votre projet, puis compilez ces classes R avec les autres classes de votre application. Le plugin génère maintenant un JAR contenant directement la classe R compilée de votre application, sans intermédiaire intermédiaire de constructionR.java
Des classes. Cette optimisation peut considérablement améliorer les performances de génération pour les projets qui incluent de nombreux sous-projets et dépendances de bibliothèque, et améliorer la vitesse d’indexation dans Android Studio.
Vous pouvez toujours forcer la génération de R.java, mais cela disparaîtra bientôt, j’ai donc décidé de:
Oui, j’ai recommencé à zéro et je suis heureux de dire qu’à partir d’aujourd’hui, vous pouvez commencer à utiliser le nouveau plugin Resource Provider dans vos projets Android MVP avec quelques ajouts rapides à votre script de construction. J’espère que bientôt je pourrai publier la source, mais d’ici là, vous pouvez commencer à jouer avec elle en ajoutant ces lignes en haut de votre fichier build.gradle:
Après cela, il vous suffit d’indiquer à ResourceProvider l’ID de l’application Android. Il s’agit du nom du package spécifié dans votre AndroidManifest.xml ou votre build.gradle. J’aime le faire en configurant une variable ext pour elle, puis en l’utilisant partout:
La totalité de la generateXProvider les variables indiquées ci-dessus sont facultatives et par défaut vrai. Mais pour réduire le nombre de méthodes, s’il y en a dont vous n’avez pas besoin, vous pouvez simplement les désactiver.
Le nouveau plugin ResourceProvider générera exactement le même code que l’ancien fournisseur d’annotations, donc si vous l’utilisez actuellement, vous pouvez simplement déposer le remplacement et vous fonctionnerez à nouveau avec AGP version 3.6.0 et supérieure.
Pour l’instant, laissez des questions ou des problèmes dans les commentaires, et j’essaierai de publier un nouveau dépôt bientôt.
Le dépôt github RP2 est maintenant disponible, tout comme la version 1.1.0, qui inclut des corrections de bogues et la prise en charge des projets Kotlin