¿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.
- Comprobar la integridad de los activos de Android
- Los caracteres especiales no se muestran en android
- Reintentar una conexión http
- Ejecutar el comando shell desde android
- ¿Cómo configuro Layout y Text size a DP dentro del programa?
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.
- Eliminar una actividad de la pila en android
- Código de conmutación entre el modo de depuración y el modo de liberación en java - android
- Consultar tabla con subclases-como las relaciones
- Prueba si getJSONArray es nulo o no
- ¿Cómo crear una biblioteca móvil orientada, multiplataforma, compartida en Java?
- Iniciar chat de vídeo sin interacción del usuario - Android
- Uso del selector de dispositivos Android Bluetooth
- ¿Cómo generar el gráfico de llamadas desde Android APK?
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
- Ambos métodos se ejecutan tras los permisos concedidos
- Android ndk (cmake): 'referencia indefinida a `__android_log_write' cuando se usa log api en la segunda biblioteca jni