web-dev-qa-db-fra.com

Android conserve-t-il les fichiers .apk? si oui où?

Après avoir installé une application à partir du Marketplace, Android conserve-t-il le fichier .apk?

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

170
Gubatron

Les applications préinstallées sont dans le dossier /system/app. Les applications installées par l'utilisateur sont en /data/app. Je suppose que vous ne pouvez pas y accéder à moins que vous n'ayez un téléphone enraciné .

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 ne liste les apks dans mon magie de HTC enracinée et dans l'ému.

113
Macarse

Vous pouvez utiliser le gestionnaire de packages (pm) sur adb Shell pour répertorier les packages:

adb Shell pm list packages

et d'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
91
Mariusz Jamro

Si vous voulez juste obtenir un fichier APK de quelque chose que vous avez déjà installé, procédez comme suit: 

  1. Obtenez AirDroid à partir de Google Play
  2. Accédez à votre téléphone en utilisant AirDroid à partir du navigateur Web de votre PC
  3. Allez dans les 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 depuis 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.

90
Jan Przybylo

Il n'y a pas d'emplacement standard, mais vous pouvez utiliser PackageManager pour en savoir plus sur les packages. La classe ApplicationInfo que vous pouvez y obtenir contient diverses informations sur un package particulier: le chemin d'accès à son fichier .apk, le chemin de son répertoire de données, le chemin vers une ressource uniquement .apk (pour les applications verrouillées en aval), etc. Notez que vous pouvez ou non avoir la permission 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 également le véritable .apk pour une application non verrouillée en avant).

Si vous vous contentez de fouiller dans l'environnement de ligne de commande, les applications actuellement non verrouillées sont situées dans /data/app/.apk. L’utilisateur Shell peut lire un fichier .apk spécifique, mais il ne peut pas répertorier le répertoire. Dans une version ultérieure, la convention de nommage sera légèrement modifiée. Ne comptez donc pas sur sa conservation, mais si vous obtenez le chemin d'accès du fichier .apk auprès du gestionnaire de packages, vous pourrez l'utiliser dans le shell.

25
hackbod

Les applications préinstallées se trouvent généralement dans/system/app et les applications installées par l'utilisateur 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 calculez-vous le chemin complet du fichier APK? 

Vous pouvez obtenir la liste complète de toutes les applications installées en écrivant un programme qui interroge 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 une telle information. Il y en a beaucoup. Essayez celui-ci (AppSender).

17
xmaslatte

Si vous recherchez le chemin d'une application spécifique, une solution simple et rapide consiste simplement à grep le rapport de bogue: 

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

Je ne sais pas si cela fournira une liste exhaustive, il peut donc être utile de lancer l'application en premier.

8
tomwhipple

Installer depuis le marché

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

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

Lorsque nous installons l'apk à partir de l'outil de débogage, appelons directement adb install ou à partir du studio Eclipse/Android, l'apk sera transféré (adb Push) dans 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 la réussite de l'installation. 

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 apks quelque part. Le système dispose de trois emplacements pour garder l'apks de base sur les différents types d'apks.

  1. pour stock app

Ceux-ci sont généralement expédiés par périphérique, y compris l'application principale pour le système en cours d'exécution et le service Google. Vous les trouverez dans les répertoires /system/app et /system/priv-app.

  1. application installée par l'utilisateur

La plupart des apks entrent dans cette catégorie. Ces apks sont généralement installés à partir du marché par les utilisateurs ou par l'option adb install sans l'option -s. Vous pouvez les trouver dans le répertoire /data/app pour un périphérique enraciné.

  1. app 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 du gestionnaire d'applications du système. Ces apks 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 sur sdcard est d'utiliser la commande adb install -s apk-to-install.apk.

Remarque: les fichiers de l'application pré-installée ne figurent plus dans un seul fichier .apk. Il existe un dossier contenant les fichiers de chaque application préinstallée dans le répertoire /system/app ou /system/priv-app de la dernière version d'Android.

7
alijandro

Vous pouvez extraire 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 extraire les applications protégées contre la copie.

7
Bryan Denny

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 possède tous les apks fournis par défaut avec le téléphone et data/apk contient tous les apks des applications que vous avez installées. Il suffit d'appuyer longuement sur l'apk que vous voulez (dans Root Explorer), accédez à votre dossier/sdcard et collez-le.

4
Tanzer

Utilisez ceci pour lister tous les .apks sous/data/app /

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
3
gilm
  • données/application
  • système/application
  • système/priv-app
  • mnt/asec (si installé dans sdcard)

Vous pouvez tirer les .apks de n’importe lequel d’entre eux:

adb pull/mnt/asec

3
Ignorante

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

3
Robby Pond

Les fichiers .apk peuvent être situés dans/data/app/directory. En utilisant ES File Explorer nous pouvons accéder à ces fichiers .APK.

1
vgokul129

si vous utilisez Eclipse, allez à DDMS, puis dans File Explorer, vous verrez le dossier System/Apps et les apks sont là.

1
Jawad Amjad

Lorsque j'ai installé mon application sur un émulateur, le fichier .apk figurant dans 

données/application Puis j'ai utilisé ls data/app // pour voir s’il existe ou ne pas

Après avoir installé votre application, utilisez simplement la commande ls avec 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 Indiquer si quelque chose ne va pas. 

0
DeAviator

Un autre moyen d’obtenir les apks que vous ne pouvez pas trouver, sur un périphérique enraciné, est avec rom tool box

Effectuez une sauvegarde à l'aide du gestionnaire d'applications, puis allez à storage/emulated/appmanager et vérifiez soit sauvegarde de l'application système ou sauvegarde de l'application utilisateur .

0
load

Pour trouver une apk, téléchargez et installez Bluetooth App Sender à partir du Play Store. Une fois l'installation terminée, ouvrez Bluetooth App Sender. Il affichera toutes les applications (.apk) installées sur votre appareil, puis vous pourrez facilement transférer l'application sur votre PC via Bluetooth.

0
Prem

Contrairement à ce qui est écrit dans la réponse choisie, vous n’avez pas besoin de root et il est possible d’obtenir les APK des applications installées, c’est ce que j’ai fait sur mon application ( here ). 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 d'accès complet de l'APK de l'application installée.

0

Eh bien, je suis venu à ce billet parce que je voulais réinstaller une application qui me plaisait beaucoup . Si tel est votre cas, il suffit d'aller sur Google Play et de rechercher Mes applications, l'onglet Tous, et vous trouverez le moyen de le réinstaller. une application que vous avez aimé. J'ai rencontré un problème que je ne pouvais pas trouver en recherchant une application, mais c'était là dans Mes applications pour pouvoir le réinstaller dans mon nouveau mobile;)

0
Sergio Abreu