Me gustaría tener una manera de hacer referencia al número de versión de manifiesto del proyecto en la parte principal del código. Lo que he estado haciendo hasta ahora es vincular el número de versión en un archivo XML de cadena al manifiesto (@ cadena / Versión). Lo que me gustaría hacer es hacerlo al revés, vincular una variable XML de cadena a la versión en el manifiesto. ¿La razón? Me gustaría tener que cambiar el número de versión en una ubicación, el archivo de manifiesto. ¿Hay alguna forma de hacer esto? ¡Gracias!
android
android-manifest
android-xml
PearsonArtPhoto
fuente
fuente
Respuestas:
Creo que eso ya fue respondido aquí .
O
fuente
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
No hay una forma de sacar directamente la versión, pero hay dos soluciones que podrían hacerse.
La versión podría almacenarse en una cadena de recursos y colocarse en el manifiesto mediante:
Se podría crear una vista personalizada y colocarla en el XML. La vista usaría esto para asignar el nombre:
Cualquiera de estas soluciones permitiría colocar el nombre de la versión en XML. Desafortunadamente, no hay una solución simple y agradable,
android.R.string.version
o algo así.fuente
The android:versionName cannot be a resource url, it must be a literal string
AndroidStudio
, el manifiestoversionName
es anulado por el que está en elbuild.gradle
archivoPuede usar los
versionName
recursos en XML, como los diseños de actividad. Primero cree un recurso de cadena en elapp/build.gradle
con el siguiente fragmento de código en elandroid
nodo:Entonces todo
build.gradle
el contenido del archivo puede verse así:Entonces puedes usar
@string/versionName
en el XML. Android Studio lo marcará en rojo, pero la aplicación se compilará sin problemas. Por ejemplo, esto se puede usar así enapp/src/main/res/xml/preferences.xml
:fuente
Resolví este problema extendiendo la clase de preferencia.
Luego, en mis preferencias XML:
fuente
Yo uso
BuildConfig.VERSION_NAME.toString();
. ¿Cuál es la diferencia entre eso y obtenerlo del packageManager?No hay soluciones basadas en XML que me hayan funcionado, lo siento.
fuente
SI está usando Gradle, puede usar el archivo build.gradle para agregar valor mediante programación a los recursos xml en tiempo de compilación.
Código de ejemplo extraído de: https://medium.com/@manas/manage-your-android-app-s-versioncode-versionname-with-gradle-7f9c5dcf09bf
ahora use
@string/app_version
según sea necesario en XMLSe agregará
.debug
al nombre de la versión como se describe en el artículo vinculado cuando esté en modo de depuración.fuente
No puede usarlo desde el XML.
Debe extender el widget que está utilizando en el XML y agregar la lógica para establecer el texto usando lo que se menciona en la respuesta de Konstantin Burov.
fuente
La solución más fácil es usar
BuildConfig
.Yo uso
BuildConfig.VERSION_NAME
en mi aplicación.También puede usar
BuildConfig.VERSION_CODE
para obtener el código de versión.fuente
Tarde al juego, pero puedes hacerlo sin
@string/xyz
usar?android:attr
fuente
<Preference android:title="Version" android:summary="?android:attr/versionName" ></Preference>
pero mostrar como. ¿?16843292
Qué pasa?