একটি Android APK এর প্যাকেজের নামটি পড়ুন Read


200

আমার একটি অ্যান্ড্রয়েড APK এর প্যাকেজের নাম নেওয়া দরকার । আমি APK আনজিপ আনার এবং বিষয়বস্তু পড়ার চেষ্টা করেছি AndroidManifest.xml, তবে মনে হয় এটি কোনও পাঠ্য ফাইল নয়।

আমি কীভাবে APK এর প্যাকেজের নাম বের করতে পারি?

উত্তর:


320
aapt dump badging <path-to-apk> | grep package:\ name

1
অ্যান্ড্রয়েড কোডের মধ্যে থেকে এটিকে কল করার কোনও উপায় আছে কি? আমি আমার অ্যাপ্লিকেশনটির মাধ্যমে ডাউনলোড করা একটি APK এর একটি প্যাকেজ চালু করতে সক্ষম হতে চাই।
ম্যাট পরিধান

7
appt ডাম্প ব্যাজিং <path-to-apk> |
গ্রেপ

2
@ ক্যাম্পিয়াদোর আপনি পাইপ না হওয়া পর্যন্ত টাইপ করতে পারেন |, এন্টার টিপুন এবং তারপরে আপনার পছন্দসই প্যারামিটারের জন্য আউটপুট অনুসন্ধান করুন। কেবল মনে রাখবেন যে aaptআপনার পথে থাকা দরকার
প্যাট্রিক

আপনার যদি এই প্রোগ্রামটিমেটিকভাবে (স্ক্রিপ্টের জন্য) পেতে হয় তবে আমার উত্তরটি নীচে দেখুন।
ব্রুনো ব্রোনোস্কি

15
aaptকমান্ড অধীন অবস্থিত Android\SDK\build-tools\version। উইন্ডোজ কমান্ডে aapt dump badging <path-to-apk> | findstr -i "package: name"বা হতে পারেaapt dump badging <path-to-apk>
সমমানের

75

আপনি তখন আপনার ফোনে এপিকে ইনস্টল করতে পারেন

অ্যাডবি ব্যবহার করে সংযোগ স্থাপন করুন, আপনি অ্যাডবি শেলটি চালু করতে পারেন এবং বিকাল বেলা তালিকা প্যাকেজগুলি কার্যকর করতে পারেন - যা প্রতিটি ইনস্টলড এপিপির জন্য প্যাকেজের নাম দেখায়।

এই থেকে নেওয়া Android এর জন্য এটি প্যাকেজের নাম ওয়েব থেকে Market অ্যাপ্লিকেশানে আরম্ভ করার জন্য ইন্টেন্ট ব্যবহার করতে অ্যাপ


1
এছাড়াও, আপনাকে নিশ্চিত করতে হবে যে আপনি উন্নত সুবিধাগুলি নিয়ে চলছে। মূলত, টার্মিনালে, suকমান্ডটি প্রথমে ব্যবহার করুন ।
পালসুইম

4
নির্দিষ্ট প্যাকেজটির নাম সন্ধান করতেpm list packages -f | grep term-to-search-for
প্যাট্রিক ফ্যাভ্রে

14

@ হ্যাকবড উত্তরের উপর ভিত্তি করে ... তবে উইন্ডো সম্পর্কিত।

aaptকমান্ড অবস্থিত Android\SDK\build-tools\versionappt 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:"

আশা করি এটি অন্যান্য উইন্ডোজ ব্যবহারকারীকে সহায়তা করবে!


13

আপনি যদি গুগল প্লেটির দিকে তাকিয়ে থাকেন এবং এর প্যাকেজের নাম জানতে চান তবে আপনি url বা ঠিকানা বারটি দেখতে পারেন at আপনি প্যাকেজের নাম পাবেন। com.landshark.yaumপ্যাকেজের নাম এখানে

 https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd

12

আপনি যদি এমএস নোটপ্যাড ব্যবহার করে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলটি খুলেন তবে বাক্যাংশটি অনুসন্ধান করুন packageএবং নিম্নলিখিতগুলি পাবেন:

package manifest $xxx.xxxxxxx.xxxxxxx |

যেখানে এক্সএক্সএক্সএক্সএক্সএক্সএক্সএলএলএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স আপনার প্যাকেজের নাম, প্রতিটি চরিত্রের পরে কেবল একটি জায়গার সাথে লেখা।

