প্যাকেজের নাম এবং এডিবির মাধ্যমে অ্যাপসের সাধারণ নাম পান


15

আমি এডিবির মাধ্যমে অ্যান্ড্রয়েড ডিভাইসে ইনস্টল হওয়া অ্যাপ্লিকেশনগুলির প্যাকেজের নাম এবং সাধারণ নামগুলি - বা প্যাকেজের নাম জানা থাকলে কমপক্ষে সাধারণ নামটি পুনরুদ্ধার করার জন্য উভয়ই পুনরুদ্ধার করার জন্য সন্ধান করছি । আমাদের সাইটে একটি তাত্ক্ষণিক অনুসন্ধান দুটি সম্পর্কিত প্রশ্ন উত্থাপন করেছে, কিন্তু তারা আমার সমস্যা সমাধান করে না:

আমি যদি সম্ভব হয় তবে ডিভাইস থেকে সরাসরি তথ্য পুনরুদ্ধারের জন্য একটি উপায় সন্ধান করছি , যদি সম্ভব হয় - তবে "কোনও" উপায় নয় ("ওয়েব লুকআপ" বা "একটি অ্যাপের মাধ্যমে") এই দুটি প্রশ্ন যেমন আছে।

আমি জানি প্যাকেজ বিশদ প্রাপ্তির জন্য একাধিক সরঞ্জাম উপলব্ধ:

  • adb dumpsys package: যদিও এটি সমস্ত প্যাকেজটিকে বিশদ বিবরণ সহ তালিকাভুক্ত করে, "সাধারণ নাম" দেখানো হয় না
  • adb shell pm list: কেবল প্যাকেজের নাম দেয়
  • aaptসাধারণ নামটি অর্জন করতে সক্ষম হবে তবে প্রথমে .apkডিভাইসটি থেকে ফাইলটি টানতে হবে যা সত্যিকারের পক্ষে সুবিধাজনক নয় (এবং সম্ভবত অনেকগুলি এবং / অথবা বৃহত অ্যাপ্লিকেশন ইনস্টল করা বেশ ধীর হবে)

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


টি এল; ডিআর

পটভূমি (যদি কারও কৌতূহল থাকে): অ্যাক্রোব্যাটিকসে ফিরে না গিয়েই আমি আমার যেকোন ডিভাইস থেকে দ্রুত ব্যবহারকারী-অ্যাপগুলির একটি তালিকা পেতে সক্ষম হতে চাই। তাদের প্যাকেজ নামেরগুলির একটি তালিকা আমি ব্যবহার করে পুনরুদ্ধার করতে পারি adb shell pm list -3তবে সেগুলি কেবল প্যাকেজের নাম হিসাবে, অ্যাপ্লিকেশনগুলি সনাক্ত করা একটি অনুমান-কাজ। সুতরাং যদি প্রদত্ত প্যাকেজের নামের জন্য সাধারণ নামটি পুনরুদ্ধার করার জন্য যদি কিছু এডিবি কমান্ড থাকে তবে আমি সহজভাবে একটি লুপ ব্যবহার করতে পারতাম for pkg in $(adb shell pm list -3); do echo "- $(adb <whatever_the_command_is> $pkg) ($pkg)"; done- এবং তাদের প্যাকেজের নামগুলির সাথে "হিউম্যান রিডেবল ফরম্যাটে" ইনস্টল থাকা সমস্ত ব্যবহারকারী-অ্যাপগুলির তালিকা পেতে পারি get

ব্যবহারের ক্ষেত্রে:

  • কী "অতিরিক্ত" অ্যাপ্লিকেশন ইনস্টল করা আছে (যা আমি মুছে ফেলতে পারি) দেখুন
  • একাধিক ডিভাইস থেকে ক্রস-চেক তালিকা
  • ডকুমেন্টেশন;)
  • এবং সম্ভবত আরও (তবে উপরের 3 টির জন্য আমার এটির প্রয়োজন)

শুধু একটি আইডিয়া (আমার মনে হয় আপনি ইতিমধ্যে চেষ্টা করেছেন?) আপনি কেন কেবল অ্যান্ড্রয়েডের জন্য অ্যাপ্লিকেশন সংকলন করেন না এবং শেল থেকে পরিবর্তে রান করেন? : ডি
user3344236

