রুট অ্যাক্সেস ছাড়াই আমি ইনস্টলড অ্যাপের APK কীভাবে পাব?


196

আমি রুট অনুমতি ছাড়াই ইনস্টলড অ্যান্ড্রয়েড অ্যাপের APK ফাইলটি বের করার চেষ্টা করছি।

আমি ভেবেছিলাম এটি অসম্ভব, কারণ সিস্টেম-নন-অ্যাপ্লিকেশনগুলির জন্য সমস্ত APK ফাইলগুলি ডেটা / অ্যাপে থাকে এবং এই ফোল্ডারটি অ্যাক্সেস করার জন্য রুট অনুমতি প্রয়োজন। তারপরে আমি দেখতে পেলাম যে গুগল প্লে স্টোরটিতে এমন অনেকগুলি অ্যাপ রয়েছে যা দেখে মনে হয় নি যে শিকড়বিহীন ডিভাইসগুলিতেও APK ফাইলগুলিতে অ্যাক্সেস রয়েছে।

কেউ আমাকে বলতে পারেন কীভাবে এটি সম্ভব? রুট ছাড়াই APK ফাইলগুলি ব্যাকআপ করে এমন অ্যাপস নেই?


2
আমি মনে করি এই প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে। দয়া করে stackoverflow.com/a/12197924/1016544
ওয়াহিব উল হক




3
আমার পঠনটি হ'ল @ পিনাস এই প্রোগ্রামটিকে কোডিকভাবে কীভাবে কোড করবেন তা জিজ্ঞাসা করছিলেন - এমন অ্যাপ্লিকেশনগুলিকে উল্লেখ করে যা "এই অ্যাপ্লিকেশনগুলি এটি করে, তবে কীভাবে?" বলে to এখানে "হোল্ড" কারণ আমার মতে ভুল কারণ এটি।
রিচার্ড লে ম্যাসুরিয়ার

উত্তর:


380

মূল অনুমতি ছাড়াই অ্যাক্সেস / ডেটা / অ্যাপ্লিকেশন সম্ভব; এই ডিরেক্টরিতে অনুমতিগুলি rwxrwx - x। কোনও ডিরেক্টরিতে অনুমতি কার্যকর করার অর্থ আপনি এটি অ্যাক্সেস করতে পারবেন, তবে পড়ার অনুমতিের অভাবের অর্থ আপনি এর সামগ্রীগুলির একটি তালিকা অর্জন করতে পারবেন না - সুতরাং এটি অ্যাক্সেস করার জন্য আপনাকে অবশ্যই যে ফাইলটি অ্যাক্সেস করবেন তার নাম অবশ্যই জানতে হবে। অ্যান্ড্রয়েডের প্যাকেজ ম্যানেজার আপনাকে প্রদত্ত প্যাকেজের জন্য সঞ্চিত এপিপির নাম বলবে।

কমান্ড লাইন থেকে এটি adb shell pm list packagesকরতে, ইনস্টল হওয়া প্যাকেজগুলির তালিকা পেতে এবং পছন্দসই প্যাকেজটি সন্ধান করুন।

প্যাকেজের নাম সহ, আমরা ব্যবহার করে APK এর প্রকৃত ফাইলের নাম এবং অবস্থান পেতে পারি adb shell pm path your-package-name

এবং সম্পূর্ণ ডিরেক্টরি জেনে, আমরা শেষ পর্যন্ত ব্যবহার করে বিজ্ঞাপনটি টানতে পারি adb pull full/directory/of/the.apk

ললিপপের অধীনে, এপিকে পাথটি হবে তা নির্দেশ করার জন্য @ টার্নকে ক্রেডিট /data/app/your-package-name-1/base.apk


33
কমান্ড লাইন থেকে এটি adb shell pm list packagesকরতে, ইনস্টল হওয়া প্যাকেজগুলির তালিকা পেতে পছন্দসই প্যাকেজটি বেছে নিন, এতে যুক্ত করুন -1.apkএবং এখান থেকে টানুন /data/app। উদাহরণ: প্যাকেজের নাম থাকলে org.mozilla.firefoxব্যবহার করুন adb pull /data/app/org.mozilla.firefox-1.apk
স্কুবার্থ

