Portée de dépendance apt dans Android gradle – à quoi sert-il?

Quelle est la portée de dépendance apt dans les fichiers android gradle que je vois parfois?

Un exemple ressemble à ceci?

  • Comment fonctionne android Store and Run Program
  • Comment charger mon application d'Eclipse sur mon téléphone Android au lieu de AVD
  • Je continue d'obtenir une erreur "Aucune activité trouvée pour gérer l'intention"
  • Comment puis-je modifier le parent hiérarchique d'une activité?
  • Pourquoi les noms de fichiers de mise en page Android sont-ils si limités?
  • Utilisation de ProgressDialog dans ActionBar (Android)
  • apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' android { compileSdkVersion 20 buildToolsVersion '20.0.0' defaultConfig { applicationId "org.ligboy.test.card.module1" minSdkVersion 14 targetSdkVersion 20 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } final DAGGER_VERSION = '2.0.2' dependencies { compile "com.google.dagger:dagger:${DAGGER_VERSION}" apt "com.google.dagger:dagger-compiler:${DAGGER_VERSION}"//what is this scope provided 'org.glassfish:javax.annotation:10.0-b28' } 

    Et dans le fichier build.gradle de niveau supérieur, il possède cette dépendance globale:

     buildscript { dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' } } 

    Remarque dans la section des dépendances, il existe une portée appropriée? Je ne connais que la compilation, le paquet et la portée fournie. La compilation comprend la dépendance au moment de la compilation et dans votre paquet, à condition que les mots incluent seulement la bibliothèque au moment de la compilation et la rejettent à l'heure du paquet, de sorte qu'il ne soit pas inclus dans la version finale. Et le paquet est l'inverse, il inclut la dépendance dans le paquet et non au moment de la compilation. Mais quelle est la portée de dépendance apt que nous avons évidemment besoin de com.neenbedankt.android-apt pour qu'il fonctionne, je sais qu'il est basé sur Android.

    Mise à jour: pourquoi ne pas utiliser la portée de dépendance fournie au lieu de la portée? Comment diffèrent-ils?

    J'ai créé un didacticiel sur les domaines de dépendance des dagues pour ceux qui ont besoin de plus d'informations.

  • Est-ce qu'une installation active de 45% sur le marché Android "haut / bas / ne sait pas" pour l'application?
  • Problèmes liés au thème translucide
  • Enregistrement de l'aperçu de l'appareil photo Android et la vidéo d'enregistrement Mediarecorder
  • OkHttp Post Body as JSON
  • Rénovation: le serveur renvoie ETag et Cache-Control: max-age = 60. Le cache ne devrait-il pas être utilisé si la demande <60s?
  • RecyclerView.onBindViewHolder appelle une seule fois
  • 2 Solutions collect form web for “Portée de dépendance apt dans Android gradle – à quoi sert-il?”

    De la page du projet android-apt :

    Le plugin android-apt aide à travailler avec les processeurs d'annotations en combinaison avec Android Studio. Il a deux objectifs:

    • Permet de configurer un processeur d'annotation de temps de compilation uniquement comme une dépendance, sans compter l'artefact dans l'APK ou la bibliothèque finale

    • Configurez les chemins sources de sorte que le code généré à partir du processeur d'annotation soit correctement récupéré par Android Studio.

    Vous utilisez Dagger, qui utilise le traitement de l'annotation pour générer du code. Le code de traitement d'annotation ne doit pas être inclus dans l'APK final et vous souhaitez que le code généré soit visible pour Android Studio. android-apt permet ce comportement.

    Cela semble très semblable à la portée provided , mais il diffère de provided de quelques manières clés. La première différence est que le code généré par une dépendance apt est disponible pour l'IDE, alors que le code généré par une dépendance provided n'est pas.

    Une autre différence importante est que le code dans une bibliothèque utilisant la portée provided est sur le chemin d'accès IDE (c'est-à-dire que vous pouvez importer les classes et essayer de les utiliser), alors que le code dans une dépendance apt n'est pas. Avec la fourniture, votre code se bloquera à l'exécution si vous ne fournissez pas les dépendances référencées avec une contrepartie prédéfinie.

    Vous pouvez trouver une discussion sur apt vs provided sur cette question android-apt .

    Dans le cas de Dagger, il ne devrait pas y avoir de raison d'inclure le processeur d'annotation et le générateur de code dans l'un de vos codes (ce que la portée provided permettrait). Ainsi, la portée apt est plus appropriée.

    Mise à jour pour octobre 2016: vous n'avez probablement plus besoin d' apt et le plugin android-apt . La version 2.2 du plugin Android Gradle a une configuration annotationProcessor que vous devriez utiliser à la place.

    Pour plus d'informations sur Android and android-apt?

    Juste pour ajouter comment changer cela dans Studio 2.2 +

     dependencies { compile 'com.google.dagger:dagger:2.4' annotationProcessor "com.google.dagger:dagger-compiler:2.4" } 

    Ajoutez ceci dans le module gradle d'applications. Pas besoin de changer d'autre chose.

    Codage heureux 🙂

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.