2014-02-20 48 views
2

我一直在開發我的應用程序一段時間,並通過Eclipse運行在真實設備上使用運行 - > * Android應用程序 *。 現在我試圖首次將它分發給一些測試版用戶。 我使用Eclipse來創建一個簽名的應用程序,使用通過嚮導生成的新密鑰庫。這似乎工作正常,當我與Jarsign檢查時,我收到消息「罐子驗證」,雖然也有一些警告。這些是「此Jar包含證書鏈未驗證的條目」和「Ths Jar包含不包含時間戳的簽名」。爲什麼我的簽名apk不能安裝?

然後我將生成的apk複製到設備上並打開它。但有一個消息「這個程序沒有安裝」。在日誌貓中,我可以看到: 「軟件包在入口處沒有證書;忽略!」

我發現一些人曾建議要回JDK 6(我也有7以前),但沒有幫助。 有些人認爲這可能是由於清單中的重複活動造成的,因此我徹底檢查了清單。

什麼我發現是,如果我重新命名的APK,使其不再是完全一樣的名字,因爲它突然運行的包的最後一部分。

所以,如果包是com.mydomain.myapp並且apk是myapp.apk,我會得到這個錯誤,但是如果它是myapp_debug.apk,它會安裝得很好。

我覺得這是非常混亂,多一點令人擔憂了。我想最終發佈這個應用程序,我不知道我是否做錯了。

+0

我建議您擺脫所有警告,如果先前安裝了應用程序,也要先嚐試卸載應用程序。如果證書從調試更改爲發佈。它應該安裝,但它應該完全取代其他應用程序...但它現在可能已經改變。 –

回答

1

根據您重命名使得它的工作說明,你已經安裝在設備上的同一個包名稱的應用程序,但用不同的證書(可能用於Eclipse的啓動調試證書安裝)簽署。

你安裝你的發行版之前,您必須簡單地刪除現有的安裝。你可以做到這一點無論是從設置菜單,或與形式

adb uninstall your.package.name 

注意,該拆除將消滅通過應用存儲私人數據的ADB命令 - 這就是爲什麼你必須做它的一部分,以防止冒名頂替者(自然擁有不同的證書)輕易獲取真實應用留下的數據。

也請記住,以這種方式,他們將需要允許其設置菜單未知/非市場資源分配的應用程序給別人的時候。

+0

您的回答聽起來不錯,但我確實已經嘗試卸載調試版本,並且還使用從未安裝應用程序的其他設備進行測試。相同的結果:將文件命名爲與包相同,不起作用。任何其他名稱,工作得很好。 –