Yanıtlar:
aapt dump badging <path-to-apk> | grep package:\ name
|, enter tuşuna basabilir ve daha sonra çıktıyı istediğiniz parametreyi arayabilirsiniz. Bunun yolunuzda olması aaptgerektiğini unutmayın
aaptkomutu altında bulunur Android\SDK\build-tools\version. windows komutunda olabilir aapt dump badging <path-to-apk> | findstr -i "package: name"veyaaapt dump badging <path-to-apk>
APK'yı telefonunuza yükleyebilir, ardından
adb kullanarak bağlanın, adb shell'i başlatabilir ve kurulu her apk için paket adını gösteren pm list paketleri -f'yi yürütebilirsiniz.
Bu , Android uygulamalarının Web'den Market uygulamasını başlatmak için niyetini kullanması için Paket adını bul bölümünden alınmıştır
sukomutu kullanın .
pm list packages -f | grep term-to-search-for
@Hackbod yanıtına dayanarak ... ancak pencerelerle ilgili.
aaptkomutu üzerinde bulunur Android\SDK\build-tools\version. appt command(Android Varlık Paketleme Aracı) hakkında daha fazla bilgiye ihtiyacınız varsa, bu https://stackoverflow.com/a/28234956/812915 adresini okuyun.
dumpAlt komutu aaptbir paketin tek tek elemanları veya parçaları değerleri görüntülemek için kullanılır:
aapt dump badging <path-to-apk>
Yalnızca package: namebilgi içeren satırı görmek istiyorsanız şunu kullanın:findstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
Diğer windows kullanıcı yardımcı umut!
Google Play'e bakıyorsanız ve paket adını öğrenmek istiyorsanız, url'ye veya adres çubuğuna bakabilirsiniz. Paket adını alacaksınız. İşte com.landshark.yaumpaket adı
https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd
AndroidManifest.xml dosyasını MS Not Defteri'ni kullanarak açarsanız, kelime öbeğini arayın packageve aşağıdakileri bulabilirsiniz:
package manifest $xxx.xxxxxxx.xxxxxxx |
Burada xxx.xxxxxxx.xxxxxxx, paket adınızdır, her karakterden sonra bir boşlukla yazılmıştır.
Yüklü özel bir aracınız olmadığında kullanışlı bir yöntemdir.
Aşağıdaki bash betiği paket adını ve ana etkinlik adını görüntüler:
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"
şöyle çalıştırın:
apk_package.sh /path/to/my.apk
Bunu programlı bir şekilde yapmanız gerekiyorsa, cevabı beyninize almaktan biraz daha karmaşıktır. Tüm uygulamalarımızı imzalamak için kullandığım bir senaryom var, ancak her biri farklı bir anahtar kullanıyor. Yalnızca Paket Adını çıktı olarak almanın 2 yolu vardır, böylece bir değişkene koyabilir veya ihtiyacınız olan her şeyi yapabilirsiniz.
Örnek çıktı: com.example.appname(ve daha fazlası değil)
aapt- Android Varlık Paketleme Aracı, SDK Araçları parçası indir
Alan Ayırıcı olarak awkbelirlemeyi kullanarak ', ile bir satır arayın ve satırda package: name=yalnızca 2. "alanı" yazdırın:
aapt dump badging /path/to/file.apk | awk -v FS="'" '/package: name=/{print $2}'
Bu yöntemin zayıflığı, paket bilgi alanlarının aynı sırayla çıktısını alması için aapt'a dayanmasıdır:
package: name='com.example.appname' versionCode='3461' versionName='2.2.4' platformBuildVersionName='4.2.2-1425461'
Geliştiricilerin bu formatı koruma taahhüdümüz yoktur.
Alan Ayırıcı olarak awkbelirlemeyi kullanarak ", ile bir satır arayın ve satırda package=yalnızca 2. "alanı" yazdırın:
aapt list -a /path/to/file.apk | awk -v FS='"' '/package=/{print $2}'
Bu yöntemin bir zayıflığı, package=yalnızca çıktının Android Manifest:bölümünde çıktı almak için aapt'a dayanmasıdır . Geliştiricilerin bu formatı koruma taahhüdümüz yoktur.
APK dosyasını ile genişletin ve apktool dAndroidManifest.xml dosyasını okuyun.
Bu en iyi yöntem olurdu, ancak AndroidManifest.xml bir ikili dosyadır ve metne dönüştürmek için gördüğüm tüm SO yanıtları çalışmaz. ( apktool dBasit yerine kullanmak unzipsizin için bunu yapmak için gerekiyor, ancak değil.) Bu soruna bir çözüm varsa lütfen yorum
Başka bir çözüm, aapt listesini kullanmak ve bunu ayrıştırmak için sed kullanmaktır:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
A:package="com.example.appname"bu Android Manifest:bölümde kullanmak gerekiraapt list -a
APK'nızı Akıllı Telefonunuzda zaten varsa çok basit bir yol var. Sadece bu APP'lerden birini kullanın:
Çok basit bir yöntem apkanalyzer kullanmaktır.
apkanalyzer manifest application-id "${_path_to_apk}"
Bence sadece Linux'ta paket adını çıkarmanın en iyi ve en basit yolu
aapt dump badging <APK_path> | grep package | sed -r "s/package: name='([a-z0-9.]*)'.*/\1/"
Açıklama:
package: name='([a-z0-9.]*)'.*ve ilk (ve yalnızca) eşleşen grupla değiştirerek paket adıyla değiştirin.AndroidManifest.xml dosyasını APK'dan ayıklayabilir, tüm NULL baytlarını kaldırabilir, 'manifest' dizesinden sonraya kadar her şeyi atlayabilirsiniz ve daha sonra paket adı (ve bundan sonra gelenler) uzunluğunda bir bayt vardır. Zor görev için harika GEMA aracını kullanıyorum, bu yüzden komut şöyle görünüyor:
7z e -so MyApp.apk AndroidManifest.xml | gema '\x00=' | gema -match 'manifest<U1><U>=@substring{0;@char-int{$1};$2}'
Tabii ki, filtrelemeyi yapmak için başka herhangi bir aracı kullanabilirsiniz.
Android SDK yüklü değilse, bazı test senaryolarında olduğu gibi, aşağıdaki bash yöntemini kullanarak paket adını alabilirsiniz:
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"
}
Mac'te test edildi. 'stringler' ve 'unzip' çoğu linux için standarttır, bu nedenle linux üzerinde de çalışmalıdır.
Ben de derleme şeyi denedim, işe yarıyor ama son zamanlarda en kolay yolu buldum:
Appium'u Appium web sitesinden indirip yükleyin
Appium-> Android ayarını açın, hedef apk dosyasını seçin. Ve sonra istediğiniz her şeyi, paket bilgisini, aktivite bilgisini alırsınız.
Bunu toplu komut dosyasında kullanmak için komut dosyasının yalnızca paket adını döndürmesi yararlı olur (örneğin, APK'nız olduğunda bir uygulamayı kaldırmak için).
İşte kullandığım komut dosyası:
# 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
Böylece şunu yazabilirsiniz:
adb kaldırma `./getPackageName.sh file.apk`
Windows için aşağıdakiler benim için çalıştı:
:: // 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
Not
Lütfen adb, aapt, APKPath yollarını adb, aapt ve sisteminizdeki apk konumunun yollarına göre düzenleyin.
Çalışma:
%adb% install %apk%Aygıt bağlıysa uygulamayı yükler.%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt paket adını ve apk'nin sürümü vb. Gibi birkaç ayrıntıyı alır ve temp.txt dosyasında apk ile aynı konumda depolar.extracts the package name and assigns to pkgName` değişkeni%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1uygulamayı başlatır.Esasen yukarıdaki kod, apk'yi masaüstü "Masaüstü \ APK \ Instant_Instal \" içindeki belirli bir konumdan cihaza yükler ve uygulamayı başlatır.
Paket adını editör ile .apk dosyasında bulamadım (yukarıda önerildiği gibi), ben App "ES Datei Explorer" / "ES Dosya Gezgini" (ücretsiz sürüm) fonksiyonları kontrol ettim zaten kurulmuştu. Bu araçta, paket adı düzgün bir şekilde gösterilir.
İyi bir dosya gezgininin bir telefonda eksik olmaması gerektiğini düşündüğüm için, bu aracı kullanmanızı öneririm (apk'yi bir cep telefonuna zaten yüklediyseniz ve paket adını bilmeniz gerekiyorsa).
Android belgelerinde AAPT'nin kullanımdan kaldırıldığı belirtildiği için , Linux'ta AAPT2 komutunu kullanarak paket adını almak aşağıdaki gibidir:
./aapt2 dump packagename <path_to_apk>
Gradle derlemesinin daha eski bir sürümünü kullandığım için, burada belirtildiği gibi AAPT2'nin daha yeni bir sürümünü indirmek zorunda kaldım:
Google Maven'den AAPT2'yi indirin
Sdk - 25.0.3, 26.0.1 ve 27.0.3 sürümlerindeki derleme araçlarını kullanarak, aapt2 komutunu yürütmek bir hata gösteriyor: 'packagegename' açılamıyor: Böyle bir dosya veya dizin yok. Bu yüzden AAPT2'nin daha yeni sürümlerine gittim.
Linux için 3.3.0-5013011 kullandım.
Analyze APK...Android Studio'daki Oluştur menüsünden kullanabilirsiniz , yeni pencerenin en üstünde paket adını görüntüler.