11 votes

Déplacement de l'emplacement d'installation sur un appareil Android 5 Lollipop non rooté

Je possède un Moto G (2e génération) avec Android 5.02 dessus. La carte SD interne fait environ 8 Go et j'ai une carte SD externe avec 16 Go d'espace libre.

Le déplacement de l'application vers SDCARD depuis le menu de l'application la déplace vers sdcard0 qui est la carte SD interne.

Commande adb shell :

pm get-install-location

me donne :

0[auto]

J'ai essayé de définir l'emplacement d'installation via :

pm set-install-location 2

Mais j'obtiens cette erreur :

Erreur: java.lang.SecurityException: Le package android n'appartient pas à 2000

Je pense que cela signifie qu'il y a un problème de permissions root.

Et comme c'est une version de production, en essayant :

adb root

cela me donne :

 adbd ne peut pas s'exécuter en tant que root dans les versions de production

Y a-t-il un moyen de faire en sorte que les applications installent leurs données sur la carte SD externe ?

P.S : Je ne veux pas installer de ROM personnalisée ou de logiciel tiers pour rooter le téléphone.

Éditer : J'ai remarqué que les données des applications étaient stockées dans le dossier /storage/sdcard0/Android, donc j'ai pensé à déplacer ce dossier vers /storage/sdcard1/ et à créer un lien symbolique de cette manière :

ln -s /storage/sdcard1/Android /storage/sdcard0/Android

Cela fonctionnera-t-il ?

Merci.

10voto

GiantTree Points 4016

En termes simples : Vous ne pouvez pas. Du moins pas sans rooter.
Les principales raisons pour lesquelles Android ne vous permet pas d'installer une application sur votre carte SD externe sont les suivantes :

  1. Sécurité : C'est la principale raison de cette restriction. Les systèmes de fichiers de base tels que NTFS ou FAT (n'importe quelle version) ne permettent pas une gestion des permissions similaire à Unix.
    Cela signifie que : toute application serait en mesure d'écrire sur tout fichier sur ce stockage.
    En pensant aux applications malveillantes, elles pourraient remplacer les applications légitimes par des applications fausses/infectées, rendant votre téléphone inutilisable.

  2. Stockage volatile : Votre carte SD externe ne doit pas rester constamment insérée dans votre appareil. Vous pouvez l'éjecter à tout moment, ce qui fait de votre carte SD un mauvais candidat pour un stockage permanent. Considérez les applications s'exécutant à partir de votre carte SD et que vous l'éjectez. Ces applications planteront simplement et toutes les autres applications enregistrées sur votre carte SD disparaîtront également. Vous ne pourrez pas les utiliser à ce moment-là et les données de ces applications sont également affectées par la raison n°1.

0 votes

J'ai une expérience avec Linux donc j'ai envisagé cette approche : j'ai remarqué que l'option de menu de l'application "Déplacer vers la carte SD" créait un dossier appelé Android sur sdcard0 (intérieur) avec des données d'applications à l'intérieur ; est-ce que la création d'un lien symbolique (dans sdcard0) appelé Android vers un dossier appelé Android dans sdcard1 fonctionnera ?

0 votes

Le problème est le suivant : Android ne stocke que les données et les fichiers obb de l'application dans /sdcard/sdcard0/Android. Les applications sont stockées dans un dossier caché appelé .android_secure où même root n'a pas accès (j'ai testé sur mon appareil, vous ne pouvez même pas cd dans ce dossier).

0 votes

En fait, c'est précisément ce dont j'ai besoin! Le principal problème qui me fait réfléchir à cela est les données , surtout avec des jeux lourds.. Les principales applications ne sont pas si grandes par rapport aux données qu'elles ajoutent plus tard. Donc tu penses que ça pourrait marcher?

6voto

Kanellis Points 57

Essentiellement tu le peux! ;)

  • Premièrement, Root ton téléphone!
  • Deuxièmement, Crée une partition secondaire dans ta carte SD (Ext.4) >= 2Go et définis-la comme primaire.
  • Troisièmement, télécharge et installe l'application Link2sd depuis le playstore. Ouvre l'application, et elle te demandera de créer un point de montage vers ta 2ème partition. Sélectionne Oui. Redémarre.

Après le redémarrage, CHAQUE application que tu installeras ira automatiquement sur la carte SD.

Si tu ne sais pas comment créer une partition, cherche un guide sur Google, il y en a plein

0 votes

Voilà en réalité ce que j'essaie d'éviter : installer des logiciels tiers. :-)

4voto

boymc Points 522

Ce fut un long voyage à la recherche d'une réponse ne nécessitant pas de root, mais j'ai fini par :

  1. Déverrouiller mon bootloader

  2. Démarrer sur TWRP sans l'installer :

    fastboot boot recovery.img
  3. Installer SuperSU de Chainfire avec TWRP.

  4. Depuis Terminal Emulator ou le shell de adb:

    su
    pm set-install-location 2
  5. À partir du menu d'une application dans Paramètres > Applications, en appuyant simplement sur Déplacer vers SDCARD le déplace* - ses données et obb - vers la carte SDCARD externe.

  6. Supprimer SuperSU......

Désrootage complet

Mais... je n'ai pas fait ça! 3:)

0voto

Crappy Coding Guy Points 3068

Allez à cette adresse http://developer.android.com/tools/help/shell.html#shellcommands

Android 5 et plus ne prennent pas en charge cette pm get-install-location

Essayez de sauvegarder votre apk et suivez les étapes ci-dessous

adb shell pm install -r -s 

Exemple

adb shell pm install -r -s /storage/sdcard1/base.apk

-r signifie réinstaller l'apk avec les données existantes et -s signifie carte SD

0 votes

"Android 5 et plus ne prend pas en charge cette commande pm get-install-location" -- comment le savez-vous? Essayez ceci: android.googlesource.com/platform/frameworks/base/+/…. C'est pour Android 5.1.1. J'ai le support pour cet argument dans mon Android 5.0.2, 5.1.1 et 6.0.1!

0 votes

Désolé, mais -s est destiné à spécifier sur quel appareil adb doit fonctionner (" -s ").

-1voto

Preston Points 289

Tout d'abord, installez Adbd insecure (téléchargement apk depuis xda-developers).

Une fois installé sur votre appareil, ouvrez-le et cochez la case : "Activer adbd non sécurisé".

Maintenant, vous pouvez changer l'emplacement pour installer vos applications.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X