android - করব - কিভাবে আমি একটি অ্যান্ড্রয়েড ডিভাইস থেকে একটি apk ফাইল পেতে পারি?




মোবাইল অ্যাপ বানাতে চান (16)

আমি কিভাবে একটি অ্যান্ড্রয়েড ডিভাইস থেকে apk ফাইল পেতে পারি? অথবা কিভাবে আমি APK ফাইলটি ডিভাইস থেকে সিস্টেমে স্থানান্তর করব?


  1. আপনি আপনার ফোন থেকে apk এক্সট্র্যাক্ট করতে চান অ্যাপ্লিকেশন খুলুন।
  2. বর্তমানে খোলা অ্যাপটি পান:

    adb shell dumpsys activity activities | grep mFocusedActivity
  3. প্যাকেজ নাম পথ পান

    adb shell pm path <packagename.apk>

4. আপনি sdcard ডিরেক্টরি পেতে পথ কপি

    adb shell cp /data/app/<packagename.apk> /sdcard

5. APK খুলুন

    adb pull /sdcard/base.apk

@ ইয়জিম্বোর উত্তরটি সম্পূর্ণ করে, আমি যা করেছি তা হল (লিনাক্স / ম্যাক, উইন্ডোজ বক্সের বাইরে কাজ করবে না ... সম্ভবত গিটের বাশ শেলে):

for i in $(adb shell pm list packages -f -3 | cut -d= -f 1 | cut -d ":" -f 2); do adb pull $i; done

এই কুৎসিত bash, কিন্তু কাজ করে :)

সম্পাদন করুন: এটি আর AndroidM এ কাজ করে না: অন্য ফাইলগুলি "dar.apk" নামে অন্য একটি ডির অধীনে নামকরণ করা হয়। ঠিক করা "তুচ্ছ" হতে হবে।


আমি এই সমস্যাটির অনেকগুলি সমাধান দেখেছি যেটি আপনাকে আপনার ফোনটি রুট করতে হবে অথবা আপনাকে একটি অ্যাপ্লিকেশন ইনস্টল করতে হবে। তারপর অনেক googling পরে আমি অ rooted / rooted ফোন জন্য এই সমাধান পেয়েছিলাম

আপনি এতদূর পেয়েছেন যা অ্যাপ্লিকেশন তালিকা।

adb shell pm list packages

তারপরে আপনি একটি অ্যাপ্লিকেশন নির্বাচন করতে পারেন, উদাহরণস্বরূপ টুইটার

adb backup -apk com.twitter.android

এখানে একটি গুরুত্বপূর্ণ জিনিস আপনার ব্যাকআপ এনক্রিপ্ট করার জন্য একটি পাসওয়ার্ড সেট আপ করা হয় না

এটি backup.ap নামক একটি ফাইল তৈরি করতে যাচ্ছে, তবে আপনি এখনও এটি খুলতে পারবেন না। এই জন্য আপনি আবার এটি নিষ্কাশন করতে কিন্তু dd কমান্ড ব্যবহার করে।

dd if=backup.ab bs=24 skip=1 | openssl zlib -d > backup.tar

এই সব পরে আপনি করণীয় উপাদান নিষ্কাশন এবং এটি সম্পন্ন করা আছে।

আশা করি এটা আপনার জন্য কাজ করে


আমি একটি 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)

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

download-apk.pl

#!/usr/bin/perl -w
# Automatically export all available installed APK's using adb
use strict;
print "Connect your device...\n";
system("adb", "wait-for-device");
open(my $OUT, '-|', 'adb', 'shell', 'pm', 'list', 'package', '-f');
my @list = split(/\s*/, `adb shell pm list packages -f`);
my $count = 0;
while(my $line = <$OUT>) {
        $line =~ s/^\s*|\s*$//g;
        my ($type, $path, $package) = $line =~ /^(.*?):(.*)=(.*)$/ ? ($1,$2,$3) : die('invalid line: '.$line);
        my $category = $path =~ /^\/(.*?)\// ? $1 : 'unknown';
        my $baseFile = $path =~ /\/([^\/]*)$/ ? $1 : die('Unknown basefile in path: '.$path);
        my $targetFile = "$category-$package.apk";
        print "$type $category $path $package $baseFile >> $targetFile\n";
        system("adb", "pull", $path);
        rename $baseFile, $targetFile;
}
  1. নিশ্চিত করুন যে adb (.exe) আপনার পাথ বা একই ডিরেক্টরিতে রয়েছে
  2. আপনার ফোন সংযোগ করুন
  3. ডাউনলোড করুন- apk.pl

