¿Cómo obtener el código de la versión del paquete de dependencia?

Estoy tratando de obtener el código de versión de un paquete compilado en un proyecto diferente, y vinculado como una dependencia en este. Hago cambios a ambos proyectos con frecuencia, así que me gusta saber los números de versión.

Las soluciones aquí: ¿Cómo obtener el número de versión / versión de su aplicación de Android? Muestra cómo obtener el código de la versión desde el contexto, pero que daría el código de la versión de los paquetes en el proyecto actual, no los dependientes.

Aquí está el código que he probado (3-Escenarios):

public static int getPackageVersion(Context context, Class<?> tClass) { int versionCode = 0; //#1) Get Package name from class String packageName = tClass.getPackage().getName(); //#2) Set Domain manually to top level package //String packageName = "com.somedomain"; //#3) Get package name from context from this package //String packageName = context.getPackageName(); Log.i(TAG, packageName); try { versionCode = context.getPackageManager().getPackageInfo( packageName, 0).versionCode; } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, packageName); throw new RuntimeException(); } return versionCode; } 

# 1) Muestra cómo el método está destinado originalmente a funcionar, utiliza el nombre de paquete para la clase. Resultados en NameNotFound.

# 2) establecí manualmente el nombre de paquete de nivel superior para el paquete dependiente, que es similar a lo que devuelve context.getPackageName (). Resultados en NameNotFound.

# 3) Yo uso context.getPackageName (), y el código devuelve el código de versión de los paquetes en este proyecto – como se predijo, pero no el resultado que necesito.

Ya tengo un hack inelegante, sólo estoy almacenando el número de versión como un campo en una de las clases, pero una solución adecuada (si existe) sería grande.

One Solution collect form web for “¿Cómo obtener el código de la versión del paquete de dependencia?”

Una solución adecuada sería utilizar el archivo BuildConfig para almacenar dichos valores (para cada proyecto / subproyecto).
El complemento Android Gradle ya contiene estos campos:

 android { defaultConfig { versionCode 1 versionName "1.0.0" } } 

A continuación, obtenga el campo con your.package.name.BuildConfig.VERSION_NAME o your.package.name.BuildConfig.VERSION_CODE

  • Dynamic SAX Parser para UTF-8 o ISO-8859-1 XML codificado
  • Obtener coordenadas de botones y detectar si el dedo está sobre ellos - Android
  • Obtención de Latitude y Longitud 0.0 en Android M
  • ¿Cómo puedo crear una expresión regular para esto en android?
  • Base64 codificar archivo de audio y enviar como una cadena y luego decodificar la cadena
  • Función nativa no se ha encontrado ninguna implementación
  • ¿Son los programas escritos en Java para Android más lento que el equivalente escrito en C incluido en Objective-C para iOS?
  • ¿Es posible usar scripts lua en un proyecto java android?
  • Creación de un iterador recursivo
  • Cambiar el resumen de un ListPreference con el nuevo valor (Android)
  • Cómo establecer un intervalo de minutos personalizado en TimePickerDialog en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.