tutorial tools studio para flavors descargar configurar android gradle android-gradle

tools - gradle version android studio



apt ámbito de dependencia en Android gradle-¿para qué se utiliza? (2)

Desde la página del proyecto android-apt :

El complemento android-apt ayuda a trabajar con procesadores de anotación en combinación con Android Studio. Tiene dos propósitos:

  • Permitir configurar un procesador de anotación solo de tiempo de compilación como dependencia, sin incluir el artefacto en la APK o biblioteca final

  • Configure las rutas de origen para que el código que se genera desde el procesador de anotaciones sea recogido correctamente por Android Studio.

Está utilizando Dagger, que usa el proceso de anotación para generar código. El código de procesamiento de la anotación no debe incluirse en la APK final, y desea que el código generado sea visible para Android Studio. android-apt habilita este comportamiento.

Esto suena muy similar al alcance provided , pero apt difiere de lo provided en algunas formas clave. La primera diferencia es que el código generado por una dependencia apt está disponible para el IDE, mientras que el código generado por una dependencia provided no lo está.

Otra diferencia importante es que el código en una biblioteca que usa el alcance provided está en el classpath IDE (es decir, puede importar las clases e intentar usarlas), mientras que el código en una dependencia apt no lo es. Si se provided , el código se bloqueará en tiempo de ejecución si no proporciona las dependencias de referencia con una contraparte del ámbito de compile .

Puede encontrar un debate sobre apt vs en este número de android-apt .

En el caso de Dagger, no debería haber ninguna razón para incluir el procesador de anotaciones y el generador de códigos en ninguno de sus códigos (que el alcance provided permitiría). Por lo tanto, el alcance apt es más apropiado.

Actualización para octubre de 2016: probablemente ya no necesites apt y el complemento android-apt . La versión 2.2 del complemento Gradle de Android tiene una configuración AnotationProcessor que debería usar en su lugar.

Ver más en ¿Qué sigue para android-apt?

¿Cuál es el alcance de dependencia apropiado en los archivos gradle de Android que veo a veces?

Un ejemplo se parece a esto?

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'' }

y en el archivo build.gradle de nivel superior tiene esta dependencia global:

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

Aviso en la sección de dependencias hay un alcance apto? solo sé de compilación, paquete y alcance provisto. compile incluye la dependencia en tiempo de compilación y en su paquete, provisto dice que solo incluye la biblioteca en tiempo de compilación y la descarta al momento del paquete para que no esté incluida en la compilación final. y Package es al revés, incluye la dependencia en el paquete y no en tiempo de compilación. Pero lo que es un ámbito de dependencia apropiado, obviamente necesitamos el com.neenbedankt.android-apt para que funcione, así sé que está basado en Android.

actualización: ¿por qué no puedo usar el alcance de dependencia proporcionado en lugar del ámbito de apt ? ¿Cómo difieren?

Creé un tutorial sobre los ámbitos de dependencia daga para aquellos que necesitan más información.


Solo para agregar cómo cambiar esto en Studio 2.2 +

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

Agregue esto en el módulo gradle de aplicaciones. No hay necesidad de cambiar ninguna otra cosa.

Feliz codificación :)