手动安装更新的APK失败,"签名与以前安装的版本不匹配"

exh*_*uma 79 android

我已经建立了一个愚蠢的应用程序,以便在几个朋友之间分享.无需将其放在app-store上.

我建立了第一个apk(已签名),将其上传到网络服务器,一切运作良好.

出现了一个小问题,我修复了它,重新构建,使用相同的密钥库签名并再次上传.现在看来我无法从新安装apk.调试器告诉我:

signatures do not match the previously installed version
Run Code Online (Sandbox Code Playgroud)

所以我通过打开app抽屉并将其拖到"卸载"按钮上来卸载旧版本.打开"设置 - >应用程序"时,我再也看不到它了.我在设备上看不到任何应用程序的痕迹.

但我仍然收到上述错误消息.

是否有可能某些信息仍然存在于某个设备上?有什么方法可以验证吗?

Ehs*_*san 158

是的,如果您的旧应用程序未被100%删除或其数据未被删除,则可能.

尝试:

adb uninstall "com.yourapp.yourapp"
Run Code Online (Sandbox Code Playgroud)

如果您不确切地知道要替换"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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,com.myapp.myapp是您必须用来卸载的软件包的名称.

  • 当你是开发人员时这很好.但对于任何最终用户,如果出现同样的问题,那么你需要遵循:问题是在较新版本的Android中,以某种方式卸载只卸载该特定用户.答案是转到设置>应用程序>进入特定应用程序内部,然后从右上角的"..."菜单项中选择"为所有用户卸载". (2认同)

Jul*_*ien 23

我有同样的问题,adb uninstall解决方案对我不起作用.

有用的是

  • 在您的设备上,转到"设置" - >"应用"
  • 选择您的应用程序,然后在菜单中选择"为所有用户卸载"

即使我之前已经卸载了应用程序,它仍然在那里的列表中.


Gre*_*ger 5

对我来说,如果应用程序是分发的,那么adb解决方案是禁止的:你不能要求一个人的朋友在他们的机器上安装android sdk!

这里的方法是编辑AndroidManifest.xml和增加标签中的android:versionCode属性<manifest>(这是根元素).

这将更新您安装的应用程序