Saya ingin memiliki cara untuk referensi nomor versi manifes proyek di bagian utama kode. Apa yang telah saya lakukan sampai sekarang adalah menautkan nomor versi dalam file XML String ke manifes (@ string / Versi). Yang ingin saya lakukan adalah melakukannya sebaliknya, menautkan variabel XML string ke versi dalam manifes. Alasannya? Saya hanya ingin mengubah nomor versi di satu lokasi, file manifes. Apakah ada cara untuk melakukan ini? Terima kasih!
android
android-manifest
android-xml
PearsonArtPhoto
sumber
sumber
Jawaban:
Saya yakin itu sudah dijawab di sini .
ATAU
sumber
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
Tidak ada cara untuk mengeluarkan versi secara langsung, tetapi ada dua solusi yang bisa dilakukan.
Versi dapat disimpan dalam string sumber daya, dan ditempatkan ke manifes dengan:
Seseorang dapat membuat tampilan khusus, dan menempatkannya ke dalam XML. Tampilan akan menggunakan ini untuk menetapkan nama:
Salah satu dari solusi ini akan memungkinkan untuk menempatkan nama versi dalam XML. Sayangnya tidak ada solusi sederhana yang bagus, seperti
android.R.string.version
atau sesuatu seperti itu.sumber
The android:versionName cannot be a resource url, it must be a literal string
AndroidStudio
, manifesversionName
ditimpa oleh satu set dalambuild.gradle
fileAnda dapat menggunakan
versionName
sumber XML, seperti tata letak aktivitas. Pertama-tama buat sumber string diapp/build.gradle
dengan potongan berikut diandroid
node:Jadi seluruh
build.gradle
isi file dapat terlihat seperti ini:Kemudian Anda bisa menggunakannya
@string/versionName
dalam XML. Android Studio akan menandainya merah, tetapi aplikasi akan dikompilasi tanpa masalah. Misalnya, ini dapat digunakan seperti ini diapp/src/main/res/xml/preferences.xml
:sumber
Saya memecahkan masalah ini dengan memperluas kelas Preferensi.
Kemudian dalam XML preferensi saya:
sumber
Saya menggunakan
BuildConfig.VERSION_NAME.toString();
. Apa perbedaan antara itu dan mendapatkannya dari PackageManager?Tidak ada solusi berbasis XML yang berhasil untuk saya, maaf.
sumber
JIKA Anda menggunakan Gradle, Anda dapat menggunakan file build.gradle untuk secara terprogram menambahkan nilai ke sumber daya xml pada waktu kompilasi.
Kode Contoh diambil dari: https://medium.com/@manas/manage-your-android-app-s-versioncode-versionname-with-gradle-7f9c5dcf09bf
sekarang gunakan
@string/app_version
sesuai kebutuhan dalam XMLIni akan menambah
.debug
nama versi seperti yang dijelaskan dalam artikel yang ditautkan saat dalam mode debug.sumber
Anda tidak dapat menggunakannya dari XML.
Anda perlu memperluas widget yang Anda gunakan dalam XML dan menambahkan logika untuk mengatur teks menggunakan apa yang disebutkan pada jawaban Konstantin Burov.
sumber
Solusi termudah adalah menggunakan
BuildConfig
.Saya menggunakan
BuildConfig.VERSION_NAME
aplikasi saya.Anda juga dapat menggunakan
BuildConfig.VERSION_CODE
untuk mendapatkan kode versi.sumber
Terlambat ke gim, tetapi Anda bisa melakukannya tanpa
@string/xyz
menggunakan?android:attr
sumber
<Preference android:title="Version" android:summary="?android:attr/versionName" ></Preference>
tetapi tampilkan sebagai?16843292
. Apa yang salah?