java - tools - Compilar, siempre, APK: alcance de dependencia de Android
install gradle android studio (3)
Estas propiedades provienen de ámbitos maven
.
Simplemente indican cómo tratar las dependencias particulares durante cada paso del proceso de compilación.
compile
: un enfoque predeterminado, simplemente significa que todas las dependencias deben estar disponibles en tiempo de compilación. Las dependencias de compilación están disponibles en todos los classpaths de un proyecto. Además, esas dependencias se propagan a proyectos dependientes. En general, se requiere una dependencia de tiempo de compilación en tiempo de ejecución.package
: declara una configuración adicional para compilar una aplicación. Puede enumerar complementos que agregan funcionalidad adicional al proceso de compilación.provided
- significa que el entorno de tiempo de ejecución tiene estas dependencias incluidas. Por ejemplo, cuando te fijas en lasandroid.jar
internas de la biblioteca deandroid.jar
, verásjava.lang.RuntimeException: Stub!
en cada cuerpo de método.- Puede desarrollar aplicaciones de Android localmente, sin tener un entorno Android completo.
- Su APK debe ejecutarlo en un dispositivo Android o en un emulador porque proporcionan la implementación de estos métodos.
- Sus aplicaciones que hacen referencia a las clases de SDK se compilarán correctamente, ya que el jar proporciona los metadatos de clase.
- A menos que use alguna biblioteca que proporcione artefactos (por ejemplo, Robolectric ), debe ejecutar pruebas en su emulador / dispositivo.
provided
y el package
no se puede usar con las bibliotecas de Android y generará un error.
Así es como se parece a sourceSet
:
Más información sobre el sistema de compilación: https://www.youtube.com/watch?v=LCJAgPkpmR0
Un artículo impresionante sobre Gradle: http://www.sinking.in/blog/provided-scope-in-gradle/
Al agregar nuevas dependencias al proyecto de Android especialmente en Android Studio
en Dependencies
existen tres opciones de alcance Compilar / Proporcionar / APK.
¿Cuáles son los efectos de elegir cada uno, cuándo debemos usarlos? Además de lo que dice el nombre.
EDITAR:
"Maneje adecuadamente los ámbitos ''proporcionado'' y ''paquete'' para hacer lo que debería hacer. ''Proporcionado'' y ''paquete'' no se pueden usar con las bibliotecas de Android, y generará un error" ... esto es de http://tools.android.com/tech-docs/new-build-system
Xavier habla here sobre el alcance de APK .
en el complemento de Android, el equivalente (tipo de) de tiempo de ejecución se llama apk. Tu puedes hacer
dependencias {archivos apk (''libs / foo.jar'')}
y solo se empaquetará pero no estará en el classpath de compilación.
-
provided
- dependencia en tiempo de compilación -
package
- dependencia solo de paquete de tiempo -
compile
- dependencia del tiempo de compilación y del tiempo de paquete
provided
es comúnmente utilizado para bibliotecas basadas en el procesamiento de anotaciones. Por lo general, estas bibliotecas están separadas en dos artefactos: "anotación" y "compilador". "compilador" provided
dependencia porque no necesita usarlo en la aplicación, solo para la compilación; y "anotación" es la dependencia de compile
: se usa en el código de la aplicación y, por lo tanto, se compila. O el código generado puede requerir dependencias adicionales, mientras que su aplicación no puede. Por ejemplo, configuración de dependencias daga:
compile ''com.squareup.dagger:dagger:1.2.2''
provided ''com.squareup.dagger:dagger-compiler:1.2.2''