Android系統要求所有安裝的應用程序都使用應用程序開發人員擁有私鑰的證書進行數字簽名。公鑰如何具體分配給客戶端Android設備?當開發人員發佈應用程序時,apk中是否包含公鑰?如果是這樣,密鑰存儲在哪裏?Android設備如何獲得開發人員的公鑰?
還是Android市場,例如,谷歌播放,保存一個開發人員ID列表與相應的公鑰,並在應用程序下載時將正確的密鑰推送到客戶端設備?
是否有任何文檔傳達此信息?
非常感謝您的任何意見。
Android系統要求所有安裝的應用程序都使用應用程序開發人員擁有私鑰的證書進行數字簽名。公鑰如何具體分配給客戶端Android設備?當開發人員發佈應用程序時,apk中是否包含公鑰?如果是這樣,密鑰存儲在哪裏?Android設備如何獲得開發人員的公鑰?
還是Android市場,例如,谷歌播放,保存一個開發人員ID列表與相應的公鑰,並在應用程序下載時將正確的密鑰推送到客戶端設備?
是否有任何文檔傳達此信息?
非常感謝您的任何意見。
你必須在發佈之前在Play商店上傳它們。
它,然後對你的apk的簽名檢查: http://developer.android.com/google/play/licensing/adding-licensing.html#account-key
如果你正在談論的密鑰來驗證上安裝的應用程序:你可以使用任何密鑰簽署一個應用程序,並通過安裝亞洲開發銀行。 但是,您將不得不使用相同的密鑰重新安裝應用程序。在這種情況下,不會像使用Google Play一樣對全局回購進行檢查,只會在本地進行檢查。
對於測試,情況有點不同,我相信這是由於儀器運行程序和測試代碼的交互作用導致的,它們必須在同一個進程中運行,因此,如果您使用調試證書安裝了應用程序的測試程序包,那麼您無法使用發行證書安裝應用程序,也可以使用調試證書安裝應用程序,或者卸載測試。
這裏的一些細節:http://developer.android.com/tools/publishing/app-signing.html
下面是一個例子,按照步驟1 - 8 「獲取證書」 的。 這不僅僅是一個Google API教程,它涵蓋了您在我提到的那一節中需要的關鍵簽名。
還有一個關於Android開發的調試和發佈密鑰的鏈接,它提供了有關Android開發網站的更多信息。
http://developer.android.com/google/play/licensing/adding-licensing.html#account-key
鏈接的某些部分會解決你的問題 嵌入你的公鑰對牌
對於每個應用程序,Google Play服務會自動生成一個用於許可和應用內結算的2048位RSA公鑰/私鑰對。密鑰對與應用程序唯一關聯。雖然與應用程序相關聯,但密鑰對與用於簽署應用程序(或從中派生)的密鑰不同。
Google Play開發者控制檯向登錄到開發者控制檯的任何開發者公開了授權公鑰,但它將隱藏在所有用戶隱私中的私鑰保存在安全位置。當應用程序請求您的帳戶中發佈的應用程序的許可證檢查時,許可服務器使用應用程序密鑰對的私鑰簽署許可證響應。當LVL收到迴應時,它使用應用程序提供的公鑰來驗證許可證迴應的簽名。
要將許可添加到應用程序,您必須獲取您的應用程序的公鑰,然後將其複製到應用程序中。以下是如何找到您的應用程序的公共許可證密鑰:
轉到Google Play開發者控制檯並登錄。確保您登錄到您正在授權的應用程序的帳戶已發佈(或將要發佈) 。 在應用程序詳細信息頁面中,找到服務& API鏈接並單擊它。 在服務& API頁面中,找到許可&應用內結算部分。您的許可證公鑰在「您的本應用程序許可證密鑰」字段中給出。 要將公鑰添加到您的應用程序中,只需將該字段中的密鑰字符串作爲字符串變量BASE64_PUBLIC_KEY的值複製/粘貼到您的應用程序中。在複製時,請確保您選擇了整個密鑰字符串,而不忽略任何字符。
下面是來自LVL示例應用程序的例子:
public class MainActivity extends Activity {
private static final String BASE64_PUBLIC_KEY = "MIIBIjANBgkqhkiG ... "; //truncated for this example
...
}
感謝您的投入。我沒有要求Google Play提供的許可服務。我在應用程序安裝期間詢問密鑰以進行證書驗證過程。 – user3361508
我更新了我的答案。 – Snicolas