Chciałbym mieć sposób na odniesienie się do numeru wersji manifestu projektu w głównej części kodu. Do tej pory robiłem, aby połączyć numer wersji w pliku XML typu String z manifestem (@ string / Version). Chciałbym to zrobić na odwrót, połączyć zmienną łańcuchową XML z wersją w manifeście. Powód? Chciałbym tylko zmienić numer wersji w jednym miejscu, pliku manifestu. Czy jest na to sposób? Dzięki!
android
android-manifest
android-xml
PearsonArtPhoto
źródło
źródło
Odpowiedzi:
Uważam, że tutaj już udzielono odpowiedzi .
LUB
źródło
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
Nie ma sposobu, aby bezpośrednio wydać wersję, ale istnieją dwa sposoby obejścia tego problemu.
Wersja może być przechowywana w łańcuchu zasobów i umieszczana w manifeście przez:
Można utworzyć niestandardowy widok i umieścić go w pliku XML. Widok użyłby tego do przypisania nazwy:
Każde z tych rozwiązań pozwoliłoby na umieszczenie nazwy wersji w XML. Niestety nie ma przyjemnego, prostego rozwiązania,
android.R.string.version
ani czegoś takiego.źródło
The android:versionName cannot be a resource url, it must be a literal string
AndroidStudio
manifestversionName
jest nadpisywany przez ten ustawiony wbuild.gradle
plikuMożesz użyć
versionName
zasobów XML, takich jak układy działań. Najpierw utwórz zasób ciąguapp/build.gradle
z następującym fragmentem kodu wandroid
węźle:Cała
build.gradle
zawartość pliku może więc wyglądać następująco:Następnie możesz użyć
@string/versionName
w XML. Android Studio oznaczy go na czerwono, ale aplikacja będzie się kompilować bez problemów. Na przykład można to wykorzystać w następujący sposóbapp/src/main/res/xml/preferences.xml
:źródło
Rozwiązałem ten problem, rozszerzając klasę preferencji.
Następnie w moich preferencjach XML:
źródło
Używam
BuildConfig.VERSION_NAME.toString();
. Jaka jest różnica między tym a uzyskaniem go z menedżera pakietów?Niestety, żadne rozwiązania oparte na XML nie działały dla mnie.
źródło
JEŻELI używasz Gradle, możesz użyć pliku build.gradle, aby programowo zwiększyć wartość zasobów xml w czasie kompilacji.
Przykładowy kod wyodrębniony z: https://medium.com/@manas/manage-your-android-app-s-versioncode-versionname-with-gradle-7f9c5dcf09bf
teraz używaj
@string/app_version
w razie potrzeby w XMLZostanie dodany
.debug
do nazwy wersji zgodnie z opisem w połączonym artykule w trybie debugowania.źródło
Nie możesz go użyć z XML.
Musisz rozszerzyć widżet, którego używasz w XML i dodać logikę, aby ustawić tekst przy użyciu tego, co wspomniano w odpowiedzi Konstantina Burowa.
źródło
Najłatwiejszym rozwiązaniem jest użycie
BuildConfig
.Używam
BuildConfig.VERSION_NAME
w mojej aplikacji.Możesz także użyć,
BuildConfig.VERSION_CODE
aby uzyskać kod wersji.źródło
Późno do gry, ale możesz to zrobić bez
@string/xyz
użycia?android:attr
źródło
<Preference android:title="Version" android:summary="?android:attr/versionName" ></Preference>
sposób?16843292
:, ale pokaż jako .Co jest nie tak?