আপনার যখন কোনও নির্দিষ্ট সরঞ্জাম ইনস্টল না থাকে তখন এটি কার্যকর উপায়।


অ্যাপটির কোড গিথুব এ থাকলে এটি বিশেষত কার্যকর! অন্যান্য পদ্ধতির তুলনায় অনেক সহজ, ধন্যবাদ!

1
আমি এপিকে আনপ্যাক করেছি, তবে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল একটি বাইনারি ফাইল ছিল। অদ্ভুত তবে সত্য।
ফাতেমন

12

নিম্নলিখিত বাশ স্ক্রিপ্টটি প্যাকেজের নাম এবং মূল ক্রিয়াকলাপের নাম প্রদর্শন করবে:

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

গ্রেপ এবং এসডকে কখনই অ্যাজকের সাথে সংযুক্ত করবেন না। Awk ব্যবহার করা যথেষ্ট।
ব্রুনো ব্রোনোস্কি

8

একটি প্রোগ্রাম্যাটিক উত্তর

যদি আপনাকে প্রোগ্রামটিভভাবে এটি করার দরকার হয় তবে এটি আপনার মস্তিষ্কে উত্তর পাওয়ার চেয়ে কিছুটা বেশি জড়িত। আমার স্ক্রিপ্ট রয়েছে যা আমি আমাদের সমস্ত অ্যাপ্লিকেশনগুলিতে সাইন ইন করতে ব্যবহার করি তবে প্রত্যেকে আলাদা আলাদা কী ব্যবহার করে। এখানে প্যাকেজটির নাম পাওয়ার 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'

এই ফর্ম্যাটটি বজায় রাখতে আমাদের বিকাশকারীদের কাছ থেকে কোন প্রতিশ্রুতি নেই।

সমাধান 2

ফিল্ড বিভাজক হিসাবে awkনির্দিষ্ট ব্যবহার করে ", একটি লাইন অনুসন্ধান করুন এবং লাইনে package=কেবল ২ য় "ক্ষেত্র" মুদ্রণ করুন:

aapt list -a /path/to/file.apk | awk -v FS='"' '/package=/{print $2}'

এই পদ্ধতির একটি দুর্বলতা হ'ল এটি package=কেবল আউটপুট Android Manifest:বিভাগে আউটপুট আউটপুট উপর নির্ভর করে । এই ফর্ম্যাটটি বজায় রাখতে আমাদের বিকাশকারীদের কাছ থেকে কোন প্রতিশ্রুতি নেই।

সমাধান 3

এপি কে ফাইলটি প্রসারিত করুন apktool dএবং অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল পড়ুন।

এটি সেরা পদ্ধতি হবে তবে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল একটি বাইনারি ফাইল এবং এটি পাঠ্যে রূপান্তরিত করার জন্য আমি যে সমস্ত এসও উত্তর দেখি তা কার্যকর হয় না। ( apktool dসরল পরিবর্তে ব্যবহার করা আপনার জন্য unzipএটি করার কথা মনে করা হয় তবে তা তা করে না)) আপনার যদি এই সমস্যার সমাধান থাকে তবে মন্তব্য করুন


1
কপি করার জন্য একক লাইন কমান্ড দেওয়ার চেয়ে বোঝার জন্য আরও তথ্য দেওয়ার জন্য ধন্যবাদ।
আলী জেনালি

4

একটি সহজ সমাধান হ'ল ওপেন অ্যান্ড্রয়েড স্টুডিও -> বিল্ড -> এপিকে বিশ্লেষণ করুন ... ব্রাউজ করুন এবং APK টি নির্বাচন করুন এখন আপনি প্যাকেজের নাম খুঁজে পেতে পারেন এবং আপনি বেশ কিছুটা পড়তে পারেন।


2

আপনি যদি কেবল প্যাকেজের নাম জানতে চান, অ্যাডবি লগক্যাট চালান, আপনার যে ক্রিয়াকলাপটি চান তা চালু করুন, আপনি প্যাকেজের নামে একটি ইঙ্গিত পাবেন।


2

আরেকটি সমাধান হ'ল এপট তালিকাটি ব্যবহার করুন এবং এর মাধ্যমে পার্স করার জন্য সেড ব্যবহার করুন:

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
ব্রুনো ব্রোনোস্কি



1

