Bagaimana saya dapat secara program mendapatkan kode versi atau nama versi apk saya dari file AndroidManifest.xml setelah mengunduhnya dan tanpa menginstalnya.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.xx.xxx"
android:versionCode="1"
android:versionName="1.1" >
Misalnya saya ingin memeriksa apakah versi baru diunggah di layanan IIS saya, setelah menginstalnya di perangkat, jika itu bukan versi baru saya tidak ingin menginstalnya.
android
android-manifest
apk
Anak Besar
sumber
sumber
./aapt d badging release.apk | grep -Po "(?<=\sversion(Code|Name)=')([0-9.]+)"
2.6M
ruang disk, Anda juga dapat menulis parser untuk mem-parsing file apkAXMLResource
yang hanya akan dikenakan biaya sekitar52k
. Merujuk ke Java parse xml dengan namespace yang tidak dideklarasikanJawaban:
Berikut ini bekerja untuk saya dari baris perintah:
CATATAN: aapt.exe ditemukan dalam
build-tools
sub-folder SDK. Sebagai contoh:sumber
aapt
ada di build-tools / XX di SDK.~/Library/Developer/Xamarin/android-sdk-macosx/build-tools/{version}
platformBuildVersionName
yang dicetak ketika saya menggunakan perintah ini dan mengapa itu kosong?aapt dump badging %1 pause
untuk menyeret dan melepaskan apk apa punsumber
apk
konten tanpa menginstal aplikasi? @PatrickChoJika Anda menggunakan versi 2.2 dan lebih tinggi dari Android Studio maka di Android Studio gunakan Build → Analyze APKkemudian pilih file AndroidManifest.xml.
sumber
programmatically
Ini menjawab pertanyaan dengan mengembalikan hanya nomor versi sebagai hasilnya. Namun......
Tujuannya seperti yang dinyatakan sebelumnya adalah untuk mencari tahu apakah apk di server lebih baru daripada yang diinstal SEBELUM mencoba mengunduh atau menginstalnya. Cara termudah untuk melakukan ini adalah memasukkan nomor versi dalam nama file apk yang di-host di server misalnya
myapp_1.01.apk
Anda harus menetapkan nama dan nomor versi aplikasi yang sudah diinstal (jika diinstal) untuk membuat perbandingan. Anda akan memerlukan perangkat yang di-rooting atau sarana untuk menginstal binary aapt dan busybox jika belum dimasukkan dalam rom.
Skrip ini akan mendapatkan daftar aplikasi dari server Anda dan membandingkannya dengan aplikasi apa pun yang diinstal. Hasilnya adalah daftar yang ditandai untuk peningkatan / pemasangan.
Sebagai seseorang bertanya bagaimana melakukannya tanpa menggunakan aapt. Dimungkinkan juga untuk mengekstrak info apk dengan apktool dan sedikit skrip. Cara ini lebih lambat dan tidak sederhana di Android tetapi akan bekerja di windows / mac atau linux selama Anda telah menjalankan setup apktool.
Juga pertimbangkan drop folder di server Anda. Unggah apks ke sana dan tugas cron mengubah nama dan memindahkannya ke folder pembaruan Anda.
sumber
Saat ini, ini bisa dilakukan sebagai berikut
Secara umum, itu akan:
sumber
Sekarang saya berhasil mengambil versi file APK dari data XML binernya.
Topik ini adalah di mana saya mendapatkan kunci jawaban saya (saya juga menambahkan versi kode Ribo saya): Cara mengurai file AndroidManifest.xml di dalam paket .apk
Selain itu, inilah kode parsing XML yang saya tulis, khusus untuk mengambil versi:
Parsing XML
Perbandingan Versi (dilihat sebagai SystemPackageTools.compareVersions dalam cuplikan sebelumnya) CATATAN: Kode ini terinspirasi dari topik berikut: Cara yang efisien untuk membandingkan string versi di Jawa
Saya harap ini membantu.
sumber
Untuk skenario peningkatan khususnya pendekatan alternatif mungkin memiliki layanan web yang memberikan nomor versi saat ini dan memeriksa bahwa alih-alih mengunduh seluruh apk hanya untuk memeriksa versinya. Itu akan menghemat beberapa bandwidth, menjadi sedikit lebih berkinerja (jauh lebih cepat untuk mengunduh daripada sebuah apk jika keseluruhan apk tidak dibutuhkan sebagian besar waktu) dan jauh lebih mudah untuk diterapkan.
Dalam bentuk yang paling sederhana, Anda dapat memiliki file teks sederhana di server Anda ...
http://some-place.com/current-app-version.txt
Di dalam file teks itu ada sesuatu seperti
dan kemudian unduh file itu dan periksa versi yang saat ini diinstal.
Membangun solusi yang lebih maju untuk itu akan menerapkan layanan web yang tepat dan memiliki panggilan api saat peluncuran yang dapat mengembalikan beberapa json, yaitu
http://api.some-place.com/versionCheck
:sumber
sumber