wake-up-neo.com

Hält Android die APK-Dateien? wenn ja wo?

Bewahrt die .apk-Datei nach der Installation einer Anwendung von Android vom Marketplace?

Gibt es einen Standardspeicherort, an dem Android solche Dateien aufbewahren würde?

170
Gubatron

Vorinstallierte Anwendungen befinden sich im Ordner /system/app. Vom Benutzer installierte Anwendungen befinden sich in /data/app. Ich vermute, Sie können nicht darauf zugreifen, es sei denn, Sie haben ein gerootetes Telefon ... Ich habe kein gerootetes Telefon hier, aber probieren Sie diesen Code aus:

public class Testing extends Activity {
    private static final String TAG = "TEST";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        File appsDir = new File("/data/app");

        String[] files = appsDir.list();

        for (int i = 0 ; i < files.length ; i++ ) {
            Log.d(TAG, "File: "+files[i]);

        }
    }

Es listet die apks in meiner verwurzelten htc-Magie und im Emu auf.

113
Macarse

Sie können den Paket-Manager (pm) über adb Shell verwenden, um Pakete aufzulisten:

adb Shell pm list packages

und anzeigen, wo sich die .apk-Datei befindet:

adb Shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk

Und adb pull, um die apk herunterzuladen.

adb pull data/app/com.king.candycrushsaga-1/base.apk
91
Mariusz Jamro

Wenn Sie nur eine APK-Datei von etwas installieren möchten, das Sie zuvor installiert haben, führen Sie folgende Schritte aus: 

  1. Holen Sie sich AirDroid von Google Play
  2. Greifen Sie mit AirDroid über den Webbrowser Ihres PCs auf Ihr Telefon zu
  3. Gehen Sie zu Apps und wählen Sie die installierte App aus
  4. Klicken Sie auf die Schaltfläche "Herunterladen", um die APK-Version dieser App von Ihrem Telefon herunterzuladen

Sie müssen Ihr Telefon nicht rooten, adb verwenden oder etwas schreiben.

90
Jan Przybylo

Es gibt keinen Standardspeicherort. Sie können den PackageManager jedoch verwenden, um sich über Pakete zu informieren. Die ApplicationInfo-Klasse, die Sie von dort erhalten, enthält verschiedene Informationen zu einem bestimmten Paket: den Pfad zu seinem .apk, den Pfad zu seinem Datenverzeichnis, den Pfad auf eine Ressource .apk (für vorwärts gesperrte Apps) usw. Beachten Sie, dass Sie möglicherweise die Berechtigung haben, diese Verzeichnisse abhängig von Ihrer Beziehung zu der anderen App zu lesen; Alle Apps können jedoch die Ressource .apk lesen (die auch die eigentliche .apk-App für nicht weitergesperrte Apps ist).

Wenn Sie nur in der Shell herumstochern, befinden sich derzeit nicht weitergesperrte Apps in /data/app/.apk. Der Shell-Benutzer kann eine bestimmte .apk-Datei lesen, das Verzeichnis jedoch nicht auflisten. In einer zukünftigen Version wird die Namenskonvention geringfügig geändert, rechnen Sie also nicht damit, dass sie gleich bleibt. Wenn Sie jedoch den Pfad des .apk vom Paketmanager erhalten, können Sie ihn in der Shell verwenden.

25
hackbod

Vorinstallierte Apps befinden sich normalerweise in/system/app und von Benutzern installierte Apps in/data/app. 

Sie können "adb pull" verwenden, müssen jedoch den vollständigen Pfad der APK-Datei kennen. Auf dem Emulator können Sie eine Verzeichnisliste mit "adb Shell" + "ls" erhalten. Auf einem Android-Gerät ist dies jedoch aus Sicherheitsgründen nicht im Ordner "/ data" möglich. Wie ermitteln Sie den vollständigen Pfad der APK-Datei? 

Sie erhalten eine vollständige Liste aller installierten Apps, indem Sie ein Programm schreiben, das den PackageManager abfragt. Kurzer Code-Ausschnitt unten: 

PackageManager  pm = getPackageManager();
List<PackageInfo> pkginfo_list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
List<ApplicationInfo> appinfo_list = pm.getInstalledApplications(0);
for (int x=0; x < pkginfo_list.size(); x++){             
  PackageInfo pkginfo = pkginfo_list.get(x);
  pkg_path[x] = appinfo_list.get(x).publicSourceDir;  //store package path in array
}

Sie können auch Apps finden, die solche Informationen geben. Es gibt viele davon. Versuchen Sie es hier (AppSender).

17
xmaslatte

Wenn Sie nach dem Pfad einer bestimmten App suchen, können Sie den Fehlerbericht einfach und schnell überprüfen: 

$ adb bugreport | grep 'dir=/data/app' 

Ich weiß nicht, dass dies eine erschöpfende Liste liefert, daher kann es hilfreich sein, die App zuerst auszuführen.

8
tomwhipple

Vom Markt installieren

Es ist das Verhalten des Marktes, ob der apk nach der Installation aufbewahrt werden soll. Google Play behält die apk nach der Installation nicht bei. Andere Marktplätze von Drittanbietern haben möglicherweise unterschiedliche Verhaltensweisen.

Installation von EntwicklungsDebug-Tool (adb, Eclipse, Android Studio) - /

Wenn wir die apk vom Debug-Tool installieren, direkt adb install oder von Eclipse/Android Studio aufrufen, wird die apk in ein öffentliches lesbares und beschreibbares Verzeichnis (normalerweise adb Push) übertragen (/data/local/tmp/). Danach verwendet das Tool den Befehl pm zur Installation und löscht nach der erfolgreichen Installation die temporäre apk in /data/local/tmp/