আমি মনে করি লিনাক্সের মধ্যে কেবল প্যাকেজের নাম উত্তোলনের সবচেয়ে সহজ এবং সহজ উপায়

aapt dump badging <APK_path> | grep package | sed -r "s/package: name='([a-z0-9.]*)'.*/\1/"

ব্যাখ্যা:

  1. এএপটি এপিএকের তথ্য বের করে
  2. প্যাকেজ তথ্য সম্পর্কে কেবল রেখা রাখতে "প্যাকেজ" গ্রেপ করুন
  3. কেবলমাত্র নীচের রেজিক্সটি ব্যবহার করে প্যাকেজের নামের সাথে পুরো লাইনটি প্রতিস্থাপন করুন: package: name='([a-z0-9.]*)'.*এবং প্রথম (এবং কেবল) মিলে যাওয়া গ্রুপের সাথে প্রতিস্থাপন করুন।

1

আপনি এপিপি থেকে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল বের করতে পারেন, সমস্ত নুল বাইটগুলি সরিয়ে ফেলতে পারেন, স্ট্রিং 'ম্যানিফেস্ট' এর পরে সমস্ত কিছু এড়িয়ে যেতে পারেন এবং তারপরে আপনি প্যাকেজের নাম অনুসারে একটি দৈর্ঘ্য বাইটে (এবং এর পরে কী হবে)। কঠিন কাজের জন্য আমি দুর্দান্ত জিইএমএ সরঞ্জামটি ব্যবহার করি , সুতরাং কমান্ডটি দেখতে এরকম দেখাচ্ছে:

7z e -so MyApp.apk AndroidManifest.xml | gema '\x00=' | gema -match 'manifest<U1><U>=@substring{0;@char-int{$1};$2}'

অবশ্যই, আপনি ফিল্টারিং করতে অন্য যে কোনও সরঞ্জাম ব্যবহার করতে পারেন।


1

আপনার যদি কিছু পরীক্ষার দৃশ্যের মতো অ্যান্ড্রয়েড এসডিকে ইনস্টল না করা থাকে তবে আপনি নিম্নলিখিত ব্যাশ পদ্ধতিটি ব্যবহার করে প্যাকেজের নামটি পেতে পারেন:

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"
}

একটি ম্যাক পরীক্ষিত। 'স্ট্রিং' এবং 'আনজিপ' বেশিরভাগ লিনাক্সের জন্য মানক, তাই লিনাক্সেও কাজ করা উচিত।


0

আপনি আপনার এমুলেটরটিতে প্যাকেজ_নাম_ভিউয়ার.এপকে ইনস্টল করতে পারেন এবং তারপরে আপনি আপনার এমুলেটরটিতে সমস্ত ইনস্টলড অ্যাপ্লিকেশনটির প্যাকেজের নাম দেখতে পাবেন।


0

আমি ডি-সংকলন জিনিসটিও চেষ্টা করেছিলাম, এটি কাজ করে তবে সম্প্রতি আমি সবচেয়ে সহজ উপায় খুঁজে পেয়েছি:

  1. অ্যাপিয়াম ওয়েবসাইট থেকে অ্যাপিয়াম ডাউনলোড এবং ইনস্টল করুন

  2. অ্যাপিয়াম-> অ্যান্ড্রয়েড সেটিংটি খুলুন, টার্গেট এপিকে ফাইলটি চয়ন করুন। এবং তারপরে আপনি যা চান তা, প্যাকেজের তথ্য, ক্রিয়াকলাপের তথ্য পাবেন।


0

