আমার একটি অ্যান্ড্রয়েড APK এর প্যাকেজের নাম নেওয়া দরকার । আমি APK আনজিপ আনার এবং বিষয়বস্তু পড়ার চেষ্টা করেছি AndroidManifest.xml
, তবে মনে হয় এটি কোনও পাঠ্য ফাইল নয়।
আমি কীভাবে APK এর প্যাকেজের নাম বের করতে পারি?
আমার একটি অ্যান্ড্রয়েড APK এর প্যাকেজের নাম নেওয়া দরকার । আমি APK আনজিপ আনার এবং বিষয়বস্তু পড়ার চেষ্টা করেছি AndroidManifest.xml
, তবে মনে হয় এটি কোনও পাঠ্য ফাইল নয়।
আমি কীভাবে APK এর প্যাকেজের নাম বের করতে পারি?
উত্তর:
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>
আপনি তখন আপনার ফোনে এপিকে ইনস্টল করতে পারেন
অ্যাডবি ব্যবহার করে সংযোগ স্থাপন করুন, আপনি অ্যাডবি শেলটি চালু করতে পারেন এবং বিকাল বেলা তালিকা প্যাকেজগুলি কার্যকর করতে পারেন - যা প্রতিটি ইনস্টলড এপিপির জন্য প্যাকেজের নাম দেখায়।
এই থেকে নেওয়া Android এর জন্য এটি প্যাকেজের নাম ওয়েব থেকে Market অ্যাপ্লিকেশানে আরম্ভ করার জন্য ইন্টেন্ট ব্যবহার করতে অ্যাপ
su
কমান্ডটি প্রথমে ব্যবহার করুন ।
pm list packages -f | grep term-to-search-for
@ হ্যাকবড উত্তরের উপর ভিত্তি করে ... তবে উইন্ডো সম্পর্কিত।
aapt
কমান্ড অবস্থিত Android\SDK\build-tools\version
। appt command
(অ্যান্ড্রয়েড অ্যাসেট প্যাকেজিং সরঞ্জাম) কী সম্পর্কে আপনার আরও তথ্যের প্রয়োজন থাকলে এই 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:"
আশা করি এটি অন্যান্য উইন্ডোজ ব্যবহারকারীকে সহায়তা করবে!
আপনি যদি গুগল প্লেটির দিকে তাকিয়ে থাকেন এবং এর প্যাকেজের নাম জানতে চান তবে আপনি url বা ঠিকানা বারটি দেখতে পারেন at আপনি প্যাকেজের নাম পাবেন। com.landshark.yaum
প্যাকেজের নাম এখানে
https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd
আপনি যদি এমএস নোটপ্যাড ব্যবহার করে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলটি খুলেন তবে বাক্যাংশটি অনুসন্ধান করুন package
এবং নিম্নলিখিতগুলি পাবেন:
package manifest $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=
কেবল ২ য় "ক্ষেত্র" মুদ্রণ করুন:
aapt dump badging /path/to/file.apk | awk -v FS="'" '/package: name=/{print $2}'
এই পদ্ধতির একটি দুর্বলতা হ'ল এটি একই ক্রমে প্যাকেজ তথ্য ক্ষেত্রগুলিকে আউটপুট দেওয়ার জন্য নির্ভর করে:
package: name='com.example.appname' versionCode='3461' versionName='2.2.4' platformBuildVersionName='4.2.2-1425461'
এই ফর্ম্যাটটি বজায় রাখতে আমাদের বিকাশকারীদের কাছ থেকে কোন প্রতিশ্রুতি নেই।
ফিল্ড বিভাজক হিসাবে awk
নির্দিষ্ট ব্যবহার করে "
, একটি লাইন অনুসন্ধান করুন এবং লাইনে package=
কেবল ২ য় "ক্ষেত্র" মুদ্রণ করুন:
aapt list -a /path/to/file.apk | awk -v FS='"' '/package=/{print $2}'
এই পদ্ধতির একটি দুর্বলতা হ'ল এটি package=
কেবল আউটপুট Android Manifest:
বিভাগে আউটপুট আউটপুট উপর নির্ভর করে । এই ফর্ম্যাটটি বজায় রাখতে আমাদের বিকাশকারীদের কাছ থেকে কোন প্রতিশ্রুতি নেই।
এপি কে ফাইলটি প্রসারিত করুন apktool d
এবং অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল পড়ুন।
এটি সেরা পদ্ধতি হবে তবে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল একটি বাইনারি ফাইল এবং এটি পাঠ্যে রূপান্তরিত করার জন্য আমি যে সমস্ত এসও উত্তর দেখি তা কার্যকর হয় না। ( apktool d
সরল পরিবর্তে ব্যবহার করা আপনার জন্য unzip
এটি করার কথা মনে করা হয় তবে তা তা করে না)) আপনার যদি এই সমস্যার সমাধান থাকে তবে মন্তব্য করুন
আরেকটি সমাধান হ'ল এপট তালিকাটি ব্যবহার করুন এবং এর মাধ্যমে পার্স করার জন্য সেড ব্যবহার করুন:
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
আপনার স্মার্টফোনে আপনার APK সবসময়ে প্রস্তুত থাকলে খুব সহজ উপায় রয়েছে। এই অ্যাপ্লিকেশনগুলির মধ্যে কেবল একটি ব্যবহার করুন:
একটি খুব সহজ পদ্ধতি হ'ল অ্যাপকন্যালিজার ব্যবহার করা।
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.]*)'.*
এবং প্রথম (এবং কেবল) মিলে যাওয়া গ্রুপের সাথে প্রতিস্থাপন করুন।আপনি এপিপি থেকে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল বের করতে পারেন, সমস্ত নুল বাইটগুলি সরিয়ে ফেলতে পারেন, স্ট্রিং 'ম্যানিফেস্ট' এর পরে সমস্ত কিছু এড়িয়ে যেতে পারেন এবং তারপরে আপনি প্যাকেজের নাম অনুসারে একটি দৈর্ঘ্য বাইটে (এবং এর পরে কী হবে)। কঠিন কাজের জন্য আমি দুর্দান্ত জিইএমএ সরঞ্জামটি ব্যবহার করি , সুতরাং কমান্ডটি দেখতে এরকম দেখাচ্ছে:
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"
}
একটি ম্যাক পরীক্ষিত। 'স্ট্রিং' এবং 'আনজিপ' বেশিরভাগ লিনাক্সের জন্য মানক, তাই লিনাক্সেও কাজ করা উচিত।
আমি ডি-সংকলন জিনিসটিও চেষ্টা করেছিলাম, এটি কাজ করে তবে সম্প্রতি আমি সবচেয়ে সহজ উপায় খুঁজে পেয়েছি:
অ্যাপিয়াম ওয়েবসাইট থেকে অ্যাপিয়াম ডাউনলোড এবং ইনস্টল করুন
অ্যাপিয়াম-> অ্যান্ড্রয়েড সেটিংটি খুলুন, টার্গেট এপিকে ফাইলটি চয়ন করুন। এবং তারপরে আপনি যা চান তা, প্যাকেজের তথ্য, ক্রিয়াকলাপের তথ্য পাবেন।
এটি ব্যাচ স্ক্রিপ্টিংয়ে ব্যবহার করার জন্য স্ক্রিপ্টটি কেবল প্যাকেজের নাম ফিরিয়ে আনা সহজ (উদাহরণস্বরূপ যখন আপনার 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 আনইনস্টল করুন /। /getPackageName.sh file.apk` `
উইন্ডোজ আমার জন্য নিম্নলিখিত কাজ করেছে:
:: // 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% install %apk%
ডিভাইস সংযুক্ত থাকলে অ্যাপ্লিকেশন ইনস্টল করে।%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
প্যাকেজের নাম এবং এপিপির সংস্করণ ইত্যাদির মতো আরও কয়েকটি বিবরণ নিয়ে আসে এবং এপিপির মতো একই জায়গায় একটি টেম্পের্ট টেক্সট ফাইল সঞ্চয় করে।extracts the package name and assigns to
পিকেজি নাম পরিবর্তনশীল%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
অ্যাপটি চালু করে।সংক্ষেপে উপরের কোডটি ডিভাইসে "ডেস্কটপ \ APK \ ইনস্ট্যান্ট_ইনস্টাল stal" ডেস্কটপে প্রদত্ত অবস্থান থেকে এপিকে ইনস্টল করে অ্যাপ্লিকেশন আরম্ভ করে।
আমি যেমন সম্পাদকের সাথে .apk ফাইলে প্যাকেজের নামটি সন্ধান করতে সক্ষম না হয়েছি (যেমন উপরে প্রস্তাবিত রয়েছে), আমি অ্যাপ্লিকেশন "ইএস ডেটি এক্সপ্লোরার" / "ইএস ফাইল এক্সপ্লোরার" (ফ্রি সংস্করণ) এর ফাংশনগুলি যাচাই করেছি ইতিমধ্যে ইনস্টল করা হয়েছে। এই সরঞ্জামে, প্যাকেজের নামটি সঠিকভাবে প্রদর্শিত হয়।
যেহেতু আমি মনে করি কোনও ভাল ফাইল এক্সপ্লোরার কোনও ফোনে নিখোঁজ হওয়া উচিত নয়, তাই আমি এই সরঞ্জামটি ব্যবহার করার পরামর্শ দিই (যদি আপনি ইতিমধ্যে একটি মোবাইলে এপিপি ইনস্টল করে রেখেছেন এবং প্যাকেজের নামটি জানতে চান)।
অ্যান্ড্রয়েড ডকুমেন্টেশনে এটি উল্লেখ করা হয়েছে যে এএপটি হ্রাস করা হয়েছে , তাই লিনাক্সে এএপটি 2 কমান্ড ব্যবহার করে প্যাকেজের নাম পাওয়া নিম্নরূপ:
./aapt2 dump packagename <path_to_apk>
যেহেতু আমি গ্রেডল বিল্ডের পুরানো সংস্করণটি ব্যবহার করছি, তাই এখানে বর্ণিত হিসাবে আমাকে এএপিটি 2 এর একটি নতুন সংস্করণটি ডাউনলোড করতে হয়েছিল:
গুগল ম্যাভেন থেকে এএপিটি 2 ডাউনলোড করুন
আমার এসডিকে বিল্ড-সরঞ্জামগুলি ব্যবহার করে - 25.0.3, 26.0.1 এবং 27.0.3, aapt2 কমান্ড কার্যকর করে একটি ত্রুটি দেখায়: 'প্যাকেজ নাম' খুলতে অক্ষম: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই। এজন্য আমি এএপিটি 2-র নতুন সংস্করণে গিয়েছিলাম।
আমি লিনাক্সের জন্য 3.3.0-5013011 ব্যবহার করেছি।
আপনি Analyze APK...
অ্যান্ড্রয়েড স্টুডিওতে বিল্ড মেনু থেকে ব্যবহার করতে পারেন , এটি নতুন উইন্ডোর শীর্ষে প্যাকেজের নামটি প্রদর্শন করবে।
অভিযোজন তালিকা - একটি "পথ_ টু_পাক"
আমি আপনাকে এটি একটি টেক্সটে সংরক্ষণ করার পরামর্শ দিচ্ছি, কারণ এটি খুব দীর্ঘ হতে পারে। তাই:
aapt list-a "path_to_apk"> file.txt
তারপরে আপনার বর্তমান ডিরেক্টরিতে file.txt দেখুন।