ฉันจะรับไฟล์ apk จากอุปกรณ์ Android ได้อย่างไร


484

ฉันจะรับไฟล์ apk จากอุปกรณ์ android ได้อย่างไร หรือฉันจะถ่ายโอนไฟล์ apk จากอุปกรณ์ไปยังระบบได้อย่างไร?

คำตอบ:


118

ใช้adb ด้วยadb pull คุณสามารถคัดลอกไฟล์จากอุปกรณ์ไปยังระบบของคุณเมื่ออุปกรณ์นั้นเชื่อมต่อกับ USB

แน่นอนคุณต้องมีสิทธิ์ที่ถูกต้องในการเข้าถึงไดเรกทอรีไฟล์ของคุณถ้าไม่คุณจะต้องรูทอุปกรณ์ก่อน


หากคุณพบว่า APK หลาย ๆ ชื่อมีชื่อว่า "base.apk" คุณสามารถใช้คำสั่งบรรทัดเดียวนี้เพื่อดึง APK ทั้งหมดออกจากโทรศัพท์คุณสามารถเข้าถึงได้ในขณะที่เปลี่ยนชื่อ "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: ล้มเหลวในการ stat วัตถุระยะไกล" ที่ระบุว่าคุณไม่มีสิทธิ์ที่จำเป็น ฉันใช้งาน Moto Z2 ที่ไม่รูทและสามารถดาวน์โหลด APK ทั้งหมดที่ฉันไม่ได้ถอนการติดตั้ง (ดูด้านล่าง) ยกเว้น youtube

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

(เพื่อดูผู้ใช้เรียกใช้ผู้ใช้รายการ adb shell pm) นี่เป็นวิธีลบ / ถอนการติดตั้ง (ไม่ใช่จากโทรศัพท์เมื่อกลับมาพร้อมการรีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน) เกือบทุกแอพโดยไม่ต้องรูทแอประบบรวมถึงแอพ เรียงแถวหรือไม่สามารถพบได้โดย grepping สำหรับ "ccc")


1
ขอบคุณ Maurits Rijk โปรดช่วยฉัน ฉันต้องการคัดลอกไฟล์ iTwips.apk จากอุปกรณ์ไปยังระบบ ฉันใช้คำสั่งต่อไปนี้ ถูกต้องหรือไม่ ฉันได้รับข้อผิดพลาด "Android2.2Froyo / sdcard / iTwips.apk" ไม่ออก ... / ผู้ใช้ / bbb / Android / android-sdk-mac_86 / เครื่องมือ / adb ดึง Android2.2Froyo / sdcard / iTwips.apk / ผู้ใช้ / bbb ขอบคุณล่วงหน้า .......
ค้นหา

บนอุปกรณ์ของฉัน (Android 2.1) คำสั่งจะเป็น "adb pull /sdcard/test.jpg" เพื่อคัดลอก test.jpg จากการ์ด sd ของฉันไปยัง dir ปัจจุบัน โปรดค้นหาไฟล์ iTwips.apk ของคุณก่อนโดยใช้ "adb shell" สิ่งนี้จะเริ่มเชลล์บนอุปกรณ์ของคุณและคุณสามารถใช้คำสั่ง Unix มาตรฐานเช่น ls และ cd เพื่อเรียกดูไดเรกทอรีของคุณ
Maurits Rijk

สวัสดีครับที่จริงแล้ว iTwips.apk เก็บไว้ในหน่วยความจำภายในของอุปกรณ์ ฉันจะใช้เชลล์สำหรับอันนี้ได้อย่างไร ฉันใช้คำสั่งต่อไปนี้ adp -d <devicenumber> shell .. แต่มันไม่ทำงาน .. โปรดช่วยฉัน .. ขอบคุณล่วงหน้า
Finder

สวัสดีขอบคุณมาก ตอนนี้ฉันสามารถรับภาพจาก sdcard ได้แล้ว แต่ฉันต้องการดึงไฟล์ apk จากอุปกรณ์ (โฟลเดอร์การจัดการแอพพลิเคชัน) iTwips apk จะถูกเก็บไว้ในโฟลเดอร์แอปพลิเคชัน โปรดช่วยฉัน
Finder