আউটপুট অনুরূপ কিছু:

# ./download-apk.pl
Connect your device...
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
package system /system/app/YouTube/YouTube.apk com.google.android.youtube YouTube.apk >> system-com.google.android.youtube.apk
5054 KB/s (11149871 bytes in 2.154s)
package data /data/app/com.ghostsq.commander-1/base.apk com.ghostsq.commander base.apk >> data-com.ghostsq.commander.apk
3834 KB/s (1091570 bytes in 0.278s)
package data /data/app/de.blinkt.openvpn-2/base.apk de.blinkt.openvpn base.apk >> data-de.blinkt.openvpn.apk
5608 KB/s (16739178 bytes in 2.914s)
etc.

ইউনিক্স সিস্টেমগুলিতে, আপনি এই ফাংশনটি চেষ্টা করতে পারেন:

function android_pull_apk() {
    if [ -z "$1" ]; then
        echo "You must pass a package to this function!"
        echo "Ex.: android_pull_apk \"com.android.contacts\""
        return 1
    fi

    if [ -z "$(adb shell pm list packages | grep $1)" ]; then
        echo "You are typed a invalid package!"
        return 1
    fi

    apk_path="`adb shell pm path $1 | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`"
    apk_name="`adb shell basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`"

    destination="$HOME/Documents/Android/APKs"
    mkdir -p "$destination"

    adb pull ${apk_path} ${destination}
    echo -e "\nAPK saved in \"$destination/$apk_name\""
}
  • উদাহরণ : android_pull_apk com.android.contacts
  • দ্রষ্টব্য : প্যাকেজ সনাক্ত করতে: adb shell pm list packages

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

1) অ্যাপের প্যাকেজ নাম নির্ধারণ করুন, যেমন "com.example.someapp"। আপনি ইতিমধ্যে প্যাকেজ নাম জানেন যদি এই ধাপে যান।

adb shell pm list packages

প্যাকেজের নামগুলির তালিকাটি দেখুন এবং অ্যাপ্লিকেশান এবং প্যাকেজ নামটির মধ্যে একটি মিল খুঁজে বের করার চেষ্টা করুন। এটি সাধারণত সহজ, তবে মনে রাখবেন যে প্যাকেজের নামটি অ্যাপ নামের সাথে সম্পূর্ণভাবে সম্পর্কিত হতে পারে। আপনি যদি প্যাকেজের নামের তালিকা থেকে অ্যাপ্লিকেশনটিকে চিনতে না পারেন তবে ব্রাউজার ব্যবহার করে Google Play এ অ্যাপ্লিকেশনটি খুঁজে বের করার চেষ্টা করুন। গুগল প্লে তে একটি অ্যাপের ইউআরএল প্যাকেজের নাম রয়েছে।

2) পছন্দসই প্যাকেজ জন্য APK ফাইল পূর্ণ পাথ নাম পান।

adb shell pm path com.example.someapp

আউটপুট কিছু দেখতে হবে
প্যাকেজ: /data/app/com.example.someapp-2.apk
অথবা
প্যাকেজ: /data/app/com.example.someapp-nfFSVxn_CTafgra3Fr_rXQ == / base.apk

3) ধাপ 2 থেকে পূর্ণ পাথের নাম ব্যবহার করে, এন্ড্রয়েড ডিভাইস থেকে এপিকে ফাইলটি বিকাশ বাক্সে টেনে আনুন।

adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination

এই সব উত্তর ডিভাইস থেকে পুনরুদ্ধার প্রতিটি apk ফাইল জন্য একাধিক পদক্ষেপ প্রয়োজন। 1. প্যাকেজ নাম নির্ধারণ, 2. ফাইল খুঁজে, এবং 3. এটি ডাউনলোড করুন। আমি একটি সহজ apk_grabber পাইথন স্ক্রিপ্ট তৈরি করেছি যাতে এটি একটি প্রদত্ত রেজেক্সের সাথে মেলে এমন কোনও অ্যাপ্লিকেশনের জন্য, এবং তারপরে সেই APKs jar ফাইলগুলিতে ডিকম্পাইল করে।