Wir könnten diese Informationen wie folgt aus der Debug-Ausgabe erhalten.

$ adb install bin/TestApplication.apk 
3155 KB/s (843375 bytes in 0.260s)
    pkg: /data/local/tmp/TestApplication.apk
Success

Wie das System die APK hält

Natürlich muss das System alle apks irgendwo speichern. Es gibt drei Stellen, an denen das System die apks grundlegend auf die verschiedenen apks-Typen einstellt.

  1. für lager app

Diese werden in der Regel vom Hersteller in Geräten ausgeliefert, einschließlich der Kern-App für das Systembetrieb und des Google-Services. Sie finden sie im Verzeichnis /system/app und /system/priv-app.

  1. vom Benutzer installierte App

Die meisten apks fallen in diese Kategorie. Diese APKs werden normalerweise vom Markt oder von adb install ohne -s-Option installiert. Sie finden sie unter dem Verzeichnis /data/app für ein gerootetes Gerät.

  1. app auf SD-Karte

Wenn der apk seinen Installationsort in sdcard mit Android:installLocation="auto" in seinem Manifest aktiviert, kann die App aus dem App-Manager-Menü des Systems auf die sdcard verschoben werden. Diese apks befinden sich normalerweise im sicheren Ordner von sdcard /mnt/sdcard/asec.

Eine andere Möglichkeit, den Installationsort für die SD-Karte zu erzwingen, ist der Befehl adb install -s apk-to-install.apk.

Hinweis: Die Dateien für die vorinstallierte App befinden sich nicht mehr in einer einzigen .apk-Datei. Es gibt einen Ordner mit Dateien für jede vorinstallierte App im Verzeichnis /system/app oder /system/priv-app für die neueste Android-Version.

7
alijandro

Sie können Apps mit ADB ziehen. Sie sind in/data/App /, glaube ich.

adb pull (location on device) (where to save)

Beachten Sie, dass Sie Ihr Telefon rooten müssen, um kopiergeschützte Apps abzurufen.

7
Bryan Denny

Wenn Sie gerootet sind, laden Sie die App Root Explorer herunter. Bester Dateimanager für verwurzelte Benutzer . System/App verfügt über alle standardmäßigen APKs, die mit dem Telefon geliefert wurden, und Data/APK verfügt über alle APKs der installierten Apps. Drücken Sie lange auf die gewünschte Apk (während Sie sich im Root Explorer befinden), rufen Sie den Ordner/sdcard auf und fügen Sie ihn einfach ein.

4
Tanzer

Verwenden Sie diese Option, um alle .apks unter/data/app/aufzulisten.

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
3
gilm
  • daten/App
  • system/App
  • system/priv-app
  • mnt/asec (bei Installation in SD-Karte)

Sie können die .apks von jedem von ihnen ziehen:

adb pull/mnt/asec

3
Ignorante

In/data/app, aber aus Gründen des Kopierschutzes glaube ich nicht, dass Sie darauf zugreifen können.

3
Robby Pond

.apk-Dateien können sich im Verzeichnis/data/app/befinden. Mit ES File Explorer können wir auf diese .APK-Dateien zugreifen.

1
vgokul129

wenn Sie Eclipse goto DDMS und dann den Datei-Explorer verwenden, sehen Sie den Ordner "System/Apps" und die apks sind dort

1
Jawad Amjad

Als ich meine App auf dem Emulator installierte, zeigte sie meine .apk-Datei an 

daten/App Dann habe ich .__ verwendet. ls data/app // um zu sehen, ob es existiert oder nicht

Nachdem Sie Ihre App installiert haben, verwenden Sie einfach ls command vie Shell und prüfen Sie das gewünschte Verzeichnis. Es hängt jedoch davon ab, welche Art von Anwendung Sie installieren möchten. Ich habe diese Methode verwendet, um Install Zu zeigen, ob etwas falsch ist. 

0
DeAviator

Eine andere Möglichkeit, die apks zu erhalten, die Sie auf einem gerooteten Gerät nicht finden können, ist mit rom tool box

Erstellen Sie eine Sicherungskopie mit dem App-Manager. Wechseln Sie dann zu storage/emulated/appmanager, und überprüfen Sie entweder system app backup oder user app backup .

0
load

Laden Sie den Bluetooth-App-Sender vom Play Store herunter und installieren Sie ihn, um eine apk zu finden. Öffnen Sie nach Abschluss der Installation den Bluetooth-App-Sender. Daraufhin werden alle auf Ihrem Gerät installierten Apps (.apk) angezeigt. Anschließend können Sie die App problemlos über Bluetooth auf Ihren PC übertragen.

0
Prem

Im Gegensatz zu dem, was in der gewählten Antwort steht, benötigen Sie kein root und es ist möglich, die APKs der installierten Apps abzurufen. So habe ich es in meiner App gemacht ( hier ). Beispiel:

List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);

Anschließend können Sie für jedes Element der Liste auf packageInfo.applicationInfo.sourceDir zugreifen. Hierbei handelt es sich um den vollständigen Pfad des APK der installierten App.

0

Nun, ich kam zu diesem Beitrag, weil ich eine App erneut installieren wollte, die mir sehr gut gefallen hat .... Wenn dies Ihr Fall ist, gehen Sie zu Google Play und suchen Sie nach Meine Apps, den Tab Alle und Sie finden eine Möglichkeit zur Neuinstallation eine App, die dir gefallen hat. Ich hatte ein Problem, das ich bei der Suche nach einer App nicht finden konnte, aber es war in Meine Apps vorhanden, sodass ich es in meinem neuen Handy neu installieren konnte.

0
Sergio Abreu