es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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:

    1. Asegúrate de que la librería C esté en su propio módulo dentro del proyecto de Android.
    2. Publica la librería C en un repositorio Maven o en un repositorio local.

    3. En el archivo build.gradle de las librerías A y B, reemplaza la configuración de dependencias actual con lo siguiente:

      dependencies {
         api 'com.example:library_c:1.0.0'
         ...
      }
      

      Reemplaza com.example con el ID de grupo real que utilizaste al publicar la librería C.

    4. 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:

      repositories {
         mavenCentral() //o cualquier otro repositorio Maven que hayas utilizado para publicar la librería C
         ...
      }
      

    5. Ahora puedes construir e implementar las librerías A y B, y deberían depender correctamente de la librería C incluso cuando se usen en proyectos externos.

    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.

Comments are closed.