11
APK এর আসল ফাইলের নাম পেতে, আপনার প্যাকেজ-নাম অ্যাডবি শেল পিএম পথ ব্যবহার করুন। আরও বিস্তারিত উত্তরের জন্য এই প্রশ্নটি দেখুন stackoverflow.com/questions/4032960/…
Yojimbo

2
Lollipop APK জন্য পথ /data/app/your-package-name-1/base.apk হতে হবে
Tarn

এটি আমার পক্ষে কাজ করে না। আমি নিম্নলিখিত ত্রুটিটি adb: error: remote object '/data/app/com.Slack-1/base.apk' does not exist
পেয়েছি

1
@ 0xcaff অ্যান্ড্রয়েড এই উত্তরটি সরবরাহ করার পর থেকে 5 বছরে বেশ কিছুটা পরিবর্তন হয়েছে; সম্ভবত এই পথটি এই পরিবর্তনগুলির মধ্যে একটি। আপনার ভার্সনের ভার্সনের জন্য যথাযথ যে কোনও পথটি আসতে পারার জন্য আপনি নিজে লগইন করতে এবং ফাইলটি ম্যানুয়ালি সন্ধান করতে সক্ষম হবেন।
মাহ

55

চূড়ান্ত এপিএল ফাইলের নাম উত্পাদন করতে অ্যান্ড্রয়েড প্যাকেজ নামের একটি সিকোয়েন্স নম্বর যুক্ত করে (এটি অ্যান্ড্রয়েড ওএসের সংস্করণের সাথে পরিবর্তিত হতে পারে) এটি সম্ভব হয়। কমান্ডগুলির নিম্নলিখিত ক্রমটি একটি মূল-বিহীন ডিভাইসে কাজ করে :

  1. পছন্দসই প্যাকেজটির জন্য APK ফাইলের পুরো পাথের নাম পান।

    adb shell pm path com.example.someapp

    এই যেমন আউটপুট দেয়: package:/data/app/com.example.someapp-2.apk

  2. অ্যান্ড্রয়েড ডিভাইস থেকে বিকাশ বাক্সে APK ফাইলটি টানুন।

    adb pull /data/app/com.example.someapp-2.apk

সফলভাবে টানার পরে APK এর অবস্থান আপনার পিসি / ল্যাপটপে ../sdk/platform-tools/base.apk এ থাকবে।


4
এই সমাধানটি কোনও মূলবিহীন ডিভাইসে কাজ করেছে তা নিশ্চিত করতে পারে, যদিও প্রথম কমান্ডের আগে প্যাকেজের নাম সম্পর্কে জ্ঞানের প্রয়োজন নেই! আপনি আপনার পছন্দসই অ্যাপ্লিকেশনটির প্যাকেজের নাম সম্পর্কে নিশ্চিত নন যদি ফোনে সমস্ত প্যাকেজগুলির তালিকা পেতে 'অ্যাডবি শেল পিএম তালিকা প্যাকেজগুলি' ব্যবহার করুন
AndroidNoob

অ্যাপ্লিকেশনটি খোকারের স্থানীয় মেশিনে কোন ফোল্ডারে যায়? সম্পাদনা: এনভিএম, অ্যাডবি টান দেওয়ার সময় আপনি যে ডিরেক্টরিতে ছিলেন তা ...
আদম জনস

@ ইগোরগানাপলস্কি অ্যাডবি পুল /ডাটা
ক্রিস - জুন

@ জেলানিক্স অ্যাডবি টান করার পরে, যেখানে আমি .apk ফাইলটি সি করতে পারি। আপনাকে ধন্যবাদ
বিজয়া ভার্মা ল্যাঙ্ক

21

ইনস্টলড অ্যাপ্লিকেশনগুলির তালিকা পেতে আপনাকে রুট অনুমতিগুলির দরকার নেই।

আপনি এটি অ্যান্ড্রয়েড প্যাকেজম্যানেজার দিয়ে করতে পারেন।

নীচে একটি ছোট কোড স্নিপেট রয়েছে।

final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages =  pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Installed package :" + packageInfo.packageName);
    Log.d(TAG, "Apk file path:" + packageInfo.sourceDir);
}

