Pregunta La dependencia de Android está configurada en compileOnly / proporcionada que no es compatible


Estoy usando com.android.tools.build:gradle:3.1.1 con la última versión de Gradle (https://services.gradle.org/distributions-snapshots/gradle-4.8-20180417000132+0000-all.zip)

Cuando uso compileOnly dependencias, algunos de ellos no se compilan, otros sí. P.ej.

compileOnly "com.android.support:support-v4:27.1.1"

funciona perfectamente mientras

compileOnly "com.facebook.stetho:stetho:1.5.0"

da un error de compilación:

Android dependency 'com.facebook.stetho:stetho:1.5.0' is set to compileOnly/provided which is not supported

Tenía la impresión de que cualquier dependencia puede ser compilable. Nada indica lo contrario (https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations) Ambas bibliotecas tienen dependencias transitivas.

Cualquier ayuda sería muy apreciada.


5
2018-04-17 23:07


origen


Respuestas:


Como experimento, creé un nuevo proyecto de Android Studio 3.1.1. Entonces, agregué un lib módulo a él como un módulo de la biblioteca de Java llano. Podría agregar compileOnly project(":lib") Al módulo de la aplicación, y compilado. Cambié el lib módulo para ser un módulo de biblioteca de Android (apply plugin: 'com.android.library') con un mínimo manifiesto, y ahora compileOnly project(":lib") recibe el error que usted comete: "La dependencia de Android 'proyecto: lib' está configurada como compileOnly / proporcionada que no es compatible".

Como no hubo otros cambios materiales en el lib módulo, el compileOnly La limitación está en los módulos de la biblioteca de Android.

Mi conjetura es que no está claro qué significa "compilar solamente" para las entradas, recursos, activos, etc. de manifiesto. ellos castigaron oficialmente.

Yo archivé Un problema, solicitando documentación de esta limitación.. Mis solicitudes de documentación generalmente caen en oídos sordos.


5
2018-04-21 00:04



En los albores de los "módulos de características dinámicas", compileOnly Los módulos de la biblioteca de Android podrían tener sentido, para permitir un fácil acceso al módulo de características desde la aplicación base cuando se instala.

Es por eso que creé esta solicitud de función: https://issuetracker.google.com/issues/109894265

Siéntase libre de iniciarlo y comentar con sus casos de uso.


1
2018-06-08 09:04



provided/compileOnly

Las dependencias no están empaquetadas en APK o AAR, por lo que intentar acceder a las clases desde esas dependencias causará un error de tiempo de ejecución. Hay 2 limitaciones importantes de este alcance:

  1. Las dependencias no son transitivas, por lo que no se incluyen en los proyectos dependientes.
  2. las dependencias solo pueden ser JAR, no AAR, lo que significa que no pueden incluir recursos de Android, activos, manifiestos, etc.

Leer más aquí - https://www.thedroidsonroids.com/blog/android/android-gradle-configurations


0
2017-07-06 12:45