16
@Finder @Maurits Rijk จริงๆแล้วคุณไม่จำเป็นต้องรูทอุปกรณ์เพื่อดึง apk ตราบใดที่คุณรู้เส้นทางเต็มของ apk นั้น หากติดตั้ง apk แล้วให้ค้นหาเส้นทางแบบเต็มโดยดูที่ชื่อแพ็กเกจadb shell pm list packagesก่อนและเส้นทางแบบเต็มadb shell pm path your.package.nameจากพีซีของคุณคุณสามารถทำได้ง่ายๆadb pull /full/path/to/your.apk
Isa A

1549

คำแนะนำเหล่านี้ไม่ได้ผลสำหรับฉันเพราะ Android กำลังต่อท้ายหมายเลขลำดับกับชื่อแพ็กเกจเพื่อสร้างชื่อไฟล์ APK สุดท้าย บน Android เวอร์ชันล่าสุด (Oreo and Pie) สตริงแบบสุ่มที่คาดเดาไม่ได้จะถูกต่อท้าย ลำดับของคำสั่งต่อไปนี้เป็นสิ่งที่ใช้ได้กับฉันบนอุปกรณ์ที่ไม่ได้รูท :

1) กำหนดชื่อแพ็คเกจของแอปเช่น "com.example.someapp" ข้ามขั้นตอนนี้หากคุณรู้ชื่อแพ็คเกจแล้ว

adb shell pm list packages

ดูรายชื่อแพคเกจแล้วลองค้นหาคู่ที่ตรงกันระหว่างแอพที่เป็นปัญหาและชื่อแพ็คเกจ โดยปกติจะเป็นเรื่องง่าย แต่โปรดทราบว่าชื่อแพคเกจอาจไม่เกี่ยวข้องกับชื่อแอปอย่างสมบูรณ์ หากคุณไม่รู้จักแอพจากรายชื่อแพ็คเกจลองค้นหาแอปใน Google Play โดยใช้เบราว์เซอร์ URL สำหรับแอปใน 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 ดึงไฟล์ APK จากอุปกรณ์ Android ไปยังกล่องพัฒนา

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

65
นี่คือคำตอบที่ดีที่สุดไม่จำเป็นต้องทำลายอุปกรณ์ !! ขอบคุณมาก
Muhannad A.Alhariri

14
สิ่งนี้ใช้ได้กับอุปกรณ์ Android ทั้งหมดของฉันและควรเป็นคำตอบที่ยอมรับได้
b.mcewan

8
pm list packagesสนับสนุน-fธงซึ่งรายชื่อสถานที่ตั้งของ .apk package:/data/app/com.google.android.apps.maps-1.apk=com.google.android.apps.mapsสำหรับคุณเช่น ความช่วยเหลือในตัว pm นั้นไม่มีประโยชน์ แต่ pm สามารถกรองประเภทของแพ็คเกจได้ด้วยดูที่developer.android.com/studio/command-line/adb.html#pmสำหรับข้อมูลเพิ่มเติม แก้ไข: เพิ่งสังเกตเห็นว่าคำตอบด้านล่างพูดถึงสิ่งนี้ แต่คำตอบนั้นไม่ได้ใกล้เคียงกับ upvoted ดังเช่นนี้
Hitechcomputergeek

9
ไม่ได้ผลสำหรับฉัน ฉันได้รับข้อผิดพลาดต่อไปนี้: adb: error: remote object '/data/app/path.of.the.app-2/base.apk' does not exist. หากฉันเรียกดูโฟลเดอร์เหล่านี้ด้วยเบราว์เซอร์ไฟล์โฟลเดอร์จะว่างเปล่า
Bevor

7
ฉันมีปัญหาคล้ายกันกับ @Bevor เมื่อดึงฉันพบข้อผิดพลาดว่า apk "ไม่มีอยู่" ฉันคงได้โดยใช้adb shellแล้วcp PathToApk /sdcard/และจากนั้นคัดลอกจาก sdcard
ลิน

124

ไม่จำเป็นต้องรูท:

รหัสนี้จะได้รับเส้นทางของแพ็คเกจบุคคลที่สามพร้อมชื่อเพื่อให้คุณสามารถระบุ APK ของคุณได้อย่างง่ายดาย

adb shell pm list packages -f -3

ผลลัพธ์จะเป็น

แพคเกจ: /data/app/XX.XX.XX.apk=YY.YY.YY

ตอนนี้ดึงแพ็คเกจที่ใช้รหัสด้านล่าง:

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

