Ne Android garder le.les fichiers apk? si oui, où?
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.
Si vous voulez juste obtenir un fichier APK de quelque chose que vous avez déjà installé, faites ceci:
- obtenir AirDroid de Google Play
- Accédez à votre téléphone en utilisant AirDroid à partir de votre navigateur Web PC
- Allez à Applications et sélectionnez l'application installée
- 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.
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
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.
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).
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.
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.
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.
- 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
.
- 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.
- 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.
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.
Dans / data / app mais pour la protection contre la copie, Je ne pense pas que vous puissiez y accéder.
Utilisez ceci pour tout lister .apk dans /data/app/
adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
- 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
Si vous utilisez Eclipse Goto DDMS, puis l'Explorateur de fichiers, vous verrez le dossier System / Apps et les APK sont là
.les fichiers apk peuvent être situés sous/data/ App / directory. En utilisant ES File Explorer nous pouvons y accéder .Les fichiers APK.
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.
Une Autre façon d'obtenir le apk
s 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.
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.
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.
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;)