我知道这里有很多关于此事的问题,但我已经尝试了所有事情(但显然是正确的'事情'!)并且似乎没有任何关于我正在解决的问题。
我编写了一个应用程序(针对客户),旨在托管在自己的服务器上。该应用程序引用一个包含最新版本代码的简单文本文件,并根据它自己的版本进行检查。如果它已过时,它会关闭并下载更新。到目前为止,一切都按预期工作。
我使用:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(outputFile), "application/vnd.android.package-archive");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
...用于启动新下载的.apk文件的安装过程的代码。而这一切都是按照我的预期开始的。
我点击“安装” - 当我提示用新的确认覆盖当前应用时。它启动,然后显示:
App not installed. And existing package by the same name with a conflicting signature is already installed.
现在我知道Android不能有多个应用程序共享相同的软件包名称,这很好,但LogCat中没有任何内容,我只能假设操作系统对我试图'更新'我感到恼火app,即使我正在浏览所有正确的频道并使用内置的包经理为我做这件事!
有人能告诉我操作系统在呻吟吗?我不是试图并排安装两个应用程序,我希望它更新它,它开始做,然后真的很困惑。
使用相同的密钥库签署软件包是否与我有关?我非常怀疑它,因为我以前使用相同的密钥库来处理游戏等的更新,但我无法弄清楚它在抱怨什么。
希望那里有人有这个问题并解决了它,并且可以指出我正确的方向。由于它给我的有限信息,我有点失明:(
干杯。
答案 0 :(得分:3)
您使用不同的签名密钥构建了新旧版本;可能你要么在不同的机器上构建它们,要么一个是调试证书而另一个是版本证书。发生这种情况时,您通常必须手动并明确删除旧版本,然后再安装具有不同证书的新版本 - 这基本上是一种安全措施,可以防止无意中安装木马冒号更新。
请注意,您可以在构建计算机之间移动证书(如果您将代码库转交给客户,则可能必须移动证书),但是在执行此操作时您需要小心。