Saya perlu mendapatkan nama paket APK Android. Saya sudah mencoba unzip APK dan membaca isinya AndroidManifest.xml
, tetapi sepertinya itu bukan file teks.
Bagaimana saya bisa mengekstrak nama paket APK?
aapt dump badging <path-to-apk> | grep package:\ name
|
, tekan enter dan kemudian cari output untuk parameter yang Anda inginkan. Ingatlah bahwa ituaapt
perlu di jalan Andaaapt
perintah terletak di bawahAndroid\SDK\build-tools\version
. pada perintah windows bisaaapt dump badging <path-to-apk> | findstr -i "package: name"
atauaapt dump badging <path-to-apk>
Anda dapat menginstal apk di ponsel Anda, lalu
Ini diambil dari Temukan nama paket untuk aplikasi Android untuk menggunakan Intent untuk meluncurkan aplikasi Market dari web
sumber
su
perintah terlebih dahulu.pm list packages -f | grep term-to-search-for
Berdasarkan jawaban @hackbod ... tetapi terkait dengan windows.
aapt
perintah terletak diAndroid\SDK\build-tools\version
. Jika Anda memerlukan info lebih lanjut tentang apa ituappt command
(Perangkat Pengemasan Aset Android) baca ini https://stackoverflow.com/a/28234956/812915The
dump
sub-perintahaapt
yang digunakan untuk menampilkan nilai-nilai elemen individu atau bagian dari sebuah paket:aapt dump badging <path-to-apk>
Jika Anda hanya ingin melihat baris dengan
package: name
info, gunakanfindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
Semoga ini bisa membantu pengguna windows lainnya!
sumber
Jika Anda mencari di google play dan ingin tahu nama paketnya maka Anda dapat melihat url atau bilah alamat. Anda akan mendapatkan nama paket. Ini
com.landshark.yaum
nama paketnyasumber
Jika Anda membuka AndroidManifest.xml menggunakan MS Notepad, cari frasa
package
dan Anda akan menemukan yang berikut:di mana xxx.xxxxxxx.xxxxxxx adalah nama paket Anda, hanya ditulis dengan spasi setelah setiap karakter.
Ini berguna saat Anda tidak memiliki alat khusus yang diinstal.
sumber
Skrip bash berikut akan menampilkan nama paket dan nama aktivitas utama:
apk_package.sh
jalankan seperti ini:
sumber
Jawaban Programatik
Jika Anda perlu melakukan ini secara terprogram, itu sedikit lebih terlibat daripada hanya memasukkan jawabannya ke dalam otak Anda. Saya memiliki skrip yang saya gunakan untuk menandatangani semua aplikasi kami, tetapi masing-masing menggunakan kunci yang berbeda. Berikut adalah 2 cara untuk mendapatkan hanya Nama Paket sebagai output sehingga Anda dapat memasukkannya ke dalam variabel atau melakukan apa pun yang Anda perlukan.
Contoh output:
com.example.appname
(dan tidak lebih)Persyaratan
aapt
- Alat Pengemasan Aset Android, bagian dari unduhan SDK ToolsSolusi 1
Menggunakan
awk
sebutkan'
sebagai Pemisah Bidang, cari baris denganpackage: name=
, dan cetak hanya "bidang 2" di baris:Kelemahan dari metode ini adalah bahwa ia bergantung pada aapt untuk menampilkan bidang informasi paket dalam urutan yang sama:
Kami tidak memiliki komitmen dari pengembang untuk mempertahankan format ini.
Solusi 2
Menggunakan
awk
sebutkan"
sebagai Pemisah Bidang, cari baris denganpackage=
, dan cetak hanya "bidang 2" di baris:Kelemahan dari metode ini adalah bahwa ia bergantung pada aapt untuk output
package=
hanya diAndroid Manifest:
bagian output. Kami tidak memiliki komitmen dari pengembang untuk mempertahankan format ini.Solusi 3
Luaskan file apk dengan
apktool d
dan baca AndroidManifest.xml.Ini akan menjadi metode terbaik, tetapi AndroidManifest.xml adalah file biner dan semua jawaban SO yang saya lihat untuk mengubahnya menjadi teks tidak berfungsi. (Menggunakan
apktool d
alih-alih yang sederhanaunzip
seharusnya melakukan ini untuk Anda, tetapi tidak.) Berikan komentar jika Anda memiliki solusi untuk masalah inisumber
Solusi sederhana adalah Open Android Studio -> Build -> Analyze Apk ... browse dan pilih APK sekarang Anda dapat menemukan nama paket dan cukup banyak yang dapat Anda baca.
sumber
Jika Anda hanya ingin tahu nama paket, jalankan adb logcat, luncurkan aktivitas yang Anda inginkan, Anda akan mendapatkan petunjuk tentang nama paket.
sumber
Solusi lain adalah dengan menggunakan daftar aapt dan menggunakan sed untuk mem-parsing melalui itu:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
sumber
A:package="com.example.appname"
diAndroid Manifest:
bagian jika Anda melakukanaapt list -a
Ada cara yang sangat sederhana jika Anda memiliki APK di ponsel Anda. Cukup gunakan salah satu dari aplikasi ini:
Aplikasi Paket Nama Penampil
sumber
Metode yang sangat sederhana adalah dengan menggunakan apkanalyzer.
sumber
Saya pikir cara terbaik dan paling sederhana untuk mengekstrak hanya nama paket di Linux
Penjelasan:
package: name='([a-z0-9.]*)'.*
dan ganti dengan grup yang cocok pertama (dan hanya).sumber
Anda dapat mengekstrak AndroidManifest.xml dari APK, menghapus semua byte NULL, lewati semuanya sampai setelah string 'manifes', dan kemudian Anda berada pada byte panjang diikuti dengan nama paket (dan apa yang muncul setelahnya). Untuk tugas yang sulit saya menggunakan alat GEMA yang hebat , sehingga perintahnya terlihat seperti ini:
Tentu saja, Anda dapat menggunakan alat lain untuk melakukan penyaringan.
sumber
Jika Anda tidak menginstal Android SDK, seperti pada beberapa skenario pengujian, Anda bisa mendapatkan nama paket menggunakan metode bash berikut:
Diuji pada mac. 'string' dan 'unzip' adalah standar pada sebagian besar linux, jadi harus juga bekerja pada linux.
sumber
Anda dapat menginstal Package_Name_Viewer.apk pada emulator Anda dan selanjutnya Anda dapat melihat nama paket semua aplikasi yang diinstal pada emulator Anda.
sumber
Saya juga mencoba hal de-kompilasi, itu berhasil tetapi baru-baru ini saya menemukan cara termudah:
Unduh dan instal Appium dari situs web Appium
Buka Appium-> pengaturan Android, pilih file apk target. Dan kemudian Anda mendapatkan semua yang Anda inginkan, info paket, info aktivitas.
sumber
Untuk menggunakan ini dalam skrip batch, sangat berguna untuk membuat skrip mengembalikan hanya nama paket (misalnya untuk mencopot aplikasi ketika Anda memiliki APK).
Berikut skrip yang saya gunakan:
tersedia di intisari
Jadi Anda bisa menulis:
hapus adb `./getPackageName.sh file.apk`
sumber
Untuk Windows berikut ini berfungsi untuk saya:
Catatan
Harap edit jalur adb, aapt, APKPath sesuai dengan jalur adb, aapt, dan lokasi apk di sistem Anda.
Kerja:
%adb% install %apk%
menginstal aplikasi jika perangkat terhubung.%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
mengambil nama paket dan beberapa detail lainnya seperti versi dll dari apk dan menyimpan dalam file temp.txt di lokasi yang sama dengan apk.extracts the package name and assigns to
pkgName` variabel%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
meluncurkan aplikasi.Intinya kode di atas menginstal apk dari lokasi yang diberikan di desktop "Desktop \ APK \ Instant_Instal \" ke perangkat dan meluncurkan aplikasi.
sumber
Karena saya tidak dapat menemukan nama paket di file .apk dengan editor (seperti yang disarankan di atas), saya telah memeriksa fungsi di App "ES Datei Explorer" / "ES File Explorer" (versi gratis) yang saya sudah diinstal. Dalam alat ini, nama paket ditampilkan dengan benar.
Karena saya pikir file explorer yang baik tidak boleh hilang di ponsel, saya sarankan untuk menggunakan alat ini (jika Anda sudah menginstal apk pada ponsel dan harus tahu nama paket).
sumber
Karena disebutkan dalam dokumentasi Android bahwa AAPT telah ditinggalkan , mendapatkan nama paket menggunakan perintah AAPT2 di Linux adalah sebagai berikut:
./aapt2 dump packagename <path_to_apk>
Karena saya menggunakan versi Gradle build yang lebih lama, saya harus mengunduh versi AAPT2 yang lebih baru seperti yang disebutkan di sini:
Unduh AAPT2 dari Google Maven
Menggunakan alat-alat build di SDK saya - 25.0.3, 26.0.1 dan 27.0.3, mengeksekusi perintah aapt2 menunjukkan kesalahan: Tidak dapat membuka 'nama paket': Tidak ada file atau direktori. Itu sebabnya saya memilih versi AAPT2 yang lebih baru.
Saya menggunakan 3.3.0-5013011 untuk linux.
sumber
Anda dapat menggunakan
Analyze APK...
dari menu Bangun di Android Studio, itu akan menampilkan nama paket di bagian atas jendela baru.sumber
Saya sarankan Anda menyimpannya dalam .txt, karena ini bisa sangat panjang. Begitu:
Kemudian lihat file.txt di direktori Anda saat ini.
sumber