หากคุณดำเนินการข้างต้น cmd ในC:>\แล้วคุณจะพบว่ามีแพคเกจ


1
นี่คือคำตอบที่ยอดเยี่ยม! ขอบคุณมาก :)
Drag0

1
ด้วยเหตุผลบางอย่างฉันไม่พบ APK ในไดเรกทอรี/ data / app / มีไดเรกทอรีย่อยเสมอ
IgorGanapolsky

สำหรับแอประบบใช้-f -sแทน-f -3
palindrom

57

ฉันได้เห็นแล้วว่าวิธีการแก้ไขปัญหานี้มากมายคุณต้องรูทโทรศัพท์หรือติดตั้งแอพ หลังจาก googling มากฉันได้รับการแก้ปัญหานี้สำหรับโทรศัพท์ที่ไม่ได้รูท / รูท

เพื่อแสดงรายการแอพที่คุณได้รับ

adb shell pm list packages

จากนั้นคุณสามารถเลือกแอพเช่น twitter

adb backup -apk com.twitter.android

สิ่งสำคัญที่นี่คือการไม่ตั้งรหัสผ่านสำหรับเข้ารหัสข้อมูลสำรองของคุณ

นี่จะเป็นการสร้างไฟล์ที่ชื่อว่า backup.ap แต่คุณยังไม่สามารถเปิดได้ สำหรับสิ่งนี้คุณจะต้องแยกมันอีกครั้ง แต่ใช้คำสั่ง dd

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

หลังจากนี้สิ่งที่คุณต้องทำคือการแยกเนื้อหา tar และมันทำ

หวังว่ามันจะใช้ได้ผลสำหรับพวกคุณ


7
จากblog.shvetsov.com/2013/02/…หาก openssl ของคุณไม่มี zlib สิ่งนี้อาจใช้งานได้: dd if = backup.ab bs = 1 skip = 24 | python -c "import zlib, sys; sys.stdout.write (zlib.decompress (sys.stdin.read ()))" | tar -xvf -
kodi

1
นี่คือสิ่งที่ใช้ได้ผลสำหรับฉันไม่ใช่ขั้นตอนในคำตอบที่ยอมรับได้ และมันช่วยฉันได้มากในวันนี้เมื่อฉันต้องการ APK จากหนึ่งในแอพเก่าของฉัน แต่มันไม่สามารถใช้งานได้กับฉันนอกจากโทรศัพท์ของฉัน
zeeshan

1
นี่คือข้อมูลเพิ่มเติมหาก openssl ของคุณขาดการสนับสนุน zlib: stackoverflow.com/questions/29830981//
Nico Wiedemann

19

ขั้นตอนในการดาวน์โหลด APK จากอุปกรณ์ไปยังเดสก์ท็อป

A)ตรวจสอบให้แน่ใจว่าการทำงานของคุณ (อุปกรณ์จำลอง / อุปกรณ์จริง) เพื่อตรวจสอบใช้คำสั่งนี้

adb devices

B)เลือกรายการแพ็คเกจทั้งหมดที่ติดตั้งในอุปกรณ์ของคุณ คุณสามารถใช้คำสั่ง 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

C)คัดลอกแพ็คเกจ (ที่คุณต้องการดาวน์โหลด) จากลิงค์ด้านบน แบบฟอร์มกรณีของเราฉันเลือกแพคเกจนี้ (com.example.myapplication)

Syntax : 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 จาก (อีมูเลเตอร์ / อุปกรณ์จริง) ของคุณ

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

ตัวอย่าง: พยายามดึงไฟล์ CertInstaller.apk นี้ในเครื่องคอมพิวเตอร์ของคุณ (Mac)

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

E)ยืนยันในไดเรกทอรีท้องถิ่นของคุณ

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

มีวัตถุประสงค์เพื่อแยก apk เดียว แต่ในขั้นตอนที่ 4 คุณดึงไฟล์เพิ่มเติมสองไฟล์โดยไม่มีคำอธิบายหรือการอ้างอิงก่อนหน้า
Carles Alcolea

ฉันแก้ไขโพสต์นี้โดยการชี้แจงทุกขั้นตอนหวังว่าการแก้ไขนี้จะเป็นประโยชน์และเข้าใจง่าย
Farid Haq

18
C:\Users\xyz>adb shell pm list packages -f | findstr whatsapp
package:/data/app/com.whatsapp-1/base.apk=com.whatsapp

