adb卸载失败

时间:2012-11-23 19:43:12

标签: android adb

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

我需要签名吗? 我是否需要在调试模式下执行某些操作? 或者它取决于版本?

我正在使用三星S2。

24 个答案:

答案 0 :(得分:48)

是的,移动设备管理会带来自己的问题,但我敢打赌'失败'是一个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 /,擦除/缓存并重新启动。现在我有更多的应用程序正在运行,即使在安全的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

擦除缓存   开机。

答案 1 :(得分:31)

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

adb install -r yourapp.apk

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

答案 2 :(得分:19)

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

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

以下是我在huawei p110 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 gmail app
pm uninstall --user 0 com.google.android.gms

答案 3 :(得分:18)

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

  • adb shell
  • 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”

这将由您自己承担风险; - |,首先尝试使用模拟器...

答案 4 :(得分:8)

好像你有一个应用程序,其中包含一个隐藏的设备管理员,如下所示: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禁用它,或者通过将意图发送到调用将禁用设备管理员的接收器的应用程序来自行执行此操作。

答案 5 :(得分:7)

我发现adb shell pm uninstall <package>一致,adb uninstall <package>没有。

答案 6 :(得分:6)

okey我处于相同的情况我尝试了所有这一切而没有结果..最后的答案很接近..我做了以下事情:

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

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

你应该看到应用程序的正确名称..所以现在这个名称正常运行:

adb uninstall com.your-real-app-name

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

ionic run android

答案 7 :(得分:5)

尝试禁用&#34;即时运行&#34;从设置窗口

答案 8 :(得分:3)

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

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

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

adb devices

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

adb uninstall PACKAGE_WRITTEN_IN_MANIFEST

答案 9 :(得分:3)

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

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

您应该得到以下回报:

successful

答案 10 :(得分:2)

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

为了能够卸载它,请转到Seetings&gt;安全&gt;电话管理员。 如果列出了该应用,请取消选中该应用并确认操作。

之后,您应该可以使用应用设置区域或adb。

卸载它

答案 11 :(得分:2)

您必须手动删除应用。得到了设置 - &gt;应用程序管理 - &gt;运行应用程序,点按它,您可以从那里删除,停止应用程序。

答案 12 :(得分:1)

您拥有apk的名称而不是包名称: 您应该首先知道包名称。 Fot这个录像带:

adb shel pm list packages

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

adb shell pm uninstall -k&#34; package_name&#34;

和宾果!

答案 13 :(得分:1)

这可能就像在错误的情况下输入包名一样简单......

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

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

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

答案 14 :(得分:1)

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

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

你可以使用通配符并支持多个设备,也有比vanilla ADB更好的错误处理(当然在后台使用它)。将在您的平台上运行。

console showcase

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

答案 15 :(得分:1)

这对我有用:

这是存储所有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


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

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

$ su
# mount -o remount +rw /

答案 16 :(得分:0)

在我的情况下,当我第一次在调试模式下对应用程序进行压缩并稍后尝试安装google signed app时,我经常会遇到此问题。

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

答案 17 :(得分:0)

我有一个运行模拟器和连接设备的实例。

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

答案 18 :(得分:0)

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

  1. 执行命令:adb -s [devicename] uninstall -k [packagename]。 此命令将保留设备中的数据和缓存,但会从设备中删除该应用程序。
  2. 要从设备中删除数据和缓存以及应用程序,请执行以下命令。 adb shell pm uninstall -k [packagename]。
  3. 如果显示成功,则您的应用已成功卸载&#39;

答案 19 :(得分:0)

使用adb shell卸载com.package.app /

时出现故障

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

答案 20 :(得分:0)

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

com.domain.app

答案 21 :(得分:0)

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

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

答案 22 :(得分:0)

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

enter image description here

答案 23 :(得分:-1)

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

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