7
  1. ইনস্টলড এপকে-র তালিকা পরীক্ষা করুন (নিম্নলিখিত কমান্ডটি যেখানে এটি ইনস্টল করা হয়েছে এবং প্যাকেজের নামটিও তালিকাভুক্ত করে)। adb শেল পিএম তালিকা প্যাকেজ -f
  2. ব্যবহারের এডিবি খিঁচ / package_path / প্যাকেজের নাম / path_in_pc (প্যাকেজ পাথ এবং প্যাকেজের নাম উপরের কমান্ড 1. থেকে পেতে পারেন)

6

আপনার যখন অ্যান্ড্রয়েড বিকাশের জন্য গ্রহটি ইনস্টল থাকে:

  • ডিবাগিং ডিভাইস হিসাবে আপনার ডিভাইসটি ব্যবহার করুন। আপনার ফোনে: সেটিংস> অ্যাপ্লিকেশনগুলি> ইউএসবি ডিবাগিংকে বিকাশ এবং সক্ষম করুন, দেখুন http://developer.android.com/tools/device.html
  • ইক্লিপসে, ডিডিএমএস-উইন্ডোটি খুলুন: উইন্ডো> দৃষ্টিকোণটি খুলুন> অন্যান্য ...> ডিডিএমএস, দেখুন http://developer.android.com/tools/debugging/ddms.html
  • আপনি যদি নিজের ডিভাইসটি দেখতে না পান তবে আপনার ডিভাইসের জন্য ইউএসবি-ড্রাইভার ইনস্টল করার চেষ্টা করুন (পুনরায়)
  • মাঝের ফলকে ট্যাবটি "ফাইল এক্সপ্লোরার" নির্বাচন করুন এবং সিস্টেম> অ্যাপ্লিকেশনটিতে যান
  • এখন আপনি এক বা একাধিক ফাইল নির্বাচন করতে পারেন এবং তারপরে উপরের অংশে "ডিভাইস থেকে একটি ফাইল টানুন" আইকনটি ক্লিক করতে পারেন (ট্যাবগুলির ডানদিকে)
  • টার্গেট ফোল্ডারটি নির্বাচন করুন - টাডা!

/ সিস্টেম / অ্যাপ্লিকেশনগুলিতে কেবলমাত্র সিস্টেম-অ্যাপ্লিকেশনগুলি (ওরফে প্রিন্সটলযুক্ত অ্যাপস) রয়েছে।
arne.jans

6

নওগাটে (.0.০) অ্যানড্রয়েড সংস্করণে adb shell pm list packagesডিভাইসে ইনস্টল হওয়া প্যাকেজগুলির তালিকা তৈরি করুন। তারপরে adb shell pm path your-package-nameএপকের পথ দেখানোর জন্য দৌড়াও । ডাউনলোডের পরে প্যাকেজটি অনুলিপি করতে অ্যাডবি ব্যবহার করুন adb shell cp /data/app/com.test-1/base.apk /storage/emulated/0/Download। তারপরে ডাউনলোড করে আপনার মেশিনে ডাউনলোড করে APK টানুন adb pull /storage/emulated/0/Download/base.apk


2

আমি পেয়েছি একটি does not exist error

এখানে আমি এটি কার্যকরভাবে তৈরি করি:

adb shell pm list packages -f | findstr zalo

package:/data/app/com.zing.zalo-1/base.apk=com.zing.zalo

adb shell

mido:/ $ cp /data/app/com.zing.zalo-1/base.apk /sdcard/zalo.apk
mido:/ $ exit


adb pull /sdcard/zalo.apk Desktop

/sdcard/zalo.apk: 1 file pulled. 7.7 MB/s (41895394 bytes in 5.200s)

0

প্যাকেজম্যানেজ.জেটআইনস্টল অ্যাপ্লিকেশনগুলি () তালিকা ইনস্টল করা অ্যাপ্লিকেশনগুলির একটি তালিকা আপনাকে দেবে এবং অ্যাপ্লিকেশনআইএনফো.সোর্সডিরই .apk ফাইলের পথ।

// in oncreate
   PackageManager pm = getPackageManager(); 
   for (ApplicationInfo app : pm.getInstalledApplications(0)) {
 Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " + app.sourceDir);
 }

