我已经建立了一个愚蠢的应用程序,以便在几个朋友之间分享。无需将其放在app-store上。
我构建了第一个apk
(已签名),将其上传到网络服务器并且运行良好。
出现了一个小问题,我修复了它,重新构建,使用相同的密钥库签名并再次上传。现在看来我无法从新apk
安装。调试器告诉我:
signatures do not match the previously installed version
所以我通过打开app抽屉并将其拖到"卸载"来卸载旧版本。按钮。打开"设置 - >应用",我再也看不到它了。我的设备上没有看到应用程序的任何痕迹。
但我仍然收到上述错误消息。
是否有可能某些信息仍然存在于设备某处?有什么方法可以验证吗?
答案 0 :(得分:145)
是的,如果您的旧应用程序未被100%删除或其数据未被删除,则有可能。
尝试:
adb uninstall "com.yourapp.yourapp"
如果您不确切知道要替换“com.yourapp.yourapp”,那么您只需打开Android工作室,在连接到设备时运行您的应用程序,然后查看“调试”窗口。
它说:
Waiting for device.
Target device: samsung-sm_t531-xxxxxxxxx
Uploading file
local path: C:\Users\myapp\app\build\outputs\apk\myapp.apk
remote path: /data/local/tmp/com.myapp.myapp
Installing com.myapp.myapp
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.myapp.myapp"
pkg: /data/local/tmp/com.myapp.myapp
Success
在这种情况下,com.myapp.myapp是您必须用来卸载的软件包的名称。
答案 1 :(得分:22)
我遇到了同样的问题,adb uninstall
解决方案对我不起作用。
有效的是
即使我之前已经卸载了应用程序,它仍然在那里的列表中。
答案 2 :(得分:5)
对我而言,如果要分发应用程序,adb
解决方案是禁止的:您无法请求其朋友在其计算机上安装Android sdk !
此处的方法是编辑AndroidManifest.xml
并增加android:versionCode
标记中的<manifest>
属性(这是根元素)。
这将更新已安装的应用程序
答案 3 :(得分:4)
如果您在进行连接测试时看到这一点,请确保在通过adb卸载时包含 .test ,因为通过应用程序卸载 - >设置不摆脱测试包
adb uninstall your.broken.package.test
如果您只是通过
卸载adb uninstall your.broken.package
您的测试包仍然存在。这只是我在使用gradle命令行时注意到的,避免在android studio中遇到这个问题
答案 4 :(得分:3)
从手机或模拟器中卸载旧应用并尝试重新运行。
答案 5 :(得分:0)
我在签署证书时尝试安装版本时遇到了这个错误。
使用:app Gradle任务uninstallRelease修复,然后再次安装发布
答案 6 :(得分:0)
对于遇到此问题的Unity用户,最好的答案确实是@Ehsan上面的答案
adb uninstall "com.yourapp.yourapp"
我已经在Android设备上安装了先前版本,然后在Unity>构建设置中选择了Development Build
,这导致APK使用其他签名。如果通过Android GUI安装,实际上并不会删除所有内容,因此必须使用ADB。
答案 7 :(得分:0)
从移动设备上卸载应用程序并再次运行它为我解决了这个问题。
答案 8 :(得分:0)
如果您要安装具有不同签名的相同应用,您可能需要卸载但保留应用数据。
adb -d shell pm uninstall -k <packageName>
adb -d install -r -t -d app.apk