এখানে বর্ণিত পদ্ধতিগুলি অ্যান্ড্রয়েড 7 (নুগাত) [এবং সম্ভবত Android 6 এর জন্য কাজ করে না, তবে আমি যাচাই করতে পারছি না]। আপনি Nougat এর অধীনে .apk ফাইলগুলিকে সরাসরি টেনে আনতে পারবেন না (রুট মোড না থাকলেও এটি একটি মূল ফোন প্রয়োজন)। তবে, আপনি অ্যাডবি শেল ব্যবহার করে একটি বিকল্প পথ (। / Sdcard / ডাউনলোড) এ। Apk অনুলিপি করতে পারেন, তারপরে আপনি বিকল্প পথ থেকে একটি অ্যাডব্লু পুল করতে পারেন।


এটি এমন একটি ব্যক্তির জন্য সাহায্য করবে যা একটি অ-প্রযুক্তিগত উত্তর খুঁজছেন

এই সহজ হ্যাক

গুগল প্লে স্টোর থেকে App Share/Send Pro । আপনি পাঠাতে চান অ্যাপ্লিকেশন নির্বাচন করুন এবং পদ্ধতি পাঠাতে আবেদন।

আমি সাধারণত আমার পিসি বা অন্য ফোন অ্যাপ্লিকেশন পাঠাতে ব্লুটুথ ব্যবহার।


খুব, খুব আরামদায়ক 1 মিনিট সমাধান চান?

শুধু আপনি এই অ্যাপ্লিকেশনটি https://play.google.com/store/apps/details?id=com.cvinfo.filemanager (গুগল প্লে থেকে স্মার্ট ফাইল ম্যানেজার)।

"অ্যাপ্লিকেশন" আলতো চাপুন, একটি নির্বাচন করুন এবং "ব্যাকআপ" আলতো চাপুন। এটি app_backup ফোল্ডারে আপনার ফাইল সিস্টেমে শেষ হবে;)


ডিভাইস থেকে ডেস্কটপে APK ডাউনলোড করার পদক্ষেপ

এ) আপনার চলমান (এমুলেটর / বাস্তব ডিভাইস) নিশ্চিত করুন। এই কমান্ড ব্যবহার চেক করুন

adb devices

বি) আপনার ডিভাইসে ইনস্টল করা সমস্ত উপলব্ধ প্যাকেজ তালিকা নির্বাচন করুন। আপনি ডাউনলোড করতে ইচ্ছুক নির্দিষ্ট প্যাকেজ নির্বাচন করতে grep কমান্ড ব্যবহার করতে পারেন।

adb shell pm list packages
adb shell pm list packages -f -3

আউটপুট (উপলব্ধ প্যাকেজ তালিকা)

package:/data/app/com.example.mytestapplication-sOzKi5USzfbYLPNDmaaK6g==/base.apk=com.example.mytestapplication
package:/data/app/com.example.myapplication-nd1I4FGnTZnQ9PyRbPDHhw==/base.apk=com.example.myapplication

গ) উপরের লিঙ্ক থেকে প্যাকেজ (যা আপনি ডাউনলোড করতে চান ) অনুলিপি করুন। আমাদের ক্ষেত্রে ফর্ম করুন আমি এই (com.example.myapplication) প্যাকেজ নির্বাচন করুন

Syntex: adb shell pm path [your_package_name]
Command: adb shell pm path com.example.myapplication

আউটপুট

package:/data/app/com.example.myapplication-nd1I4FGnTZnQ9PyRbPDHhw==/base.apk

D) অবশেষে, আপনার (এমুলেটর / রিয়েল ডিভাইস থেকে APK ডাউনলোড করতে)

Syntex: adb pull /data/app/[your_package_name]-1/base.apk  [your_destination_path]
Command: adb pull /data/app/com.example.myapplication-3j4CVk0Tb2gysElgjz5O6A==/base.apk /Users/$(whoami)/Documents/your_apk.apk

উদাহরণ: আপনার স্থানীয় মেশিনে (Mac) এই CertInstaller.apk ফাইলটিকে টেনে আনতে চেষ্টা করছে

adb pull /system/app/CertInstaller/CertInstaller.apk /Users/$(whoami)/Documents/APK/download_apk/

ই) আপনার স্থানীয় ডিরেক্টরি নিশ্চিত করুন

ls -la /Users/$(whoami)/Documents/

