Jawaban:
aapt dump badging <path-to-apk> | grep package:\ name
|, tekan enter dan kemudian cari output untuk parameter yang Anda inginkan. Ingatlah bahwa itu aaptperlu di jalan Anda
aaptperintah terletak di bawah Android\SDK\build-tools\version. pada perintah windows bisa aapt dump badging <path-to-apk> | findstr -i "package: name"atauaapt dump badging <path-to-apk>
Anda dapat menginstal apk di ponsel Anda, lalu
terhubung menggunakan adb, Anda dapat meluncurkan shell adb dan menjalankan paket daftar pm -f, yang menunjukkan nama paket untuk setiap apk diinstal.
Ini diambil dari Temukan nama paket untuk aplikasi Android untuk menggunakan Intent untuk meluncurkan aplikasi Market dari web
superintah terlebih dahulu.
pm list packages -f | grep term-to-search-for
Berdasarkan jawaban @hackbod ... tetapi terkait dengan windows.
aaptperintah terletak di Android\SDK\build-tools\version. Jika Anda memerlukan info lebih lanjut tentang apa itu appt command(Perangkat Pengemasan Aset Android) baca ini https://stackoverflow.com/a/28234956/812915
The dumpsub-perintah aaptyang 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: nameinfo, gunakanfindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
Semoga ini bisa membantu pengguna windows lainnya!
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.yaumnama paketnya
https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd
Jika Anda membuka AndroidManifest.xml menggunakan MS Notepad, cari frasa packagedan Anda akan menemukan yang berikut:
package manifest $xxx.xxxxxxx.xxxxxxx |
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.
Skrip bash berikut akan menampilkan nama paket dan nama aktivitas utama:
apk_package.sh
package=$(aapt dump badging "$*" | awk '/package/{gsub("name=|'"'"'",""); print $2}')
activity=$(aapt dump badging "$*" | awk '/activity/{gsub("name=|'"'"'",""); print $2}')
echo
echo " file : $1"
echo "package : $package"
echo "activity: $activity"
jalankan seperti ini:
apk_package.sh /path/to/my.apk
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)
aapt - Alat Pengemasan Aset Android, bagian dari unduhan SDK Tools
Menggunakan awksebutkan 'sebagai Pemisah Bidang, cari baris dengan package: name=, dan cetak hanya "bidang 2" di baris:
aapt dump badging /path/to/file.apk | awk -v FS="'" '/package: name=/{print $2}'
Kelemahan dari metode ini adalah bahwa ia bergantung pada aapt untuk menampilkan bidang informasi paket dalam urutan yang sama:
package: name='com.example.appname' versionCode='3461' versionName='2.2.4' platformBuildVersionName='4.2.2-1425461'
Kami tidak memiliki komitmen dari pengembang untuk mempertahankan format ini.
Menggunakan awksebutkan "sebagai Pemisah Bidang, cari baris dengan package=, dan cetak hanya "bidang 2" di baris:
aapt list -a /path/to/file.apk | awk -v FS='"' '/package=/{print $2}'
Kelemahan dari metode ini adalah bahwa ia bergantung pada aapt untuk output package=hanya di Android Manifest:bagian output. Kami tidak memiliki komitmen dari pengembang untuk mempertahankan format ini.
Luaskan file apk dengan apktool ddan 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 dalih-alih yang sederhana unzipseharusnya melakukan ini untuk Anda, tetapi tidak.) Berikan komentar jika Anda memiliki solusi untuk masalah ini
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"
A:package="com.example.appname"di Android 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:
Metode yang sangat sederhana adalah dengan menggunakan apkanalyzer.
apkanalyzer manifest application-id "${_path_to_apk}"
Saya pikir cara terbaik dan paling sederhana untuk mengekstrak hanya nama paket di Linux
aapt dump badging <APK_path> | grep package | sed -r "s/package: name='([a-z0-9.]*)'.*/\1/"
Penjelasan:
package: name='([a-z0-9.]*)'.*dan ganti dengan grup yang cocok pertama (dan hanya).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:
7z e -so MyApp.apk AndroidManifest.xml | gema '\x00=' | gema -match 'manifest<U1><U>=@substring{0;@char-int{$1};$2}'
Tentu saja, Anda dapat menggunakan alat lain untuk melakukan penyaringan.
Jika Anda tidak menginstal Android SDK, seperti pada beberapa skenario pengujian, Anda bisa mendapatkan nama paket menggunakan metode bash berikut:
getAppIdFromApk() {
local apk_path="$1"
# regular expression (required)
local re="^\"L.*/MainActivity;"
# sed substitute expression
local se="s:^\"L\(.*\)/MainActivity;:\1:p"
# tr expression
local te=' / .';
local app_id="$(unzip -p $apk_path classes.dex | strings | grep -Eo $re | sed -n -e $se | tr $te)"
echo "$app_id"
}
Diuji pada mac. 'string' dan 'unzip' adalah standar pada sebagian besar linux, jadi harus juga bekerja pada linux.
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.
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:
# extract the android package id from a built apk file
# usage ./getPackageName.sh <path-to-apk>
line=`aapt dump badging "$1" | grep package:\ name`
# above returns:
# package: name='com.calvium.myapp' versionCode='1' versionName='1.0'
if [[ $line =~ name=\'(.+)\'\ versionCode ]]; then
echo ${BASH_REMATCH[1]}
else
echo "Failed to find package name"
exit 1
fi
Jadi Anda bisa menulis:
hapus adb `./getPackageName.sh file.apk`
Untuk Windows berikut ini berfungsi untuk saya:
:: // Initializing variables
SET adb="C:\Users\<User name>\AppData\Local\Android\Sdk\platform-tools\adb"
SET aapt="C:\Users\<User name>\AppData\Local\Android\Sdk\build-tools\22.0.0\aapt"
SET APKPath=C:\Users\<User name>\Desktop\APK\Instant_Instal\
CD %APKPath%
:: // Searching for apk file and storing it
FOR /F "delims=" %%f IN ('dir /S /B *.apk') DO SET "APKFullPath=%%f"
SET apk=%APKFullPath%
:: // Command adb install apk, run apk
%adb% install %apk%
:: // Fetching package name from apk
%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
FOR /F "tokens=2 delims='" %%s IN (temp.txt) DO SET pkgName=%%s
del temp.txt
:: // Launching apk
%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
pause
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 topkgName` variabel%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1meluncurkan aplikasi.Intinya kode di atas menginstal apk dari lokasi yang diberikan di desktop "Desktop \ APK \ Instant_Instal \" ke perangkat dan meluncurkan aplikasi.
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).
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:
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.
Anda dapat menggunakan Analyze APK...dari menu Bangun di Android Studio, itu akan menampilkan nama paket di bagian atas jendela baru.