tools studio para descargar configurar android gradle android-gradle android-gradle-3.0

para - gradle version android studio



Implementación de Android Gradle frente a CompileOnly Performance (1)

Los documentos mencionan que la implementation proporciona mejoras significativas en el tiempo de compile sobre compile / api . ¿Qué pasa con compileOnly ?

Mi caso de uso es un proyecto de múltiples módulos (lo siento, no me gusta la terminología de múltiples proyectos de Gradle), donde tengo una aplicación de Android y varias bibliotecas de las que depende la aplicación ( implementation ). Algunas de las bibliotecas también dependen unas de otras. ¿Debería usar la implementation o compileOnly cuando declare dependencias en los módulos de la biblioteca? Mi módulo de aplicación utilizará la implementation para depender de esos artefactos, por lo que no los necesito para que sean transitivos a través de los módulos de la biblioteca.


La configuración de api debe usarse para dependencias que se exportan a modules externos (dependencia transitiva) . La configuración de implementation Vice-Versa se debe usar para las dependencias que son internas al componente (no para la dependencia transitiva) .

implementación vs compilación solo :

No hay similitud en su trabajo, solo compileOnly

  • una configuración heredada de java-plugin
  • requerido en tiempo de compilación
  • tampoco está incluido en el classpath en tiempo de ejecución ni está expuesto a proyectos dependientes.

Entonces compileOnly no reemplaza el trabajo de configuración de implementation , por ejemplo:

implementation ''com.android.support:appcompat-v7:25.1.0'' // can''t use compileOnly here testCompile ''junit:junit:4.12'' compile "com.google.dagger:dagger:2.8" // can''t use here also annotationProcessor "com.google.dagger:dagger-compiler:2.8" // can''t use here also compileOnly ''javax.annotation:jsr250-api:1.0'' // we can use compileOnly here because it''s required on run time only.

Como su caso es un "multi-módulo", debe usar la configuración de api , hasta que llegue al módulo final, es mejor usar la implementation .

El siguiente gráfico describe esas configuraciones:

¿Actuación?

Creo que la api requiere más memoria porque gradle tomará una instantánea de cada clase en ese módulo transitivo , viceversa la implementation es una configuración preferida porque (como se mencionó anteriormente) se usa para sus propias implementaciones internas.