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?
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.
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
Wenn Sie nur eine APK-Datei von etwas installieren möchten, das Sie zuvor installiert haben, führen Sie folgende Schritte aus:
Sie müssen Ihr Telefon nicht rooten, adb
verwenden oder etwas schreiben.
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.
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).
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.
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.
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
.
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.
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.
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.
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.
Verwenden Sie diese Option, um alle .apks unter/data/app/aufzulisten.
adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
Sie können die .apks von jedem von ihnen ziehen:
adb pull/mnt/asec
In/data/app, aber aus Gründen des Kopierschutzes glaube ich nicht, dass Sie darauf zugreifen können.
.apk-Dateien können sich im Verzeichnis/data/app/befinden. Mit ES File Explorer können wir auf diese .APK-Dateien zugreifen.
wenn Sie Eclipse goto DDMS und dann den Datei-Explorer verwenden, sehen Sie den Ordner "System/Apps" und die apks sind dort
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.
Eine andere Möglichkeit, die apk
s 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 .
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.
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.
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.