जवाबों:
aapt dump badging <path-to-apk> | grep package:\ name
|
, एंटर दबा सकते हैं और फिर अपने इच्छित पैरामीटर के लिए आउटपुट खोज सकते हैं। बस याद रखें कि aapt
आपके रास्ते में होना चाहिए
aapt
के तहत कमांड स्थित है Android\SDK\build-tools\version
। खिड़कियों पर आदेश हो सकता है aapt dump badging <path-to-apk> | findstr -i "package: name"
याaapt dump badging <path-to-apk>
आप अपने फोन पर एपीके इंस्टॉल कर सकते हैं
adb का उपयोग करके कनेक्ट करें, आप adb शेल लॉन्च कर सकते हैं और pm लिस्ट पैकेज -f निष्पादित कर सकते हैं, जो प्रत्येक इंस्टॉल किए गए एपीके के लिए पैकेज का नाम दिखाता है।
यह वेब से मार्केट ऐप लॉन्च करने के इरादे का उपयोग करने के लिए एंड्रॉइड ऐप्स के लिए पैकेज नाम से लिया गया है
su
पहले कमांड का उपयोग करें ।
pm list packages -f | grep term-to-search-for
@Hackbod उत्तर के आधार पर ... लेकिन विंडोज़ से संबंधित।
aapt
कमांड पर स्थित है Android\SDK\build-tools\version
। अगर आपको इस बारे में अधिक जानकारी चाहिए कि appt command
(Android Asset पैकेजिंग टूल) क्या है तो इसे पढ़ें https://stackoverflow.com/a/28234956/812915
dump
के उप कमान aapt
अलग-अलग तत्वों या एक पैकेज के कुछ हिस्सों के मूल्यों को प्रदर्शित किया जाता है:
aapt dump badging <path-to-apk>
यदि आप package: name
जानकारी के साथ केवल रेखा देखना चाहते हैं , तो उपयोग करेंfindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
आशा है कि यह अन्य विंडोज़ उपयोगकर्ता की मदद करेगा!
अगर आप google play देख रहे हैं और इसका पैकेज नाम जानना चाहते हैं तो आप url या एड्रेस बार पर देख सकते हैं। आपको पैकेज का नाम मिलेगा। यहाँ com.landshark.yaum
पैकेज का नाम है
https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd
यदि आप MS Notepad का उपयोग करके AndroidManifest.xml खोलते हैं, तो वाक्यांश खोजें package
और आप निम्नलिखित पाएंगे:
package manifest $xxx.xxxxxxx.xxxxxxx |
जहां xxx.xxxxxxx.xxxxxxx आपका पैकेज नाम है, प्रत्येक वर्ण के बाद एक स्थान के साथ लिखा गया है।
जब आपके पास कोई विशिष्ट उपकरण स्थापित न हो तो यह उपयोगी तरीका है।
निम्नलिखित बैश स्क्रिप्ट पैकेज नाम और मुख्य गतिविधि नाम प्रदर्शित करेगी:
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"
इसे ऐसे चलाएं:
apk_package.sh /path/to/my.apk
यदि आपको इस प्रोग्राम को करने की आवश्यकता है, तो यह आपके मस्तिष्क में उत्तर प्राप्त करने की तुलना में थोड़ा अधिक शामिल है। मेरे पास एक स्क्रिप्ट है जिसका उपयोग हम अपने सभी ऐप्स पर हस्ताक्षर करने के लिए करते हैं, लेकिन प्रत्येक एक अलग कुंजी का उपयोग करते हैं। यहां पैकेज के नाम को आउटपुट के रूप में प्राप्त करने के 2 तरीके दिए गए हैं ताकि आप इसे एक चर में रख सकें या इसके साथ आपको जो भी आवश्यक हो वह कर सकें।
उदाहरण आउटपुट: com.example.appname
(और कुछ नहीं)
aapt
- एंड्रॉइड एसेट पैकेजिंग टूल, एसडीके टूल्स डाउनलोड का हिस्सा
फ़ील्ड विभाजक के रूप में awk
निर्दिष्ट का उपयोग करके '
, लाइन के साथ खोजें package: name=
, और लाइन में केवल 2 "फ़ील्ड" प्रिंट करें:
aapt dump badging /path/to/file.apk | awk -v FS="'" '/package: name=/{print $2}'
इस पद्धति की एक कमजोरी यह है कि यह पैकेज सूचना क्षेत्रों को उसी क्रम में आउटपुट करने के लिए aapt पर निर्भर करती है:
package: name='com.example.appname' versionCode='3461' versionName='2.2.4' platformBuildVersionName='4.2.2-1425461'
इस प्रारूप को बनाए रखने के लिए डेवलपर्स से हमारी कोई प्रतिबद्धता नहीं है।
फ़ील्ड विभाजक के रूप में awk
निर्दिष्ट का उपयोग करके "
, लाइन के साथ खोजें package=
, और लाइन में केवल 2 "फ़ील्ड" प्रिंट करें:
aapt list -a /path/to/file.apk | awk -v FS='"' '/package=/{print $2}'
इस पद्धति की एक कमजोरी यह है कि यह package=
केवल आउटपुट के Android Manifest:
खंड में आउटपुट पर निर्भर करती है । इस प्रारूप को बनाए रखने के लिए डेवलपर्स से हमारी कोई प्रतिबद्धता नहीं है।
Apk फ़ाइल का विस्तार करें apktool d
और AndroidManifest.xml पढ़ें।
यह सबसे अच्छी विधि होगी, लेकिन AndroidManifest.xml एक द्विआधारी फ़ाइल है और सभी SO उत्तर जो मैं इसे पाठ में परिवर्तित करने के लिए देखता हूं काम नहीं करता है। ( apktool d
एक साधारण के बजाय का उपयोग unzip
करना आपके लिए ऐसा करना माना जाता है, लेकिन यह नहीं करता है।) कृपया इस मुद्दे का समाधान करें
एक और उपाय है कि aapt सूची का उपयोग करें और उस के माध्यम से पार्स करने के लिए sed का उपयोग करें:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
A:package="com.example.appname"
में Android Manifest:
अनुभाग का उपयोग करने की आवश्यकता हैaapt list -a
यदि आप अपने एपीके को अपने स्मार्टफ़ोन पर पहले ही प्राप्त कर चुके हैं तो एक बहुत ही सरल तरीका है। बस इनमें से किसी एक एप्लिकेशन का उपयोग करें:
एपीकेनाइज़र का उपयोग करने के लिए एक बहुत ही सरल विधि है।
apkanalyzer manifest application-id "${_path_to_apk}"
मुझे लगता है कि लिनक्स में केवल पैकेज नाम निकालने का सबसे अच्छा और सरल तरीका है
aapt dump badging <APK_path> | grep package | sed -r "s/package: name='([a-z0-9.]*)'.*/\1/"
स्पष्टीकरण:
package: name='([a-z0-9.]*)'.*
और पहले (और केवल) मिलान समूह के साथ प्रतिस्थापित करें।आप APK से AndroidManifest.xml निकाल सकते हैं, सभी NULL बाइट्स निकाल सकते हैं, स्ट्रिंग 'मेनिफ़ेस्ट' के बाद तक सब कुछ छोड़ सकते हैं, और फिर आप पैकेज नाम (और उसके बाद क्या आता है) के बाद एक बाइट पर हैं। मुश्किल काम के लिए मैं महान GEMA उपकरण का उपयोग करता हूं , इसलिए कमांड इस तरह दिखता है:
7z e -so MyApp.apk AndroidManifest.xml | gema '\x00=' | gema -match 'manifest<U1><U>=@substring{0;@char-int{$1};$2}'
बेशक, आप फ़िल्टर करने के लिए किसी अन्य उपकरण का उपयोग कर सकते हैं।
यदि आपके पास एंड्रॉइड एसडीके स्थापित नहीं है, तो कुछ परीक्षण परिदृश्यों की तरह, आप निम्नलिखित बैश विधि का उपयोग करके पैकेज का नाम प्राप्त कर सकते हैं:
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"
}
एक मैक पर परीक्षण किया गया। un स्ट्रिंग्स ’और z अनजिप’ ज्यादातर लिनक्स पर मानक हैं, इसलिए लाइनक्स पर भी काम करना चाहिए।
मैंने डी-कंप्लेन चीज़ की भी कोशिश की, यह काम करता है लेकिन हाल ही में मुझे सबसे आसान तरीका मिला:
Appium वेबसाइट से Appium को डाउनलोड और इंस्टॉल करें
Appium-> Android सेटिंग खोलें, लक्ष्य APK फ़ाइल चुनें। और फिर आपको वह सब कुछ मिलता है जो आप चाहते हैं, पैकेज की जानकारी, गतिविधि की जानकारी।
बैच स्क्रिप्टिंग में इसका उपयोग करने के लिए स्क्रिप्ट को सिर्फ पैकेज नाम (जैसे कि आपके पास एपीके की स्थापना रद्द करने के लिए) वापस करना आसान है।
यहां वह स्क्रिप्ट है जिसका मैं उपयोग करता हूं:
# 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
तो आप लिख सकते हैं:
adb की स्थापना रद्द करें `
निम्नलिखित विंडोज के लिए मेरे लिए काम किया:
:: // 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
ध्यान दें
कृपया अपने सिस्टम में adb, aapt, और एपीके स्थान के पथ के अनुसार adb, aapt, APKPath के पथ संपादित करें।
काम कर रहे:
%adb% install %apk%
यदि डिवाइस कनेक्ट है तो कमांड एप्लिकेशन को इंस्टॉल करता है।%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
संकुल का नाम और कुछ अन्य विवरण जैसे कि एपीके का संस्करण इत्यादि और एक अस्थायी स्थान पर स्टोर करता है।extracts the package name and assigns to
pkgName' चर%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
में ऐप लॉन्च किया।संक्षेप में उपरोक्त कोड डिवाइस में डेस्कटॉप "डेस्कटॉप \ APK \ Instant_Instal \" में दिए गए स्थान से एपीके इंस्टॉल करता है और एप्लिकेशन लॉन्च करता है।
जैसा कि मैं संपादक के साथ .apk फ़ाइल में पैकेज का नाम खोजने में सक्षम नहीं था (जैसा कि ऊपर सुझाव दिया गया है), मैंने ऐप "ईएस डेटी एक्सप्लोरर" / "ईएस फाइल एक्सप्लोरर" (नि: शुल्क संस्करण) में फ़ंक्शन की जांच की है कि मैं पहले ही स्थापित कर दिया था। इस टूल में पैकेज का नाम ठीक से दिखाया गया है।
जैसा कि मुझे लगता है कि एक अच्छा फ़ाइल एक्सप्लोरर एक फोन पर गायब नहीं होना चाहिए, मैं इस उपकरण का उपयोग करने का सुझाव देता हूं (यदि आपने पहले से ही मोबाइल पर एपीके इंस्टॉल किया है और पैकेज नाम जानना है)।
चूंकि इसके Android प्रलेखन में उल्लेख किया गया है कि AAPT को हटा दिया गया है , लिनक्स में AAPT2 कमांड का उपयोग करके पैकेज का नाम प्राप्त करना निम्नानुसार है:
./aapt2 dump packagename <path_to_apk>
चूंकि मैं ग्रेडल बिल्ड के पुराने संस्करण का उपयोग कर रहा हूं, इसलिए मुझे AAPT2 का एक नया संस्करण डाउनलोड करना होगा जैसा कि यहां बताया गया है:
Google Maven से AAPT2 डाउनलोड करें
मेरे sdk में बिल्ड-टूल्स का उपयोग करना - 25.0.3, 26.0.1 और 27.0.3, aapt2 कमांड को निष्पादित करना एक त्रुटि दिखाता है: 'packagename' को खोलने में असमर्थ: ऐसी कोई फ़ाइल या निर्देशिका नहीं। इसलिए मैं AAPT2 के नए संस्करणों के लिए गया था।
मैंने लिनक्स के लिए 3.3.0-5013011 का उपयोग किया।
आप Analyze APK...
एंड्रॉइड स्टूडियो में बिल्ड मेनू से उपयोग कर सकते हैं , यह नई विंडो के शीर्ष पर पैकेज नाम प्रदर्शित करेगा।