696 Stimmen

Wie bekomme ich eine apk-Datei von einem Android-Gerät?

Wie bekomme ich die apk-Datei von einem Android-Gerät? Oder wie übertrage ich die apk-Datei vom Gerät auf das System?

24voto

RVR Punkte 571
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)

14voto

Vitaly Dyatlov Punkte 1842

Ein Liner, der für alle Android-Versionen funktioniert:

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

8voto

Pedro Rodrigues Punkte 1526

Auf Unix-Systemen können Sie diese Funktion ausprobieren:

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\""
}
  • Exemple : android_pull_apk com.android.contacts
  • 備考 : Zur Identifizierung des Pakets: adb shell pm list packages

7voto

elcuco Punkte 8626

Um die Antwort von @Yojimbo zu vervollständigen, habe ich Folgendes getan (nur Linux/Mac, funktioniert nicht sofort unter Windows... vielleicht in der Bash-Shell von Git):

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

Das ist hässliche Bash, aber es funktioniert :)

EDIT: Es funktioniert nicht mehr auf AndroidM: alle Dateien sind "base.apk" unter einem anderen Verzeichnis benannt. Sollte "trivial" zu beheben sein.

7voto

Probieren Sie diesen einzeiligen Bash-Befehl aus, um alle Ihre Anwendungen zu sichern:

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

Dieser Befehl ist abgeleitet von Das Skript des Feuerlords . Ich habe gerade alle apks in ihre Paketnamen umbenannt, um das Problem mit elcucos Skript d.h. die gleiche base.apk Datei wird unter Android 6.0 "Marshmallow" und höher überschrieben.

Beachten Sie, dass dieser Befehl nur Anwendungen von Drittanbietern sichert, denn ich sehe keinen Sinn darin, integrierte Anwendungen zu sichern. Wenn Sie aber auch Systemanwendungen sichern wollen, lassen Sie einfach das -3 Option.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X