এটি ব্যাচ স্ক্রিপ্টিংয়ে ব্যবহার করার জন্য স্ক্রিপ্টটি কেবল প্যাকেজের নাম ফিরিয়ে আনা সহজ (উদাহরণস্বরূপ যখন আপনার 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` `


0

উইন্ডোজ আমার জন্য নিম্নলিখিত কাজ করেছে:

:: // 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

বিঃদ্রঃ

দয়া করে আপনার সিস্টেমে অ্যাডাব, আ্যাপট, এবং এপিপির অবস্থান অনুসারে অ্যাডবি, আ্যাপট, এপিএপথের পাথগুলি সম্পাদনা করুন।

ওয়ার্কিং:

  • এখানে আমি ডেস্কটপ "\ ডেস্কটপ \ APK \ ইনস্ট্যান্ট_ইনস্টাল \" একটি ফোল্ডারে এপিকে যুক্ত করেছি।
  • আদেশ %adb% install %apk%ডিভাইস সংযুক্ত থাকলে অ্যাপ্লিকেশন ইনস্টল করে।
  • এই %aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt প্যাকেজের নাম এবং এপিপির সংস্করণ ইত্যাদির মতো আরও কয়েকটি বিবরণ নিয়ে আসে এবং এপিপির মতো একই জায়গায় একটি টেম্পের্ট টেক্সট ফাইল সঞ্চয় করে।
  • ফর / এফ "টোকেন = 2 টিলিম্স = '" %% এস ইন (টেম্প। টেক্সট) ডিও সেট করুন পিকেজি নাম = %% গুলিextracts the package name and assigns to পিকেজি নাম পরিবর্তনশীল
  • অবশেষে %adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1অ্যাপটি চালু করে।

সংক্ষেপে উপরের কোডটি ডিভাইসে "ডেস্কটপ \ APK \ ইনস্ট্যান্ট_ইনস্টাল stal" ডেস্কটপে প্রদত্ত অবস্থান থেকে এপিকে ইনস্টল করে অ্যাপ্লিকেশন আরম্ভ করে।


0

আমি যেমন সম্পাদকের সাথে .apk ফাইলে প্যাকেজের নামটি সন্ধান করতে সক্ষম না হয়েছি (যেমন উপরে প্রস্তাবিত রয়েছে), আমি অ্যাপ্লিকেশন "ইএস ডেটি এক্সপ্লোরার" / "ইএস ফাইল এক্সপ্লোরার" (ফ্রি সংস্করণ) এর ফাংশনগুলি যাচাই করেছি ইতিমধ্যে ইনস্টল করা হয়েছে। এই সরঞ্জামে, প্যাকেজের নামটি সঠিকভাবে প্রদর্শিত হয়।
যেহেতু আমি মনে করি কোনও ভাল ফাইল এক্সপ্লোরার কোনও ফোনে নিখোঁজ হওয়া উচিত নয়, তাই আমি এই সরঞ্জামটি ব্যবহার করার পরামর্শ দিই (যদি আপনি ইতিমধ্যে একটি মোবাইলে এপিপি ইনস্টল করে রেখেছেন এবং প্যাকেজের নামটি জানতে চান)।


0

অ্যান্ড্রয়েড ডকুমেন্টেশনে এটি উল্লেখ করা হয়েছে যে এএপটি হ্রাস করা হয়েছে , তাই লিনাক্সে এএপটি 2 কমান্ড ব্যবহার করে প্যাকেজের নাম পাওয়া নিম্নরূপ:

./aapt2 dump packagename <path_to_apk>

যেহেতু আমি গ্রেডল বিল্ডের পুরানো সংস্করণটি ব্যবহার করছি, তাই এখানে বর্ণিত হিসাবে আমাকে এএপিটি 2 এর একটি নতুন সংস্করণটি ডাউনলোড করতে হয়েছিল:

গুগল ম্যাভেন থেকে এএপিটি 2 ডাউনলোড করুন

আমার এসডিকে বিল্ড-সরঞ্জামগুলি ব্যবহার করে - 25.0.3, 26.0.1 এবং 27.0.3, aapt2 কমান্ড কার্যকর করে একটি ত্রুটি দেখায়: 'প্যাকেজ নাম' খুলতে অক্ষম: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই। এজন্য আমি এএপিটি 2-র নতুন সংস্করণে গিয়েছিলাম।

আমি লিনাক্সের জন্য 3.3.0-5013011 ব্যবহার করেছি।


0

আপনি Analyze APK...অ্যান্ড্রয়েড স্টুডিওতে বিল্ড মেনু থেকে ব্যবহার করতে পারেন , এটি নতুন উইন্ডোর শীর্ষে প্যাকেজের নামটি প্রদর্শন করবে।


-1

অভিযোজন তালিকা - একটি "পথ_ টু_পাক"

আমি আপনাকে এটি একটি টেক্সটে সংরক্ষণ করার পরামর্শ দিচ্ছি, কারণ এটি খুব দীর্ঘ হতে পারে। তাই:

aapt list-a "path_to_apk"> file.txt

তারপরে আপনার বর্তমান ডিরেক্টরিতে file.txt দেখুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.