Ne Android garder le.les fichiers apk? si oui, où?

Après android installe une application sur le marché, garde-t-il le .fichier apk?

Existe-t-il un emplacement standard où Android conserverait de tels fichiers?

168
demandé sur Gubatron 2010-03-24 16:26:11

19 réponses

Les applications préinstallées se trouvent dans le dossier /system/app. Les applications installées par l'utilisateur sont dans /data/app. Je suppose que vous ne pouvez pas accéder à moins d'avoir un téléphone enraciné. Je n'ai pas de téléphone enraciné ici mais essayez ce code:

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]);

        }
    }

Il répertorie les APK dans mon HTC Magic enraciné et dans l'emu.

111
répondu Macarse 2018-02-13 19:40:48

Si vous voulez juste obtenir un fichier APK de quelque chose que vous avez déjà installé, faites ceci:

  1. obtenir AirDroid de Google Play
  2. Accédez à votre téléphone en utilisant AirDroid à partir de votre navigateur Web PC
  3. Allez à Applications et sélectionnez l'application installée
  4. Cliquez sur le bouton" Télécharger " pour télécharger la version APK de cette application à partir de votre téléphone

Vous n'avez pas besoin de rooter votre téléphone, d'utiliser adb ou d'écrire quoi que ce soit.

87
répondu Jan Przybylo 2013-12-27 06:04:16

Vous pouvez utiliser le gestionnaire de paquets (pm) sur adb shell pour lister les paquets:

adb shell pm list packages

Et pour afficher où se trouve le fichier .apk:

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

Et adb pull pour télécharger l'apk.

adb pull data/app/com.king.candycrushsaga-1/base.apk
86
répondu Mariusz Jamro 2015-03-15 11:53:16

Il n'y a pas d'emplacement standard, mais vous pouvez utiliser PackageManager pour en savoir plus sur les paquets et la classe ApplicationInfo que vous pouvez obtenir à partir de là contient diverses informations sur un paquet particulier: le chemin d'accès à son .apk, le chemin d'accès à son répertoire de données, le chemin d'accès à une ressource uniquement .apk (pour les applications verrouillées avant), etc. Notez que vous pouvez ou non avoir l'autorisation de lire ces répertoires en fonction de votre relation avec l'autre application; cependant, toutes les applications sont capables de lire la ressource .apk (qui est aussi le vrai .apk pour l'application non verrouillée).

Si vous ne faites que fouiller dans le shell, les applications actuellement non verrouillées se trouvent dans / data / app/.apk. L'utilisateur shell peut lire un spécifique .apk, bien qu'il ne puisse pas lister le répertoire. Dans une version future, la convention de nommage sera légèrement modifiée, alors ne comptez pas sur elle pour rester la même, mais si vous obtenez le chemin de la .apk du gestionnaire de paquets alors vous pouvez l'utiliser dans le shell.

25
répondu hackbod 2010-03-24 17:11:14

Les applications préinstallées sont généralement dans / system / app et les applications installées par l'utilisateur sont dans / data / app.

Vous pouvez utiliser "adb pull" , mais vous devez connaître le chemin complet du fichier APK. Sur l'émulateur, vous pouvez obtenir une liste de répertoires en utilisant "adb shell" + "ls". Mais sur un appareil android, vous ne pourrez pas le faire dans le dossier" /data " pour des raisons de sécurité. Alors, comment trouvez-vous le chemin complet du fichier APK?

Vous pouvez obtenir une liste complète de toutes les applications installées en écrivant un programme qui interroge le PackageManager. Extrait de code court ci-dessous:

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
}

Vous pouvez également trouver des applications qui donneront ces informations. Il y en a beaucoup. essayez celui-ci (AppSender).

17
répondu xmaslatte 2011-05-24 14:42:37

Si vous cherchez le chemin d'une application spécifique, une solution rapide et sale est de simplement grep le rapport de bogue:

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

Je ne sais pas que cela fournira une liste exhaustive, il peut aider à exécuter l'application en premier.

8
répondu tomwhipple 2012-08-15 17:44:02

Vous pouvez tirer des applications avec ADB. Ils sont dans /data/App/, je crois.

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

Notez que vous devez rooter votre téléphone pour tirer des applications protégées contre la copie.

7
répondu Bryan Denny 2012-10-14 07:08:05

Installer à partir de marketplace

C'est le comportement du marché s'il faut conserver l'apk après l'installation. Google play ne conserve pas l'apk après l'installation. D'Autres marchés tiers peuvent avoir des comportements différents.

Installer à partir de l'outil de développement/débogage (adb, eclipse, Android studio)

Lorsque nous installons l'apk à partir de l'outil de débogage, invoquons directement adb install ou depuis eclipse / android studio, l'apk sera transféré (adb push) vers un répertoire public en lecture et en écriture, généralement /data/local/tmp/. Après cela, l'outil utilisera la commande pm pour installer, il supprimera l'apk temporaire dans /data/local/tmp/ après l'installation réussie.

Nous pourrions obtenir ces informations à partir de la sortie de débogage comme suit.

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

Comment le système conserve l'apk

