adb卸载失败

use*_*385 45 android adb

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

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

我正在使用三星S2.

rjt*_*rjt 50

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

adb root
adb shell
pm list packages
pm uninstall com.android.chrome
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我有一个永久"安全模式"的手机,所以只有/ 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
Run Code Online (Sandbox Code Playgroud)

擦除缓存电源.


edg*_*edg 34

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

adb install -r yourapp.apk
Run Code Online (Sandbox Code Playgroud)

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

  • 它没有回答问题,但这就是我最终想要的。 (3认同)
  • 我收到以下错误消息:包com.google.android.GoogleCamera签名与以前安装的版本不匹配;无视! (2认同)

Luk*_*ski 32

我假设您developer mode在Android设备上启用并且您已连接到您的设备并且您具有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
Run Code Online (Sandbox Code Playgroud)

  • `adb shell pm uninstall --user 0 com.facebook.&lt;allthebloatware&gt;` (5认同)
  • 谢谢,我忘记了 ```--user 0``` 选项。 (3认同)
  • 我有时会收到消息“失败 - 未安装 0” (2认同)

pow*_*366 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"

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


小智 13

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

adb shell pm uninstall -k --user 0 <package name>
Run Code Online (Sandbox Code Playgroud)

你应该得到这个回报:

successful
Run Code Online (Sandbox Code Playgroud)

  • 如果我没有得到“成功”回报怎么办?我遇到失败 [INSTALL_FAILED_INVALID_APK: 缺少现有基础包为 null] (3认同)

reo*_*eox 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将其禁用或通过将意图发送到调用接收器的应用程序来自行执行此操作禁用设备管理员.


Chr*_*lay 7

我发现这种方法adb shell pm uninstall <package>一致,哪些adb uninstall <package>方面没有.

  • 两种情况都有"失败". (25认同)
  • @BartekBanachewicz这是一致性. (11认同)

小智 7

哦,我在同样的情况下,我尝试了所有这一切没有结果..最后的答案是关闭..我做到了这样做:

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

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

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

adb uninstall com.your-real-app-name
Run Code Online (Sandbox Code Playgroud)

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

ionic run android
Run Code Online (Sandbox Code Playgroud)


小智 7

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


小智 2

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

  • 可能去“下载的应用程序”比“运行应用程序”更好;该应用程序可能未运行。 (2认同)