2012-11-06 55 views
3

我正在開發2個android應用程序,它們是我的服務器的客戶端。我無法在我的android手機上安裝這兩個應用程序。我安裝第一個應用程序到手機,一切都很好。然後,當我嘗試在手機上安裝第二個應用程序,我得到了應用程序會替換其他應用程序(第一個)的消息,然後我得到以下錯誤:Android簽名衝突

Application not installed: an existing package by the same name with a conflicting signature is already installed.

我提到我已創建爲每個應用程序提供一個單獨的密鑰存儲文件,將其導出爲在android官方簽名應用程序指南中,然後zipaligned它們。

因此,操作系統認爲它是一個單一的應用程序?但實際上有2個不同的應用程序。 我在做什麼錯?

+4

具有相同的包名稱的兩個應用程序不能同一臺設備上安裝.. –

+1

你使用相同的電話給你ARE試圖安裝來開發它?如果你做的只是說,中安裝的版本使用的密鑰是不同的(調試鍵),如果沒有,那麼這兩個應用程序都使用相同的包名和Android不會允許它,因爲這是它如何識別應用程序,因此必須是唯一的。 –

回答

1

不知道當你使用相同的簽名密鑰時會發生什麼,因爲在所有誠實中,我從來沒有真正嘗試過它。

話雖這麼說,阿南德·蒂瓦里,在他的評論,已經簡化了答案,你不能在一個設備上安裝兩個不同應用使用相同的包名。從邏輯上講,它們可能與您不同,但對於操作系統來說,它們實際上是相同的。

當您嘗試將應用程序上傳到Android Market(Google Play)時,問題也會顯現。 Google Play將無法接受第二個應用。有沃倫信仰短而簡單解釋一下:https://stackoverflow.com/a/5788664/450534

由於有一些變化多麼相似應用的例子被髮布到谷歌Play商店:

  1. FriendCaster的免費版本是: https://play.google.com/store/apps/details?id=uk.co.senab.blueNotifyFree

  2. 付費版本,如果相同的應用程序是:https://play.google.com/store/apps/details?id=uk.co.senab.blueNotify

注意包名的結尾。在這種情況下,您將能夠同時在一臺設備上安裝這兩個應用程序。

+0

好吧,我明白了。但是對我來說這很奇怪,我應該怎麼知道我的應用程序包名稱在整個市場上是獨一無二的?或者我應該嘗試命名這些包,直到找到一個獨特的包? – grozandrei

+0

@andrey_groza:嗯,所有的開發者將主要按照自己的軟件包的命名約定您的包名與任何其他人的真的是非常非常少的衝突的可能性。事實上,我從來沒有聽說過這種情況。這是命名約定的一個很好的解釋:http://stackoverflow.com/a/6273935/450534 –

+0

另外,谷歌播放也會通知你,如果包名稱衝突。這仍然讓您有機會返回,更改名稱,編譯另一個APK並再次上傳。沒有傷害完成。 ;-) –

1

我認爲你的問題是你的文件有相同的包名稱。您可以使用類似的軟件包命名這兩個應用程序,但它們不能相同。實際上,使用相同的封裝基礎可以用於應用程序之間的通信,即。 App1:com.mypkg.app1和App2:com.mypkg.app2。但是,它們都不能稱爲com.mypkg.app - 軟件包名稱是Android識別應用程序的方式,不能相同。

您應該可以使用相同的密鑰簽署許多不同的應用程序(假設它們的包裝不同)。

請確保不要丟失簽名證書,如果丟失了簽名證書,將無法使用相同的軟件包名稱上傳新的應用程序。如果你失去了簽名證書,你將面臨很大的麻煩。

祝你好運。

7

我想你使用的是同一個軟件包,這是不允許的兩個不同的應用程序。

但對那些誰擁有對以前安裝的應用程序的頂部安裝另一個版本相同的錯誤:

我想測試我的應用程序的發佈版本時發生問題。我之前已經使用eclipse安裝了應用程序,並且我想安裝相同的應用程序,但是已經發布了簽名。我甚至使用應用程序庫卸載了應用程序,但問題依然存在。

對我來說,解決辦法是使用反安裝設置 - >應用程序應用程序 - >「應用程序」 - >右上角的菜單 - >卸載所有用戶

2

我有同樣的錯誤消息,但這些答案沒有幫助。在4.3 nexus 7上,我使用的不是所有者的用戶。我卸載了舊版本,但我仍然收到相同的信息。

解決方案:我必須登錄作爲所有者,並轉到設置 - >應用程序...向下滾動到我的舊版本與「未安裝」的標誌列出的列表的末尾。選擇它,並按下右上角的「設置」按鈕,最後「卸載所有用戶的