Я хотел бы иметь возможность ссылаться на номер версии манифеста проекта в основной части кода. До этого момента я связывал номер версии в XML-файле String с манифестом (@ string / Version). Я хотел бы сделать это наоборот, связать строковую переменную XML с версией в манифесте. Причина? Я хотел бы только изменить номер версии в одном месте, файл манифеста. Есть какой-либо способ сделать это? Спасибо!
android
android-manifest
android-xml
PearsonArtPhoto
источник
источник
Ответы:
Я считаю, что здесь уже был дан ответ .
ИЛИ
источник
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
Нет прямого способа получить версию, но есть два обходных пути, которые можно сделать.
Версия может быть сохранена в строке ресурса и помещена в манифест с помощью:
Можно создать собственное представление и поместить его в XML. Представление будет использовать это, чтобы назначить имя:
Любое из этих решений позволит разместить название версии в XML. К сожалению, не существует хорошего простого решения, вроде того
android.R.string.version
или чего-то в этом роде.источник
The android:versionName cannot be a resource url, it must be a literal string
AndroidStudio
манифестversionName
переопределяется одним набором вbuild.gradle
файлеВы можете использовать
versionName
ресурсы XML, такие как макеты действий. Сначала создайте строковый ресурс вapp/build.gradle
файле со следующим фрагментом вandroid
узле:Таким образом, все
build.gradle
содержимое файла может выглядеть так:Тогда вы можете использовать
@string/versionName
в XML. Android Studio помечает его красным, но приложение будет компилироваться без проблем. Например, это можно использовать такapp/src/main/res/xml/preferences.xml
:источник
Я решил эту проблему, расширив класс Preference.
Тогда в моих настройках XML:
источник
Я использую
BuildConfig.VERSION_NAME.toString();
. Какая разница между этим и получением его из packageManager?Извините, у меня нет решений на основе XML.
источник
Если вы используете Gradle, вы можете использовать файл build.gradle, чтобы программно добавить значение к ресурсам xml во время компиляции.
Пример кода, извлеченный из: https://medium.com/@manas/manage-your-android-app-s-versioncode-versionname-with-gradle-7f9c5dcf09bf
теперь используйте по
@string/app_version
мере необходимости в XMLЭто добавит
.debug
к названию версии, как описано в связанной статье, в режиме отладки.источник
Вы не можете использовать его из XML.
Вам нужно расширить виджет, который вы используете в XML, и добавить логику для задания текста, используя то, что упомянуто в ответе Константина Бурова.
источник
Самым простым решением является использование
BuildConfig
.Я использую
BuildConfig.VERSION_NAME
в своем приложении.Вы также можете использовать,
BuildConfig.VERSION_CODE
чтобы получить код версии.источник
Поздно к игре, но вы можете сделать это без
@string/xyz
использования?android:attr
источник
<Preference android:title="Version" android:summary="?android:attr/versionName" ></Preference>
но показать как.?16843292
Что не так?