যদি আপনি জানেন (অথবা যদি আপনি "অনুমান" করতে পারেন) .apk এর পথ (এটি ফরম্যাটের / /data/app/com.example.someapp-{1,2,..}.apk , /data/app/com.example.someapp-{1,2,..}.apk হয়, তারপরে আপনি এটিকে কেবলমাত্র /data/app থেকেও অনুলিপি করতে পারেন। এটি এমনকি আমার নন-রুট, স্টক অ্যানড্রইড ফোনেও কাজ করেছে।

শুধু একটি টার্মিনাল এমুলেটর অ্যাপ্লিকেশন ব্যবহার করুন (যেমন এইটি ) এবং চালান:

# step 1: confirm path
ls /data/app/com.example.someapp-1.apk
# if it doesn't show up, try -2, -3. Note that globbing (using *) doesn't work here.
# step 2: copy (make sure you adapt the path to match what you discovered above)
cp /data/app/com.example.someapp-1.apk /mnt/sdcard/

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


সমস্ত Android সংস্করণের জন্য কাজ করে এমন একটি মাছ ধরার নৌকা:

adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk

adb ব্যবহার করুন। অ্যাডব্লু টোল দিয়ে আপনি ডিভাইসটি আপনার ডিভাইস থেকে আপনার সিস্টেমে অনুলিপি করতে পারেন, যখন ডিভাইসটি USB এর সাথে সংযুক্ত থাকে।

অবশ্যই আপনার ফাইলের ডিরেক্টরিটি অ্যাক্সেস করার জন্য আপনার সঠিক অনুমতিগুলির প্রয়োজন। যদি না হয় তবে আপনাকে প্রথমে ডিভাইসটিকে রুট করতে হবে।

যদি আপনি দেখে থাকেন যে অনেকগুলি APKs "base.apk" নামকরণ করা হয় তবে আপনি এই এক লাইন কমান্ডটি ব্যবহার করতে পারেন যে সমস্ত অ্যাপ্লিকেশনকে কোনও "বেস.এপেক" নামগুলি প্যাকেজ নামতে নামকরণ করার সময় আপনি যে ফোনে অ্যাক্সেস করতে পারেন সেটি টেনে আনতে পারেন। এটি নামের পরে আপাতদৃষ্টিতে র্যান্ডম অক্ষরগুলির সাথে APK পাথগুলির জন্য সমস্যা খুঁজে পাওয়া যায়নি এমন ডিরেক্টরিটিও সংশোধন করে:

for i in $(adb shell pm list packages | awk -F':' '{print $2}'); do adb pull "$(adb shell pm path $i | awk -F':' '{print $2}')"; mv base.apk $i.apk 2&> /dev/null ;done

যদি আপনি "adb: error: দূরবর্তী বস্তুটি স্থির করতে ব্যর্থ হন" যা নির্দেশ করে যে আপনার কাছে প্রয়োজনীয় অনুমতি নেই। আমি একটি অন-মূল মোটা Z2 এ এটি দৌড়ালাম এবং ইউটিউব ব্যতীত আমি যে সকল APK আনইনস্টল (নীচে দেখুন) ডাউনলোড করতে সক্ষম হয়েছিলাম।

adb shell pm uninstall --user 0 com.android.cellbroadcastreceiver   <--- kills presidential alert app!

(ব্যবহারকারীদের অ্যাডব শেল বিকেলে তালিকা ব্যবহারকারীদের চালনা করার জন্য) এটি সরানোর / আনইনস্টল করার উপায় (ফোনের থেকে ফ্যাক্টরি রিসেটের সাথে ফেরত আসে না) প্রায় কোনো অ্যাপ্লিকেশন সিস্টেম অ্যাপ্লিকেশন সহ রুট ছাড়াই (আপনার ফোন আপডেট করা বিরক্তিকর আপডেট অ্যাপ্লিকেশনটি ইঙ্গিত করে) লাইন এটি "ccc" জন্য grepping দ্বারা পাওয়া যাবে না)


কোন রুট প্রয়োজন বোধ করা হয়:

এই কোডটির সাথে তৃতীয় পক্ষের প্যাকেজগুলি পথ পাবে যাতে আপনি সহজেই আপনার এপিকে সনাক্ত করতে পারেন

adb shell pm list packages -f -3

আউটপুট হবে

প্যাকেজ: /data/app/XX.XX.XX.apk=YY.YY.YY

এখন নীচের কোড ব্যবহার করে যে প্যাকেজ টানুন:

adb pull /data/app/XX.XX.XX.apk

যদি আপনি C:>\ cm in cmd এর উপরে মৃত্যুদন্ড কার্যকর করেন তবে আপনি সেখানে সেই প্যাকেজটি খুঁজে পাবেন।





apk