C:\Users\xyz>adb pull /data/app/com.whatsapp-1/base.apk Desktop
/data/app/com.whatsapp-1/base.apk: 1 f.... 13.8 MB/s (32803925 bytes in 
2.269s)

นี่เป็นวิธีที่ตรงไปตรงมาที่สุดในความคิดของฉัน ขอบคุณ!
8bitcartridge

1
พวกที่ใช้ linux หรือ mac แทนที่จะใช้
Jeeva

10

สายการบินเดียวที่ใช้ได้กับ Android ทุกรุ่น:

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

1
@AlexP คุณต้องการบอกอะไรจากลิงค์ด้านบน
Vitaly Dyatlov

7

ทำตามคำตอบของ @Yojimbo นี่คือสิ่งที่ฉันทำ (Linux / Mac เท่านั้นจะไม่ทำงานนอกกรอบบน Windows ... อาจจะอยู่ใน bash shell ของ git):

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

นี่คือทุบตีน่าเกลียด แต่ใช้งานได้ :)

แก้ไข: มันไม่ทำงานบน AndroidM: ไฟล์ทั้งหมดมีชื่อว่า "base.apk" ภายใต้ dir อื่น ควร "แก้ไข" เล็กน้อยเพื่อแก้ไข


7

บนระบบยูนิกซ์คุณสามารถลองใช้ฟังก์ชันนี้:

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

6

ดังที่ได้กล่าวไว้ข้างต้นคุณจะได้รับ apk โดยใช้คำสั่ง pull ใน adb

เนื่องจากคุณกำลังพูดถึงแอปพลิเคชันที่ติดตั้งของคุณให้ไปข้างหน้าและดูในไดเรกทอรี/ data / appของระบบไฟล์ Android ของคุณ คุณจะพบ APK ของที่นั่น

จากนั้นใช้คำสั่ง adb - adb pull /data/data/appname.apk


6

ลองใช้คำสั่ง liner bash นี้เพื่อสำรองข้อมูลแอพทั้งหมดของคุณ:

for package in $(adb shell pm list packages -3 | tr -d '\r' | sed 's/package://g'); do apk=$(adb shell pm path $package | tr -d '\r' | sed 's/package://g'); echo "Pulling $apk"; adb pull -p $apk "$package".apk; done

คำสั่งนี้ได้มาจากสคริปต์ของจ้าว ฉันเพิ่งเปลี่ยนชื่อ apks ทั้งหมดเป็นชื่อแพ็คเกจเพื่อแก้ไขปัญหาด้วยสคริปต์ของ elcucoเช่นเดียวกันbase.apkไฟล์เขียนทับบน Android 6.0 "Marshmallow" และสูงกว่า

โปรดทราบว่าคำสั่งนี้สำรองเฉพาะแอพของบุคคลที่สามเพราะฉันไม่เห็นจุดที่ทำการสำรองแอพในตัว แต่ถ้าคุณต้องการแอพระบบสำรองข้อมูลก็ไม่ต้อง-3เลือกตัวเลือก


5

