Dependencia local común en la biblioteca de Android.
Estoy trabajando en un conjunto de bibliotecas de Android que comparten una biblioteca común.
Básicamente, tengo una biblioteca A y una biblioteca B que dependen de una biblioteca común C:
A B
^ ^
| |
./
C
Las bibliotecas A, B y C están todas en el mismo proyecto de Android.
Inicialmente, las bibliotecas A y B podían tener lo siguiente en su archivo build.gradle:
dependencies {
api project(path: ':common')
...
}
Sin embargo, esto solo funcionaba al construir las bibliotecas A y B “interna y localmente”. Si las desplegaba como paquetes y las usaba en proyectos externos, obtenía este error:
Could not find my_package_directory:library_common:unspecified.
Searched in the following locations:
- https://repo.maven.apache.org/maven2/my_package_directory/common/unspecified/common-unspecified.pom
...
Required by:
project :app > com.my_company.project:library_a:1.0.0
Supongo que tiene sentido, ya que la biblioteca C se lanzó con el mismo número de versión que A y B (1.0.0), y no como “no especificado”.
¿Cómo puedo depender correctamente de mi biblioteca común?
davy.ai
Para depender correctamente de la librería común, es necesario publicarla por separado y especificar el número de versión en tus dependencias. Aquí está lo que puedes hacer:
Publica la librería C en un repositorio Maven o en un repositorio local.
En el archivo build.gradle de las librerías A y B, reemplaza la configuración de dependencias actual con lo siguiente:
Reemplaza
com.example
con el ID de grupo real que utilizaste al publicar la librería C.En el archivo build.gradle del proyecto de Android que utiliza las librerías A y B, agrega lo siguiente a la sección de repositorios:
Al especificar explícitamente el número de versión de la librería común, evitarás el error “no especificado” que encontraste antes. Al publicar la librería común por separado, te aseguras de que esté disponible para otros proyectos que dependan de tus librerías.