Eu gostaria de ter uma maneira de fazer referência ao número da versão do manifesto do projeto na parte principal do código. O que tenho feito até agora é vincular o número da versão em um arquivo XML String ao manifesto (@ string / Version). O que eu gostaria de fazer é fazer o contrário, vincular uma variável XML de cadeia de caracteres à versão no manifesto. O motivo? Gostaria apenas de alterar o número da versão em um local, o arquivo de manifesto. Há alguma maneira de fazer isso? Obrigado!
android
android-manifest
android-xml
PearsonArtPhoto
fonte
fonte
Respostas:
Eu acredito que isso já foi respondido aqui .
OU
fonte
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
Não existe uma maneira de obter a versão diretamente, mas há duas soluções alternativas que podem ser feitas.
A versão pode ser armazenada em uma cadeia de recursos e colocada no manifesto por:
Pode-se criar uma exibição personalizada e colocá-la no XML. A visualização usaria isso para atribuir o nome:
Qualquer uma dessas soluções permitiria colocar o nome da versão em XML. Infelizmente, não existe uma solução simples e agradável,
android.R.string.version
algo assim.fonte
The android:versionName cannot be a resource url, it must be a literal string
AndroidStudio
, o manifestoversionName
é substituir por um conjunto debuild.gradle
arquivoVocê pode usar os
versionName
recursos XML, como layouts de atividades. Primeiro, crie um recurso de cadeia noapp/build.gradle
com o seguinte fragmento noandroid
nó:Portanto, todo
build.gradle
o conteúdo do arquivo pode ficar assim:Então você pode usar
@string/versionName
no XML. O Android Studio o marcará em vermelho, mas o aplicativo será compilado sem problemas. Por exemplo, isso pode ser usado assim emapp/src/main/res/xml/preferences.xml
:fonte
Resolvi esse problema estendendo a classe Preference.
Então, nas minhas preferências XML:
fonte
Eu uso
BuildConfig.VERSION_NAME.toString();
. Qual é a diferença entre isso e obtê-lo no packageManager?Nenhuma solução baseada em XML funcionou para mim, desculpe.
fonte
Se você estiver usando o Gradle, poderá usar o arquivo build.gradle para agregar programaticamente valor aos recursos xml em tempo de compilação.
Exemplo de código extraído de: https://medium.com/@manas/manage-your-android-app-s-versioncode-versionname-with-gradle-7f9c5dcf09bf
agora use
@string/app_version
conforme necessário em XMLEle será adicionado
.debug
ao nome da versão conforme descrito no artigo vinculado quando estiver no modo de depuração.fonte
Você não pode usá-lo a partir do XML.
Você precisa estender o widget que você está usando no XML e adicionar a lógica para definir o texto usando o que é mencionado na resposta de Konstantin Burov.
fonte
A solução mais fácil é usar
BuildConfig
.Eu uso
BuildConfig.VERSION_NAME
no meu aplicativo.Você também pode usar
BuildConfig.VERSION_CODE
para obter o código da versão.fonte
Tarde para o jogo, mas você pode fazê-lo sem
@string/xyz
usar?android:attr
fonte
<Preference android:title="Version" android:summary="?android:attr/versionName" ></Preference>
mas mostre como?16843292
.O que há de errado?