Bien sûr, le système doit stocker tous les APK quelque part. Il y a trois endroits pour le système de garder les apks de base sur les différents types de apk.

  1. pour l'application boursière

Ceux-ci sont généralement expédiés dans l'appareil par fabrication, y compris l'application de base pour le fonctionnement du système et le service google, vous pouvez les trouver sous le répertoire /system/app et /system/priv-app.

  1. application installée par l'utilisateur

La Plupart des apk entrent dans cette catégorie. Ces fichiers APK sont généralement installés à partir de marketplace par les utilisateurs ou par adb install sans option -s. Vous pouvez les trouver sous le répertoire /data/app pour une racine appareil.

  1. application sur sdcard

Si l'apk active son emplacement d'installation dans sdcard avec android:installLocation="auto" dans son manifeste, l'application peut être déplacée vers sdcard à partir du menu Gestionnaire d'applications du système. Ces APK sont généralement situés dans le dossier sécurisé de sdcard /mnt/sdcard/asec.

Une autre façon de forcer l'emplacement d'installation à sdcard utilise la commande adb install -s apk-to-install.apk.

À noter que les fichiers de l'application préinstallée ne sont plus dans un seul fichier .apk. Il y a un dossier contenant des fichiers pour toutes les applications pré-installées dans le répertoire /system/app ou /system/priv-app pour la nouvelle version android.

7
répondu alijandro 2017-08-08 22:32:28

Si vous êtes enraciné, téléchargez L'application Root Explorer. Meilleur gestionnaire de fichiers pour les utilisateurs enracinés. Quoi qu'il en soit, System/app a tous les APK par défaut fournis avec le téléphone, et data/apk a tous les Apk des applications que vous avez installées. Appuyez longuement sur l'apk que vous voulez (dans Root Explorer), accédez à votre dossier / sdcard et collez-le.

4
répondu Tanzer 2011-03-01 01:49:41

Dans / data / app mais pour la protection contre la copie, Je ne pense pas que vous puissiez y accéder.

3
répondu Robby Pond 2010-03-24 13:32:15

Utilisez ceci pour tout lister .apk dans /data/app/

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
3
répondu gilm 2013-01-31 09:48:58
  • Données / app
  • Système / application
  • système / priv-app
  • mnt/asec (lorsqu'il est installé dans sdcard)

Vous pouvez tirer le .apks de l'un d'eux:

ADB pull/mnt / asec

3
répondu Ignorante 2015-07-16 17:24:23

Si vous utilisez Eclipse Goto DDMS, puis l'Explorateur de fichiers, vous verrez le dossier System / Apps et les APK sont là

1
répondu Jawad Amjad 2011-10-28 12:30:42

.les fichiers apk peuvent être situés sous/data/ App / directory. En utilisant ES File Explorer nous pouvons y accéder .Les fichiers APK.

1
répondu vgokul129 2015-08-31 13:18:17

Lorsque j'ai installé mon application sur l'émulateur ,il a montré mon.fichier apk dans

Données / app Ensuite, j'ai utilisé ls data / app / / pour voir si elle existe ou pas

Après avoir installé votre application, utilisez simplement ls command vie shell et vérifiez le répertoire souhaité, mais cela dépend du type d'application que vous essayez d'installer. J'ai utilisé cette méthode pour Installer Si quelque chose est faux.

0
répondu DeAviator 2010-06-10 21:11:52

Une Autre façon d'obtenir le apks vous ne pouvez pas trouver, sur un dispositif enracinée est avec rom tool box.

Faire une sauvegarde à l'aide de gestionnaire d'application, puis aller à storage/emulated/appmanager et cocher la case app système de sauvegarde ou utilisateur app sauvegarde.

0
répondu load 2014-04-26 04:44:12

Pour trouver un apk, téléchargez et installez L'expéditeur de L'application Bluetooth sur le Play store. Une fois l'installation terminée, ouvrez L'expéditeur de L'application Bluetooth. Il montrera toutes les applications (.apk) installées sur votre appareil, puis vous pouvez facilement transférer l'application sur votre PC via Bluetooth.

0
répondu Prem 2014-07-25 12:19:54

Par opposition à ce qui est écrit sur la réponse choisie, vous n'avez pas besoin de root et il est possible d'obtenir les Apk des applications installées, ce qui est la façon dont je l'ai fait sur mon application (tiens). Exemple:

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

Ensuite, pour chacun des éléments de la liste, vous pouvez accéder à packageInfo.applicationInfo.sourceDir , qui est le chemin complet de L'APK de l'application installée.

0
répondu android developer 2015-05-05 18:20:25

Eh bien, je suis venu à ce poste parce que je voulais réinstaller une application que j'aimais beaucoup. Si tel est votre cas, il suffit d'aller à Google Play, et recherchez mes applications, l'onglet Tous, et vous trouverez un moyen de réinstaller une application que vous avez aimé. J'ai fait face à un problème que je ne pouvais pas trouver en recherchant une application, mais il était là dans Mes applications afin que je puisse réinstaller dans mon nouveau mobile;)

0
répondu Sergio Abreu 2016-07-26 03:08:25