หากคุณรู้ (หรือถ้าคุณสามารถ "เดา") เส้นทางไปที่.apk( ดูเหมือนว่าจะเป็นรูปแบบ/data/app/com.example.someapp-{1,2,..}.apkไปแล้วคุณก็สามารถคัดลอกมาได้/data/appเช่นกันสิ่งนี้ใช้ได้แม้ในโทรศัพท์ Android ที่ไม่มีรูทของฉัน

เพียงใช้แอป Terminal Emulator (เช่นอันนี้ ) และเรียกใช้:

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

จากนั้นคุณสามารถย้ายจากการ์ด SD ไปที่ใดก็ได้ที่คุณต้องการ (หรือแนบไปกับอีเมล ฯลฯ ) บิตสุดท้ายอาจเป็นตัวเลือกทางเทคนิค แต่มันทำให้ชีวิตของคุณง่ายขึ้นมากเมื่อพยายามทำบางสิ่งกับ.apkไฟล์


5

ขั้นตอนที่อธิบายไว้ที่นี่ไม่ทำงานสำหรับ Android 7 (Nougat) [และอาจเป็น Android 6 แต่ฉันไม่สามารถยืนยันได้] คุณไม่สามารถดึงไฟล์. apk ได้โดยตรงภายใต้ Nougat (ยกเว้นในโหมดรูท แต่ต้องใช้โทรศัพท์ที่รูท) แต่คุณสามารถคัดลอก. apk ไปยังเส้นทางสำรอง (พูด / sdcard / ดาวน์โหลด) บนโทรศัพท์โดยใช้เชลล์ adb จากนั้นคุณสามารถดึง adb จากเส้นทางสำรอง


3
คำตอบที่ยอมรับได้ (รวมถึงadb shellคำสั่งจากความคิดเห็นของ @Isa A) ทำงานได้ดีสำหรับฉันใน Android 7.1.1 ไม่ใช่รูท
Jonathan Cottrill

4
  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

แก้ไข

หากขั้นตอนที่ 2 ไม่สามารถใช้งานได้:

adb shell dumpsys window windows | grep mCurrentFocus

3

นี่คือวิธีที่คุณทำ:

ดาวน์โหลดและติดตั้ง APK Extractor ในอุปกรณ์ของคุณ ฟรีและเข้ากันได้กับอุปกรณ์ Android เกือบทั้งหมด อีกจุดบวกคือมันไม่จำเป็นต้องมีรากหรืออะไรที่จะทำงาน หลังจากติดตั้งแล้วให้เปิดใช้งาน ที่นั่นคุณจะเห็นรายการแอพที่อยู่ในอุปกรณ์ของคุณซึ่งรวมถึงแอพที่คุณติดตั้งในภายหลังพร้อมกับแอพระบบ กดแอพใด ๆ ที่คุณต้องการแยกออก (คุณสามารถเลือกหลายแอพหรือทั้งหมดพร้อมกัน) และคลิกที่ตัวเลือกการแยกที่คุณเห็นในด้านบน คุณจะมีตัวเลือกให้แชร์ผ่านบลูทู ธ หรือการส่งข้อความ คุณทำเสร็จแล้วคุณจะเห็นแอปที่แยกเป็น AppName_AppPackage_AppVersionName_AppVersionCode.apk ซึ่งจะถูกบันทึกในพา ธ / sdcard / ExtractedApks / โดยค่าเริ่มต้น

สำหรับคำอธิบายโดยละเอียดเกี่ยวกับวิธีแยกไฟล์ apk ใน Androidโปรดไปที่: http://appslova.com/how-to-extract-apk-files-in-android/


3

คำตอบทั้งหมดเหล่านี้ต้องการขั้นตอนหลายขั้นตอนสำหรับไฟล์ apk แต่ละไฟล์ที่ดึงมาจากอุปกรณ์ 1. กำหนดชื่อแพ็คเกจ 2. ค้นหาไฟล์และ 3. ดาวน์โหลด ฉันสร้างapk_grabberสคริปต์ pythonง่าย ๆเพื่อทำสิ่งนี้สำหรับแอพใด ๆ ที่ตรงกับ regex ที่ระบุ


1

ฉันไม่ได้ใช้รหัสเพื่อดึงไฟล์. apk จากมือถือ แต่ฉันใช้ซอฟต์แวร์เพื่อแยกไฟล์. apk จากมือถือและซอฟต์แวร์ที่ฉันใช้อยู่ด้านล่างด้วยลิงค์ Google Play:

  1. ES File Explorer ตัวจัดการไฟล์
  2. ASTRO Cloud & File Manager 3. สายเคเบิลข้อมูลซอฟต์แวร์

หวังว่ามันจะช่วยคุณ


2
ฉันใช้ ES File Explorer ฉันไม่ได้หยั่งราก ฉันเพิ่งไปที่เครื่องมือ -> ตัวจัดการแอปและกดแอพที่ฉันต้องการ APK สำหรับ สิ่งนี้เลือกแอพ (และอนุญาตให้ฉันเลือกคนอื่น) ฉันคิดว่ากดปุ่มแชร์และสามารถส่ง APK ให้กับตัวเอง (ใช้ Push Bullet แต่สิ่งที่ได้ผลสำหรับคุณ)
schultzter

หากคุณยังไม่เน่าเปื่อยคุณสามารถลองสำรองข้อมูลแอพและคืนค่าplay.google.com/store/apps/details?id=mobi.infolife.appbackup
surhidamatya

1

ต้องการมากวิธีแก้ปัญหาที่สะดวกสบายมาก 1 นาที?

เพียงแค่คุณแอปนี้https://play.google.com/store/apps/details?id=com.cvinfo.filemanager (ตัวจัดการไฟล์อัจฉริยะจาก google play)

แตะที่ "แอพ" เลือกหนึ่งอันแล้วแตะ "สำรอง" มันจะจบลงที่ระบบไฟล์ของคุณในapp_backupโฟลเดอร์;)



