正如標題所解釋的,我想知道是否有方法(代碼)知道生成的應用程序(.apk)使用調試證書或導出證書籤名?我想在我的應用程序中檢查這個,這樣我可以啓用/禁用某些功能,這取決於證書的類型。如何以編程方式知道應用程序是使用調試或導出證書籤名的?
我想知道Google在通過開發者控制檯上傳市場中的應用時,Google是如何驗證這些信息的?
任何建議/代碼將不勝感激。
正如標題所解釋的,我想知道是否有方法(代碼)知道生成的應用程序(.apk)使用調試證書或導出證書籤名?我想在我的應用程序中檢查這個,這樣我可以啓用/禁用某些功能,這取決於證書的類型。如何以編程方式知道應用程序是使用調試或導出證書籤名的?
我想知道Google在通過開發者控制檯上傳市場中的應用時,Google是如何驗證這些信息的?
任何建議/代碼將不勝感激。
我發現這個資源,它描述了你正在努力解決的問題。本頁面描述瞭如何在代碼中獲取關於密鑰庫的信息。
http://daniel-codes.blogspot.com/2011/04/detecting-keystore-signature-in-code.html
您將只能使用您的導出證書將您的應用部署到Android Market。
如果未使用您在上傳第一個APK時使用的相同證書籤名,則AM會拒絕您的APK。
看起來您可以從:javax.security.auth.Subject包中獲取有關公鑰的信息(嘗試getPublicCredentials()方法)。我自己並沒有使用它。
是的,我知道我們需要使用相同的證書更新應用程序。但我在尋找的是應用程序中的證書信息,如姓名,公司,組織,isDebug等。 – waqaslam 2012-03-02 14:21:13
我用
final PackageInfo info = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
ApplicationUtils.DEBUG_ENABLED = (info.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
啓用/禁用調試日誌記錄。
哪個軟件包包含'ApplicationUtils'? – waqaslam 2012-03-02 14:22:48
'ApplicationUtils'是我自己的一類靜態變量/函數,它在'Application.onCreate'中被初始化。 – techiServices 2012-03-02 14:26:34
當使用調試密鑰構建APK時,將自動爲您設置調試標誌,因此您無需將其設置在清單中。 – techiServices 2012-03-02 14:33:36
公司名稱稱爲Android調試,用於調試密鑰。
運行jarsigner -verbose -certs -verify針對調試和簽名的apks。你會看到調試apk,CN字段被稱爲Android調試。對於您簽名的apk,它是密鑰簽名者的名稱。
這可能是Google和其他市場在上傳到市場時檢查密鑰的方式。像其他人說的那樣,您將無法將使用調試密鑰簽名的應用程序上傳到市場,所以我不知道爲什麼您需要檢查此問題。
正如我所說,我不是在談論上傳或更新市場上的應用程序。我只是想在代碼中知道這些字段。有沒有可能? – waqaslam 2012-03-02 14:26:17
的可能的複製[如何檢查是否APK簽署或 「調試版本」?](http://stackoverflow.com/questions/7085644/how-to-check-if-apk-is -signed-or-debug-build) – grebulon 2017-01-25 10:50:06