2012-10-02 64 views
4

我在android上制作了一个应用程序并将其发布到了Play商店。我用一个新的私钥签署了我的apk。apk的不同签名

上周,我想用我的新功能更新我的应用程序。所以我用先前创建的相同私钥导出了我的新apk。然后我发表和Playstore接受了它。

但是在手机上的Play商店中,应用程序无法更新。我必须先卸载它,如果我这样做,我会丢失我的数据。

所以我的问题是,我怎样才能使一个可更新的APK在谷歌Play商店

+0

你是否首先通过播放在手机上安装了它? – njzk2

+0

是的。我尝试安装我的新apk。但市场迫使我卸载.. – Peka

回答

7

你不能改变你的APK上传到Play商店的签名,我需要使用相同的签名如前。如果您确实更改了应用程序的签名并尝试上载,则会收到错误消息,说明找到了相同的应用程序,但签名不同。

如果您手动向用户发送带有更改签名的应用程序(例如邮件),他们必须先卸载当前应用程序,然后才能使用新签名安装相同的应用程序。用户将失去那里的应用程序数据!这是一种安全机制,所以黑客/坏人不能改变你的apk并以这种方式获取用户数据。

Android系统使用签名来检查应用程序是否确实是手机上现有应用程序的更新。因为只有你现在你的签名密码和东西,黑客不能在那里使用它假冒的应用程序更新。

总结:始终使用相同的签名!

检查:http://developer.android.com/tools/publishing/app-signing.html

编辑:正如所说的@HandlerExploit 也许你的应用程序的“非市场版/调试版本”仍安装在手机上,应用程序的调试版本总是签署具有默认的调试签名。这个签名不同于市场上的签名。

+0

您无法使用与市场不同的签名更新应用程序。 – HandlerExploit

+0

删除了:“or should not”部分 –

+0

我可以在市场上发布我的apk。我的第一个和第二个版本被允许。所以他们有相同的签名。但我不明白为什么我无法更新,为什么我必须卸载旧版APK才能获得新版本 – Peka

2

您很可能在开发过程中使用电脑的默认调试签名安装了您的应用程序,您需要先卸载它,然后再安装新的市场版本。

0

不在清单中增加版本号也会产生这种效果。确保每个版本的android:versionCode =“1”都不相同。还包括确切的错误消息,如果存在,可能会有所帮助。