关于android:adb卸载失败

adb uninstall failed

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

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

我正在使用Samsung S2。


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

1
2
3
4
adb root
adb shell
pm list packages
pm uninstall com.android.chrome

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 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

擦除缓存
打开。


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

完成此操作后,您可以使用此命令pm uninstall --user 0 卸载应用程序。 0是root id-这样,您就不需要太root您的设备。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 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 gmail app
pm uninstall --user 0 com.google.android.gms


这不是一个确切的答案,但是如果您由于要安装更新的.apk而希望卸载该应用程序,则可以尝试以下操作:

1
adb install -r yourapp.apk

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


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

  • 亚行外壳
  • 挂载-o rw,重新挂载-t yaffs2 / dev / block / mtdblock3 / system
  • rm / system / app /您的应用
  • rm / data / data /您的应用
  • 删除/data/system/packages.xml中的所有条目
  • 删除/data/system/packages.list中的所有条目
  • 编辑AndroidManifest.xml并摆脱android:sharedUserId =" android.uid.shared"

这需要您自担风险;-|,请先尝试使用仿真器...


似乎您有一个包含隐藏设备管理员的应用,如下所示: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禁用它,也可以通过将意图发送给调用接收方的应用程序来自己执行此操作禁用设备管理员。


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


我发现adb shell pm uninstall 始终如一,而adb uninstall 则不行。


okey我当时处在相同的情况下,我尝试了所有这些操作,但都没有结果。

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

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

您应该会看到正确的应用程序名称。.现在,这个应用程序就可以使用了:

1
adb uninstall com.your-real-app-name

最终,命令再次运行:

1
ionic run android


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

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

您应该得到以下回报:

1
successful

也许您正在尝试卸载作为电话管理员的应用程序。

要能够将其卸载,请转至Seetings>安全性> Phone Administrators。
如果列出了该应用,请取消选中它并确认操作。

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


打开您的应用程序清单,然后首先检查应用程序的软件包。

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

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

adb设备

如果您的设备已列出,请运行:

adb卸载PACKAGE_WRITTEN_IN_MANIFEST


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


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

运行命令" adb -d卸载PACKAGE_NAME"时,出现错误" DELETE_FAILED_INTERNAL_ERROR",但是当我终止模拟器实例时,在卸载过程中得到了"成功"。


您具有apk的名称,而不是程序包名称:
您应该首先知道软件包名称。贴此磁带:

adb shel pm列表包

获得软件包名称后(小心,软件包名称类似于com.intel...。而不是package:com.intel ...),将磁带:

adb shell pm卸载-k" package_name"

和宾果!


可以简单地在错误的情况下键入程序包名称...

我遇到了同样的问题-原来,我在所有小写字母中输入了包名,而实际的包名中包含大写字符。

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

(如果要显式卸载,则可能不希望使用-k保留应用程序数据和高速缓存目录。)


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

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

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

console showcase

完全免责声明:我是开发人员


这对我有用:

这是所有APK的存储目录:

1
cd /system/app

列出它们:

1
ls

选择一个删除。

1
pm install -r .apk

例:

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

我注意到,如果要删除的应用程序正在运行,则会失败,因此请先将其杀死。

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

1
2
$ su
# mount -o remount +rw /


如果您使用Xiomi Device,则需要登录MI帐户。

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


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

删除了/(因此adb shell卸载了com.package.app),并且可以正常工作


确保输入完整的软件包名称和应用程序名称:

1
com.domain.app

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

  • 执行命令:adb -s [设备名称]卸载-k [程序包名称]。
    此命令将保留数据并缓存在设备中,但将从设备中删除该应用程序。
  • 要同时从设备和应用程序中删除数据和缓存,请执行以下命令。
    adb shell pm卸载-k [程序包名称]。
  • 如果显示成功,则说明您的应用已成功卸载"


    我的是三星j7 pro,问题很简单。

    1
    2
    3
    4
    j7y17lte:/system $ pm list packages|grep airtel                                                                                                                                                                                            
    package:com.samsung.android.airtel.stubapp

    j7y17lte:/system $ pm uninstall -k --user 0 com.samsung.android.airtel.stubapp

    请勿在unistall命令中包含单词package


    就我而言,当我首先在调试模式下编译应用程序并随后尝试安装Google签名的应用程序时,经常会遇到此问题。

    这是因为两个应用程序具有相同的程序包名称,但签名不同。
    自从我升级到Android lollypop以来,如果我通过settings \ Apps卸载应用程序,有时甚至会出现此错误。
    如果您有此问题,请检查该应用程序是否已安装在其他用户配置文件中,并在所有用户帐户中将其卸载。


    尝试从"首选项"禁用"即时运行"!
    它为我工作。

    enter image description here