1

ฉันได้รับ 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

อีกสคริปต์ทุบตี (เช่นจะทำงานสำหรับระบบที่ใช้ระบบปฏิบัติการยูนิกซ์) ขึ้นอยู่กับคำตอบของ Pedro Rodriguesแต่ใช้งานได้ง่ายกว่าเล็กน้อย

ปรับปรุงเวอร์ชั่นของ Pedro:

  1. วิธีดั้งเดิมไม่ได้ผลสำหรับฉันบน Android 7: adb pullยังคงบ่นno such file or directoryขณะที่adb shellสามารถเข้าถึงไฟล์ได้ ดังนั้นฉันใช้วิธีการที่แตกต่างกันด้วยไฟล์ชั่วคราว
  2. เมื่อเปิดตัวโดยไม่มีข้อโต้แย้งสคริปต์ของฉันจะแสดงรายการแพ็คเกจที่มีทั้งหมด เมื่อระบุชื่อแพคเกจบางส่วนมันจะพยายามเดาชื่อแพคเกจแบบเต็ม มันจะบ่นหากมีการขยายที่เป็นไปได้หลายอย่าง
  3. ฉันไม่ได้ใส่เส้นทางปลายทางของ hardcode APK จะถูกบันทึกไปยังไดเรกทอรีการทำงานปัจจุบันแทน

บันทึกสิ่งนี้ลงในไฟล์ที่ปฏิบัติการได้:

#!/bin/bash
# Obtain APK file for given package from the device connected over ADB

if [ -z "$1" ]; then
    echo "Available packages: "
    adb shell pm list packages | sed 's/^package://'
    echo "You must pass a package to this function!"
    echo "Ex.: android_pull_apk \"com.android.contacts\""
    exit 1
fi

fullname=$(adb shell pm list packages | sed 's/^package://' | grep $1)
if [ -z "$fullname" ]; then
    echo "Could not find package matching $1"
    exit 1
fi
if [ $(echo "$fullname" | wc -l) -ne 1 ]; then
    echo "Too many packages matched:"
    echo "$fullname"
    exit 1
fi
echo "Will fetch APK for package $fullname"

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

destination="${fullname}.apk"

tmp=$(mktemp --dry-run --tmpdir=/sdcard --suffix=.apk)
adb shell cp "${apk_path}" "$tmp"
adb pull "$tmp" "$destination"
adb shell rm "$tmp"

[ $? -eq 0 ] && echo -e "\nAPK saved in \"$destination\""

0

สิ่งที่ง่ายที่สุดคือติดตั้งแอพ "ShareIt" บนโทรศัพท์ ตอนนี้ติดตั้งแอพ shareIt ในพีซีหรือโทรศัพท์อื่น ตอนนี้จากโทรศัพท์ที่ติดตั้งแอพเปิด ShareIt แล้วส่ง บนโทรศัพท์หรือพีซีเครื่องอื่นเปิด ShareIt และรับ


0

ฉันชอบคำตอบทั้งหมดเหล่านี้จริงๆ สคริปต์ส่วนใหญ่เพื่อส่งออกและเปลี่ยนชื่อทั้งหมดถูกเขียนเป็น Bash ฉันทำสคริปต์ Perl ขนาดเล็กซึ่งทำเช่นเดียวกัน (ซึ่งควรทำงานได้ทั้งใน Perl สำหรับ windows และ linux ทดสอบบน Ubuntu เท่านั้น)

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. เรียกใช้ download-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.

-1

วิธีนี้จะช่วยให้คนที่กำลังมองหาคำตอบที่ไม่ใช่ด้านเทคนิค

แฮ็คนี้ง่าย

ดาวน์โหลดแอปพลิเคชันApp Share/Send Proจาก google play store เลือกแอพที่คุณต้องการส่งและวิธีส่งแอปพลิเคชัน

ฉันมักจะใช้บลูทู ธ เพื่อส่งแอปพลิเคชั่นไปยังพีซีหรือโทรศัพท์อื่น


มันใช้งานง่ายไม่ใช่
APEXBoi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.