106 votes

Adb désinstallation a échoué

Je suis en train d'écrire quelques applications d'exemple.
Après avoir débogué ces applications, je ne vois pas de bouton de désinstallation dans la gestion des applications de mon appareil.
Lorsque je fais adb uninstall, cela me dit toujours Échec sans raison apparente.
Dans DDMS, j'ai vu que mon apk est stocké dans /data/app/com.k2g.leaveDemo-1.apk.
Je ne suis pas sûr de ce que je manque.
Je dois toujours réinitialiser mon appareil pour me débarrasser de ces applications :(

Dois-je signer quelque chose?
Dois-je faire quelque chose en mode débogage?
Ou cela dépend-il de la version?

Je suis en train d'utiliser un Samsung S2.

134voto

Lukasz Dynowski Points 1441

Je suppose que vous avez activé le mode développeur sur votre appareil Android. Ensuite, vous l'avez connecté en mode 'débogage USB'. Enfin, vous avez installé adb. Une fois que cela est fait, vous pouvez désinstaller l'application avec ces commandes :

  • adb uninstall
  • pm uninstall --user 0 .

Je recommande d'utiliser la première commande, adb uninstall. Cependant, si vous optez pour pm, alors 0 est l'ID de l'utilisateur principal dans le système Android. Avec l'une ou l'autre méthode, vous n'avez pas besoin de rooter votre appareil.

Voici un exemple de la façon dont j'ai supprimé les logiciels superflus de mes appareils Huawei et Samsung.

Désinstaller avec ADB

# désinstaller gmail
$ adb uninstall com.google.android.gms

Désinstaller avec le gestionnaire de packages android

# obtenir l'accès shell
$ adb shell

# vérifiez qui vous êtes
$ whoami
shell

# obtenir l'identifiant utilisateur
$ id
uid=2000(shell) gid=2000(shell)

# lister les packages
$ pm list packages | grep google                                                                                                                                                         
package:com.google.android.youtube
package:com.google.android.ext.services
package:com.google.android.googlequicksearchbox
package:com.google.android.onetimeinitializer
package:com.google.android.ext.shared
package:com.google.android.apps.docs.editors.sheets
package:com.google.android.configupdater
package:com.google.android.marvin.talkback
package:com.google.android.apps.tachyon
package:com.google.android.instantapps.supervisor
package:com.google.android.setupwizard
package:com.google.android.music
package:com.google.android.apps.docs
package:com.google.android.apps.maps
package:com.google.android.webview
package:com.google.android.syncadapters.contacts
package:com.google.android.packageinstaller
package:com.google.android.gm
package:com.google.android.gms
package:com.google.android.gsf
package:com.google.android.tts
package:com.google.android.partnersetup
package:com.google.android.videos
package:com.google.android.feedback
package:com.google.android.printservice.recommendation
package:com.google.android.apps.photos
package:com.google.android.syncadapters.calendar
package:com.google.android.gsf.login
package:com.google.android.backuptransport
package:com.google.android.inputmethod.latin

# désinstaller les services google play (attention : faire une sauvegarde d'abord!)
pm uninstall --user 0 com.google.android.gms

58voto

rjt Points 992

Oui, la gestion des appareils mobiles apporterait ses propres problèmes, mais je parie que 'Échec' est un problème dos2unix. Sur mes machines Linux, adb ajoute un retour à la ligne DOS ce qui provoque un 'Échec' car la désinstallation pense que le caractère CR fait partie du nom du package. Enlevez également '-1.apk' à la fin du nom du fichier package-1.apk.

adb root
adb shell
pm list packages
pm uninstall com.android.chrome

Dans mon cas, j'ai un téléphone en mode 'Safe mode' permanent donc seules les applications sous /system/app/ ont une chance de fonctionner. Donc je les installe pour récupérer les fichiers .apk, puis je désinstalle en masse et copie vers /system/app/, je vide le /cache et redémarre. Maintenant j'ai plus d'applications en cours d'exécution même en mode sécurisé.

# adb root
# pm list packages -3 > /root/bulkuninstall.txt
# vi /root/bulkuninstall.txt et vérifiez les caractères ^M à la fin de chaque ligne.
   Si ^M, alors il faut exécuter dos2unix /root/bulkuninstall.txt.
   Enlevez '-1.apk' en utilisant la recherche et le remplacement vi :
        :%s/-1\.apk//g
   Ou sed...

# cp /data/app/* /storage/sdcard1/APKs/
# for f in `cat /root/bulkuninstall.txt`; do echo $f; pm uninstall $f; done;
# 
# echo Maintenant remontez le système et copiez les fichiers APK vers /system/app/
# mount | grep system
# mount -o remount,rw /dev/block/(utilisez le périphérique de bloc de l'étape précédente) /system
# cp /storage/sdcard1/APKs/* /system/app/
# reboot

effacer le cache démarrer.

39voto

edg Points 649

Ceci n'est pas une réponse exacte, mais si vous cherchez à désinstaller l'application car vous avez un fichier .apk mis à jour à installer, vous pouvez essayer ceci:

adb install -r votrefichier.apk

L'option -r indique à adb de réinstaller l'application

26voto

Matthew Farmer Points 151

Il suffit d'exécuter ADB et d'utiliser la commande suivante :

adb shell pm uninstall -k --user 0 

Et vous devriez obtenir ce retour :

successful

24voto

powder366 Points 613

Si c'est une application interne Android, vous devrez peut-être :

  • adb shell
  • mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
  • rm /system/app/your_app
  • rm /data/data/your_app
  • supprimer toutes les entrées dans /data/system/packages.xml
  • supprimer toutes les entrées dans /data/system/packages.list
  • éditer AndroidManifest.xml et vous débarrasser de android:sharedUserId="android.uid.shared"

Cela se fait à vos propres risques;-|, essayez d'abord sur l'émulateur...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X