一般從項目的bin目錄下拷貝的apk是調試模式簽名,在發布時往往不被通過,例如在聯想開發社區會報錯"校驗簽名信息異常,不允許android debug簽名apk包"。
一:Android數字證書包含以下幾個要點:
(1)所有的應用程序都必須有數字證書 ,Android系統不會安裝一個沒有數字證書的應用程序//根據目前情況,項目bin目錄下的apk也能安裝,說明其有簽名,但屬於調試模式的簽名而非發布模式的簽名
(2)Android程序包使用的數字證書可以是自簽名的,不需要一個權威的數字證書機構簽名認證
(3)如果要正式發布 一個Android ,必須使用一個合適的私鑰生成的數字證書來給程序簽名 ,而不能使用adt插件或者ant工具生成的調試證書來發布。//發布必看
(4)數字證書都是有有效期的,Android只是在應用程序安裝的時候才會檢查證書的有效期。如果程序已經安裝在系統中,即使證書過期也不會影響程序的正常功能。
(5)Android使用標准的java工具Keytool and Jarsigner 來生成數字證書,並給應用程序包簽名。//發布必看
(6)使用zipalign 優化程序。
Android 系統不會安裝運行任何一款未經數字簽名的apk程序,無論是在模擬器上還是在實際的物理設備上。Android的開發工具(ADT插件和Ant)都可以協助開發者給apk程序簽名,它們都有兩種模式:調試模式(debug mode)和發布模式(release mode)。
在調試模式下,android的開發工具會在每次編譯時使用調試用的數字證書給程序簽名,開發者無須關心。
當要發布程序時,開發者就需要使用自己的數字證書給apk包簽名,可以有兩種方法。
(1)在命令行下使用JDK中的和Keytool(用於生成數字證書)和Jarsigner(用於使用數字證書簽名)來給apk包簽名。
(2)使用ADT Export Wizard進行簽名(如果沒有數字證書可能需要生成數字證書)。
二;兩種簽名方式
第一種簽名方式, 使用Keytool和Jarsigner給程序簽名( 用於1.5以下版本 )
命令:keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000
該命令中,-keystore ophone.keystore 表示生成的證書,可以加上路徑(默認在用戶主目錄下);-alias ophone 表示證書的別名是ophone;-keyalg RSA 表示采用的RSA算法;-validity 20000表示證書的有效期是20000天。
此時,我們會在互用主目錄下看到ophone.keystore,即我們剛剛創建的證書。
第二種簽名方式:現在介紹android 1.5及更新版本的apk簽名方式
1,打開Eclipse->選擇你要簽名的項目->右擊->android tools->Export signed Application package...
2,跳出窗口
3,project checks 如果核對項目名沒有問題的話 點擊 Next
然后跳出keystore selection 如果是已經存在keystore的文件就選擇然后next 輸入keystore的密碼進行簽名。
如果沒有的話選擇 create new keystore 然后選擇 keystore 保存的位置,設置keystore的密碼,點擊Next。
4.填寫keystore的基本信息,如,別名,密碼,有效期,姓名,組織,組織名稱,所在城市,所在省份,國家等,點擊Next
5.選擇被簽名后的APK保存位置。點擊finish。
6.就可以在你保存的位置中找到相應的被簽名后的APK文件。
以上的簽名只有在ANDROID1.5以及以后的版本適用。
本文轉載於http://blog.csdn.net/berber78/article/details/7264371