//output is something like
D/PackageList(5010): package: com.example.xmlparse, sourceDir: /data/app   /com.example.xmlparse-2.apk
D/PackageList(5010): package: com.examples.android.calendar, sourceDir: /data/app/com.examples.android.calendar-2.apk
D/PackageList(5010): package: com.facebook.katana, sourceDir: /data/app/com.facebook.katana-1.apk
D/PackageList(5010): package: com.facebook.samples.profilepicture, sourceDir: /data/app/com.facebook.samples.profilepicture-1.apk
D/PackageList(5010): package: com.facebook.samples.sessionlogin, sourceDir: /data/app/com.facebook.samples.sessionlogin-1.apk
D/PackageList(5010): package: com.fitworld, sourceDir: /data/app/com.fitworld-2.apk
D/PackageList(5010): package: com.flipkart.android, sourceDir: /data/app/com.flipkart.android-1.apk
D/PackageList(5010): package: com.fmm.dm, sourceDir: /system/app/FmmDM.apk
D/PackageList(5010): package: com.fmm.ds, sourceDir: /system/app/FmmDS.apk

0

আমি অ-রুট ডিভাইসে APK এর প্যাকেজের নাম পাওয়ার একটি উপায় পেয়েছি। এটি এত মার্জিত নয়, তবে সর্বদা কাজ করে।

পদক্ষেপ 1 : আপনার ডিভাইসে, লক্ষ্য APKটি খুলুন

পদক্ষেপ 2 : পিসি সেমিডি উইন্ডোতে, এই আদেশগুলি টাইপ করুন:

 adb shell dumpsys activity a > dump.txt

কারণ এই কমান্ডের আউটপুট অসংখ্য, একটি ফাইলে পুনঃনির্দেশ সুপারিশ করা হয়।

পদক্ষেপ 3 : যে কোনও সম্পাদকের সাথে এই ডাম্প.এসটিএসটি ফাইলটি খুলুন।

অ্যান্ড্রয়েড ৪.৪ এর জন্য ডিভাইসটির জন্য:
ফাইলটির শুরুটি দেখতে এই জাতীয় হবে:

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)  
  Main stack:  
  * TaskRecord{41aa9ed0 #4 A com.tencent.mm U 0}  
    numActivities=1 rootWasReset=true userId=0  
    affinity=com.tencent.mm  
    intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10600000 cmp=com.tencent.mm/.ui.LauncherUI}  
    realActivity=com.tencent.mm/.ui.LauncherUI  
    askedCompatMode=false  
    lastThumbnail=null lastDescription=null  
    lastActiveTime=19915965 (inactive for 10s)  
    * Hist #9: ActivityRecord{41ba1a30 u0 com.tencent.mm/.ui.LauncherUI}  
        packageName=com.tencent.mm processName=com.tencent.mm 

প্যাকেজের নামটি তৃতীয় লাইনে, com.istancent.mm এই উদাহরণের জন্য ।

অ্যান্ড্রয়েড ৪.৪ এবং তার পরে:
ডাম্পসিস আউটপুটটি কিছুটা বদলেছে। "স্ট্যাক # 1" অনুসন্ধানের চেষ্টা করুন, প্যাকেজের নামটি এর নিচে খুব কাছাকাছি থাকবে।

এছাড়াও, "বেসডির" অনুসন্ধান করুন, আপনি এপিপি ফাইলের পুরো পথ খুঁজে পাবেন!


-1

ওপেন ইএস এক্সপ্লোরার -> লাইব্রেরি বিভাগে বাম উপরের কোণায় মেনু বোতাম টিপুন (তিনটি অনুভূমিক স্ট্রাইপ) -> অ্যাপ্লিকেশন বেছে নিন।

সুতরাং, আপনি সমস্ত ব্যবহারকারীর অ্যাপ্লিকেশনগুলির তালিকা পাবেন। আপনার অ্যাপটি সন্ধান করুন এবং এটির উপরে দীর্ঘক্ষণ চাপ দিয়ে নির্বাচন করুন। তারপরে ডান নীচের কোণায় "আরও" টিপুন এবং "প্রেরণ" নির্বাচন করুন। তারপরে আপনি বিভিন্ন বিকল্প ব্যবহার করতে পারেন, যেমন আপনার হোম ডিরেক্টরিতে বা অন্য কোথাও .apk ফাইলটি সংরক্ষণ করতে আপনি "ES Save To" চয়ন করতে পারেন।


-2

অথবা আপনি গুগল প্লে থেকে 'ব্লুটুথ ফাইল স্থানান্তর' পেতে এবং হোম ফোল্ডারে এতে সেট করতে পারেন /system/। তাহলে আপনি এমনকি যেতে পারেন /

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