2012-10-02 111 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」都不相同。還包括確切的錯誤消息,如果存在,可能會有所幫助。