77

我正在编写一些示例应用程序。
调试这些应用程序后,我在设备的应用程序管理中看不到卸载按钮。
当我执行 adb 卸载时,它总是说Failure without any reason.
In DDMS I saw that my apk is stored in /data/app/com.k2g.leaveDemo-1.apk.
我不确定我错过了什么。
我总是必须重置我的设备才能摆脱这些应用程序:(

我需要签什么吗?
我需要在调试模式下做些什么吗?
还是取决于版本?

我正在使用三星 S2。

4

23 回答 23

85

我假设您developer mode在您的 android 设备上启用并且您已连接到您的设备并且您具有 shell 访问权限 ( adb shell)。

完成此操作后,您可以使用此命令卸载应用程序pm uninstall --user 0 <package.name>。其中0为Android系统主用户ID。这样你就不需要root你的设备了。

这是我在华为 p10 lite 设备上的操作示例。

# gain shell access
$ adb shell

# check who you are
$ whoami
shell

# obtain user id
$ id
uid=2000(shell) gid=2000(shell)

# list 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

# uninstall google play services (warning: take backup first!)
pm uninstall --user 0 com.google.android.gms
于 2018-01-03T19:22:27.420 回答
54

是的,移动设备管理会带来自己的问题,但我敢打赌“失败”是 dos2unix 问题。在我的 Linux 机器上,adb 正在附加一个导致“失败”的 DOS 换行符,因为卸载认为 CR 字符是包名称的一部分。还要从 package-1.apk 文件名的末尾删除“-1.apk”。

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

就我而言,我有一部处于永久“安全模式”的手机,因此只有 /system/app/ 下的应用程序才有机会运行。所以我安装它们以复制 .apk 文件,然后批量卸载并复制到 /system/app/,擦除 /cache 并重新启动。现在,即使在安全的 mdoe 中,我也有更多的应用程序在运行。

# adb root
# pm list packages -3 > /root/bulkuninstall.txt
# vi /root/bulkuninstall.txt  and check ^M characters at end of each line.   
   If ^M, then must run dos2unix /root/bulkuninstall.txt.  
   Remove '-1.apk' using vi search and replace:  
        :%s/-1\.apk//g 
   Or sed...

# cp /data/app/* /storage/sdcard1/APKs/
# for f in `cat /root/bulkuninstall.txt`; do echo $f; pm uninstall $f; done;
# 
# echo Now remount system and copy the APK files to /system/app/
# mount | grep system
# mount -o remount,rw /dev/block/(use block device from previous step)  /system 
# cp /storage/sdcard1/APKs/* /system/app/
# reboot

擦除缓存电源。

于 2013-03-11T04:53:34.653 回答
38

这不是一个确切的答案,但如果您因为要安装更新的 .apk 而想要卸载该应用程序,您可以试试这个:

adb install -r yourapp.apk

-r选项告诉 adb 重新安装应用程序

于 2014-02-07T17:37:06.593 回答
20

如果它是 Android 内部应用程序,您可能需要:

  • 亚行外壳
  • mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
  • rm /system/app/your_app
  • rm /data/data/your_app
  • 删除 /data/system/packages.xml 中的所有条目
  • 删除 /data/system/packages.list 中的所有条目
  • 编辑 AndroidManifest.xml 并去掉 android:sharedUserId="android.uid.shared"

这需要您自担风险;-|,请先在模拟器中尝试...

于 2013-06-21T16:56:41.473 回答
15

只需运行 ADB 并使用以下命令:

adb shell pm uninstall -k --user 0 <package name>

你应该得到这个回报:

successful
于 2019-08-11T22:33:54.107 回答
10

好的,我处于同样的情况,我尝试了所有这些都没有结果..最后一个答案很接近..我做了以下事情:

为了获得正确的包裹名称,请执行以下操作:

adb shell pm list packages | grep "name of your app here"

你应该看到你的应用程序的正确名称.. 所以现在这个可以工作了:

adb uninstall com.your-real-app-name

最后命令运行再次起作用:

ionic run android
于 2016-07-14T15:45:15.003 回答
9

我发现它adb shell pm uninstall <package>始终如一地工作,哪里adb uninstall <package>没有。

于 2015-02-26T19:30:42.337 回答
9

好像您有一个应用程序,其中包含像这样的隐藏设备管理员:http ://www.symantec.com/security_response/writeup.jsp?docid=2013-060411-4146-99

当您首先禁用设备管理员时,您只能卸载此类应用程序。您可以使用https://play.google.com/store/apps/details?id=com.trendmicro.mtrt.hiddenDAcleaner禁用它,或者通过将意图发送到调用接收器的应用程序来自行执行禁用设备管理员。

于 2013-06-24T09:53:09.160 回答
7

尝试从设置窗口禁用“即时运行”

于 2017-08-19T13:22:59.043 回答
3

打开您的应用程序清单并首先检查应用程序的包。

之后,请确保您的设备设置为调试器模式。

检查 ADB 是否可以与您的设备交互:

亚行设备

如果列出了您的设备,则运行:

adb 卸载 PACKAGE_WRITTEN_IN_MANIFEST

于 2012-11-23T19:52:30.600 回答
3

也许您正在尝试卸载一个电话管理员应用程序。

要能够将其卸载,请转至“设置”>“安全”>“电话管理员”。如果列出了该应用程序,请取消选中它并确认操作。

之后,您应该可以使用应用程序设置区域或 adb 将其卸载。

于 2016-05-05T13:14:27.240 回答
2

您应该必须手动删除应用程序。进入设置->应用程序管理->运行应用程序,点击它,您可以从那里删除、停止应用程序。

于 2012-11-23T19:46:22.770 回答
2

这对我有用:

这是存储所有 APK 的目录:

cd /system/app

列出它们:

ls

选择一个来删除。

pm install -r <app_to_remove>.apk

例子:

$ pm install -r Google-Play-services.apk
        pkg: Google-Play-services.apk
Success


我注意到如果我要删除的应用程序正在运行,我会失败,所以先杀了它。

另外,我注意到您可能必须运行(在有根设备上):

$ su
# mount -o remount +rw /
于 2017-03-11T14:25:10.643 回答
1

如果您通过 adb 卸载有问题,我可以推荐以下工具:

https://github.com/patrickfav/uber-adb-tools

您可以使用通配符并支持多种设备,还具有比普通 ADB 更好的错误处理能力(但当然在后台使用它)。将在您的平台上运行。

控制台展示

完全免责声明:我是开发者

于 2016-09-22T07:34:05.243 回答
1

就我而言,当我第一次在调试模式下编译应用程序然后尝试安装谷歌签名的应用程序时,我经常遇到这个问题。

那是因为这两个应用程序具有相同的包名称但不同的签名。自从我升级到 Android 棒棒糖后,如果我通过设置\应用程序卸载应用程序,有时我什至会收到此错误。如果您遇到此问题,请检查该应用程序是否安装在其他用户配置文件中并在所有用户帐户中卸载它。

于 2015-10-02T20:45:26.890 回答
0

确保输入带有应用程序名称的完整包名称:

com.domain.app
于 2015-06-06T13:43:49.593 回答
0

我有一个正在运行的模拟器实例并连接了一个设备。

当我运行命令“adb -d uninstall PACKAGE_NAME”时,我收到错误“DELETE_FAILED_INTERNAL_ERROR”,但是当我杀死模拟器实例时,我在卸载过程中获得了“成功”。

于 2015-09-29T22:30:13.600 回答
0

您可以按照以下步骤通过命令提示符从设备中卸载应用程序。

  1. 执行命令:adb -s [设备名] 卸载 -k [包名]。此命令将保留设备中的数据和缓存,但将从设备中删除应用程序。
  2. 要与应用程序一起从设备中删除数据和缓存,请执行以下命令。adb shell pm uninstall -k [包名]。

如果它显示成功,您的应用程序已成功卸载'

于 2017-04-21T05:35:21.960 回答
0

它可以像在错误的情况下输入包名称一样简单......

我遇到了同样的问题 - 当实际的包名称包含大写字符时,我输入的包名称全部小写。

adb uninstall -k <packageName - eg. com.test.app>

(如果您明确卸载,您可能不想要保留应用程序数据和缓存目录的 -k 。)

于 2016-07-23T08:43:44.930 回答
0

您有 apk 的名称而不是包名称:您应该首先知道包名称。给这个磁带:

adb shell pm list packages

一旦你有了包名(小心,包名就像 com.intel.... 而不是 package:com.intel...),磁带:

adb shell pm 卸载 -k "package_name"

和宾果游戏!

于 2016-07-08T15:24:49.387 回答
0

如果您使用小米设备,则需要登录小米帐号。

成功注册后,您可以通过 ADB 安装和卸载。

于 2018-08-08T11:18:02.240 回答
-1

尝试从首选项中禁用“即时运行”!它对我有用。

在此处输入图像描述

于 2019-01-02T15:15:45.000 回答
-1

使用 adb shell uninstall com.package.app/ 时出现故障

删除 / (所以 adb shell 卸载 com.package.app)并且它可以工作

于 2015-07-02T21:52:25.857 回答