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.

¿Es posible obtener la versión de dependencia en tiempo de ejecución, incluso desde la propia biblioteca?

Antecedentes

Supongamos que creo una biblioteca de Android llamada “MySdk” y la publico en Jitpack/Maven.

El usuario del SDK la utilizaría simplemente agregando la dependencia de:

implementation 'com.github.my-sdk:MySdk:1.0.1'

Lo que me gustaría obtener es la parte “1.0.1” de esto, ya sea desde la propia biblioteca de Android (puede ser útil para enviar al servidor del SDK qué versión se está utilizando), o desde la aplicación que la utiliza (puede ser útil para informar sobre problemas específicos, incluyendo a través de Crashlytics).

El problema

No puedo encontrar ninguna reflexión o tarea de Gradle para obtenerlo.

Lo que he intentado

Buscando al respecto, si realmente trabajo en la biblioteca de Android (que se usa como dependencia), todo lo que he encontrado es que puedo gestionar la versión por mí mismo, a través del código.

Algunos dicen que puedo usar BuildConfig del nombre de paquete de la biblioteca, pero eso significa que si olvido actualizar el código justo antes de publicar la dependencia, utilizará el valor incorrecto. Ejemplo de uso de este método:

plugins {
...
}
final def sdkVersion = "1.0.22"

android {
    ...
    buildTypes {
        release {
            ...
            buildConfigField "String", "SDK<em>VERSION", "\"" + sdkVersion + "\""
        }
       debug {
            buildConfigField "String", "SDK</em>VERSION", "\"" + sdkVersion + "-unreleased\""
        }
    }

El uso es solo verificar el valor de BuildConfig.SDK_VERSION (después de construir).

Otra posible solución es quizás desde una tarea de Gradle dentro de la biblioteca de Android, que se vería obligada a ejecutarse cada vez que se construye la aplicación que utiliza esta biblioteca. Sin embargo, no he logrado encontrar cómo hacerlo (encontré algo aquí)

La pregunta

¿Es posible consultar la versión de la dependencia desde la propia biblioteca de Android de la dependencia (y desde la aplicación que la utiliza, por supuesto), para poder usarla durante la ejecución?

Algo automático, que no requiera actualizarlo antes de publicarlo?

¿Quizás usando una tarea de Gradle definida en la biblioteca y que se vea obligada a utilizarse al construir la aplicación que utiliza la biblioteca?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    No es posible consultar la versión de dependencia desde la biblioteca de Android o desde la aplicación que la utiliza durante el tiempo de ejecución sin algún tipo de mecanismo de versionado. Las soluciones propuestas en la sección del problema, como usar BuildConfig o una tarea de Gradle, son opciones válidas para manejar el versionado. Es importante asegurarse de actualizar correctamente la versión antes de publicar la dependencia para evitar utilizar el valor incorrecto. Además, se recomienda seguir las mejores prácticas de versionado, como el Versionado Semántico, para garantizar un versionado confiable y consistente en todos los proyectos.

Comments are closed.