Lors de l'ajout de nouvelles dépendances à Android en particulier dans Android Studio
dans Dependencies
il y a trois options de portée Compiler/Fourni/APK.
Quels sont les effets du choix de chacun, quand devrions-nous les utiliser? Outre ce que le nom dit.
MODIFIER:
"Gérez correctement les étendues" fournies "et" package "pour faire ce qu'elles devraient faire." Fournies "et" package "ne peuvent pas être utilisées avec les bibliothèques Android, et génèreront une erreur" .. cela vient de http://tools.Android.com/tech-docs/new-build-system
provided
- dépendance de compilation uniquementpackage
- dépendance au moment du package uniquementcompile
- dépendance à la compilation et à la compilationprovided
est couramment utilisé pour les bibliothèques basées sur le traitement des annotations. Habituellement, ces bibliothèques sont séparées en deux artefacts - "annotation" et "compilateur". "compilateur" est une dépendance provided
car vous n'avez pas besoin de l'utiliser dans l'application, uniquement pour la compilation; et "annotation" est une dépendance compile
- elle est utilisée dans le code d'application et donc compile. Ou le code généré peut nécessiter des dépendances supplémentaires, contrairement à votre application. Par exemple. configuration des dépendances de dague:
compile 'com.squareup.dagger:dagger:1.2.2'
provided 'com.squareup.dagger:dagger-compiler:1.2.2'
Ces propriétés proviennent de maven
scopes .
Ils indiquent simplement comment traiter des dépendances particulières à chaque étape du processus de génération.
compile
- une approche par défaut, cela signifie simplement que toutes les dépendances doivent être disponibles au moment de la compilation. Les dépendances de compilation sont disponibles dans tous les chemins de classe d'un projet. En outre, ces dépendances sont propagées aux projets dépendants. Une dépendance à la compilation est généralement requise lors de l'exécution.
package
- déclare une configuration supplémentaire pour la construction d'une application. Vous pouvez répertorier les plugins qui ajoutent des fonctionnalités supplémentaires au processus de génération.
provided
- cela signifie que l'environnement d'exécution a ces dépendances incluses. Par exemple, lorsque vous examinez Android.jar
internes de la bibliothèque, vous verrez Java.lang.RuntimeException: Stub!
dans chaque corps de méthode.
provided
et package
ne peuvent pas être utilisés avec Android Libraries, et génèreront une erreur.
Voici à quoi ressemble sourceSet
:
Plus d'informations sur le système de construction: https://www.youtube.com/watch?v=LCJAgPkpmR
Un article génial sur Gradle: http://www.sinking.in/blog/provided-scope-in-gradle/
Xavier parle ici de la portée [~ # ~] apk [~ # ~] .
dans le Android, l'équivalent (en quelque sorte) du runtime s'appelle apk. Vous pouvez faire
dépendances {fichiers apk ('libs/foo.jar')}
et il sera seulement empaqueté mais ne sera pas sur le chemin de classe de compilation.