1
@ ব্যবহারকারী3344236 আমি সেই সম্ভাবনাটি সম্পর্কে সচেতন; তবে সর্বদা প্রশ্নযুক্ত ডিভাইসে কোনও কিছু ইনস্টল করার বিকল্প নয়, বিশেষত স্ব-সংকলিত বাইনারি নয় (আমি মাঝে মাঝে হ্যান্ড-ইন ডিভাইসগুলি পাই যা মূলগুলি হয় না, এবং "ফরেনসিকের মতো শর্ত" রাখতে হয় - যেমন "কর" ডিভাইসটি পরিবর্তন করবেন না, কেবল এটি অন্বেষণ করুন ")।
ইজজি

সুতরাং দ্বিতীয় ধারণাটি হ'ল নিজেকে এমন একটি সরঞ্জাম লিখুন যা অ্যাডবি শেল দিয়ে চলে ... ডিভাইসে পরিবর্তিত অ্যাডবিডি ব্যবহার না করে এবং সেখানে কিছু ফাইল না ঠেলে। আমি মনে করি এটি সম্পাদন করতে আপনার কিছুটা সময় লাগবে (যদি আপনি কখনও সফল হন): ডি
ইউজার 3344236

@ ব্যবহারকারী3344236 খুব উদ্বেগজনক, বিশেষত কারণ আমি কোনও অ্যান্ড্রয়েড দেব নই। আমি বর্তমানে একটি "ওয়েব ভিত্তিক সমাধান" ব্যবহার করি (সেই "গুগল প্লে লুচিংয়ের অনুরূপ)", কারণ এখানে কোনও দেশীয় সমাধান বলে মনে হচ্ছে না (এখনও?)।
ইজি

হাই ইজি! মন্তব্যগুলি (উপরে) বিবেচনা করে, এর অর্থ কি এই নয় যে আপনার কোনও শিকড়বিহীন ডিভাইসটি মনে রেখে সমাধানের প্রয়োজন?
ফায়ারলর্ড

উত্তর:


8

এটি চূড়ান্ত উত্তর নয়, কারণ এটি জেনেরিক নয় (কেবলমাত্র কিছু ডিভাইসে কাজ করে) - তবে এটি অন্ততপক্ষে একটি শুরু:

যেমনটি আমরা বের করেছি , কমপক্ষে সিএম ভিত্তিক রোমগুলি কিটক্যাট (অ্যান্ড্রয়েড 4.4) এবং এর উপরের শিপটি aaptবাইনারি সহ /system/bin1-এ উপলব্ধ রয়েছে । আপনার রম যদি না থাকে এবং ডিভাইসে বাইনারি ইনস্টল করা কোনও বিকল্প হয় তবে আপনি এটি এখানে খুঁজে পেতে পারেন

ব্যবহার করে aapt, অ্যাপের নাম পুনরুদ্ধার করা সম্ভব

aapt d badging <path to apk> | grep "application: label" |awk '{print $2}'

আউটপুটটি এমন কিছু হবে label='Funny App'যা আপনি সহজেই অ্যাপ্লিকেশন নামের যেমন পার্স করতে পারেন, যেমন

aapt d badging <path to apk> | grep 'application: label' | sed -n \"s/.*label\='\([^']*\)'.*/\1/p\"

(যদি অ্যাপের নামটিতে একক উক্তি থাকে তবে এটি ভাল নয় তবে এটি প্রসাধনী হিসাবে গণনা করতে পারে - বা আপনি কীভাবে সেগুলি মোকাবেলায় সেড অংশটি উন্নত করবেন figure


1: আমরা এটি যাচাই করেছি কিটক্যাট এবং উপরের স্টক রমগুলিতে আমরা এটি পাইনি, সুতরাং এটি কেবলমাত্র মুখ্যমন্ত্রী ভিত্তিক রম হতে পারে


3
পাঠকদের জন্য নোট: আপনার কাছেaapt বাইনারিটি ব্যবহার করার জন্য কোনও রুট ডিভাইস থাকা দরকার না । আপনি aaptপিসিতে বাইনারিটি খুব ভালভাবে ডাউনলোড এবং নাম পরিবর্তন করতে পারেন, বাইনারিটিতে লিনাক্সের সামঞ্জস্যপূর্ণ এক্সিকিউটেবল অনুমতি সেট করতে /data/local/tmpপারেন এবং এটিতে পুশ করতে পারেন , তারপরে /data/local/tmp/aaptসেই কমান্ডগুলিতে বাইনারি ব্যবহারের জন্য পরম পথটি ব্যবহার করুন।
ফায়ারল্যান্ড

সুতরাং প্যাকেজটির নামের জন্য (মূল প্রশ্নের প্রথম অংশ) আপনি যা করতে পারেনaapt d badging <path to apk> | grep 'package: name' | awk '{print $2}'
gmoz22

8

একটি মূলবিহীন ফোনের জন্য আমার সমাধানটি এখানে উপরে থেকে কিছুটা পরিবর্তন দরকার যা আমি অ্যান্ড্রয়েড 5.0.2 তে চলমান মটো জি 2 য় জেনের উপর দৌড়েছি।

আমার কাছে / সিস্টেমে / বিনে বাইনারি নেই, তাই আমি প্রথমে ডাউনলোড করার চেষ্টা করেছি: https://android.izzysoft.de/downloads

কিন্তু যখন আমি এটি চালানোর চেষ্টা করলাম তখন আমি এই বলে একটি ত্রুটি পেয়েছি:

ত্রুটি: কেবলমাত্র পজিশন स्वतंत्र এক্সিকিউটেবল (পিআইই) সমর্থিত।

তারপরে আমি একটি পিআইই সংস্করণ অনুসন্ধান করে খুঁজে পেয়েছি: https://github.com/Calsign/APDE/blob/master/APDE/src/main/assets/aapt-binaries/aapt-arm-pie

এবং এটি বাইনারি / ডেটা / স্থানীয় / টিএমপি অনুলিপি করে কাজ করেছে:

adb push aapt-arm-pie /data/local/tmp
adb shell chmod 0755 /data/local/tmp/aapt-arm-pie

তাহলে:

adb shell pm list packages -3 -f

তৃতীয় পক্ষের অ্যাপগুলির তালিকা পাওয়া যায় (অ্যাপ্লিকেশনগুলি আপনি ইনস্টল করেছেন, সিস্টেম অ্যাপ্লিকেশন নয়) এবং তারপরে আপনি প্যাকেজ সম্পর্কিত তথ্য পেতে উপরের কমান্ড থেকে প্যাকেজটি ব্যবহার করতে পারেন - উদাহরণস্বরূপ:

adb shell /data/local/tmp/aapt-arm-pie d badging /data/app/com.facebook.katana-3/base.apk

তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির জন্য কেবল "সাধারণ" নাম পেতে স্ক্রিপ্ট (একটি লিনাক্স ক্লায়েন্টের জন্য) নীচে রয়েছে:

for pkg in `adb shell pm list packages -3 -f | awk -F= '{sub("package:","");print $1}'`
do
  adb shell /data/local/tmp/aapt-arm-pie d badging $pkg | awk -F: '
      $1 == "application-label" {print $2}'
done

আপনি যদি প্যাকেজ এবং সংস্করণটিও চান, তবে শেষ থেকে তবে একটি লাইন পরিবর্তন করুন:

$1 == "application-label" {print $2}'

প্রতি:

$1 == "package" { split($2,space," ")
name=space[1];version=space[3]}
$1 == "application-label" {print name, version, $2 }'

উদাহরণ আউটপুট:

name='com.ultimarom.launchnavigation' versionName='1.28' 'Navigation' name='com.enhanced.skineditorstudio' versionName='3.3' 'Custom Skin Creator' name='com.mojang.minecraftpe' versionName='1.2.6.60' 'Minecraft' name='org.videolan.vlc' versionName='2.5.13' 'VLC' name='com.jrustonapps.myauroraforecast' versionName='1.7.2' 'My Aurora Forecast' name='de.j4velin.wifiAutoOff' versionName='1.7.6' 'WiFi Automatic' name='com.facebook.katana' versionName='153.0.0.54.88' 'Facebook' name='com.metago.astro' versionName='6.0.5' 'ASTRO File Manager' name='za.co.hardrive.smartinfo.parkrun' versionName='2.0.2' 'My 5krun' name='com.PYOPYO.StarTrackerVR' versionName='1.0.1' 'StarTracker VR' name='cz.aponia.bor3.offlinemaps' versionName='1.1.19' 'Offline Maps' name='com.groupon' versionName='16.11.63973' 'Groupon' name='com.ebay.mobile' versionName='5.16.1.2' 'eBay' name='com.runtastic.android' versionName='8.1.1' 'Runtastic' name='com.google.android.diskusage' versionName='3.8.3' 'DiskUsage'

মাইক


অনেক এবং দুবার ধন্যবাদ, মাইক: একবার শেল স্ক্রিপ্টের জন্য, এবং দ্বিতীয়টি এরআরএম বৈকল্পিকের পয়েন্টারের জন্য aapt! সময় অনুমতির সাথে সাথেই এটি পরীক্ষা করে দেখবে (বর্তমানে খুব তাড়াতাড়ি কিছুটা হলেও)। আপাতত আপডভোটড, সম্ভবত যাচাই করার পরে গৃহীত হয়েছে :)
Izzy

PS: আমার ডাউনলোড পৃষ্ঠাটি এখন আপনার নির্দিষ্ট করা উত্সের সাথেও লিঙ্ক করেছে - কেবল "এক স্তর উপরে", যাতে লোকেরা এআরএম এবং x86 বিল্ডগুলির মধ্যে চয়ন করতে পারে।
ইজজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.