在release模式下編譯程序,,在Package面版上按project右鍵,,選擇Android Tools>Export Application Package.或者你可以點擊Manifest Editor,, overview 頁面上的“Exporting the unsigned .apk”連接 ,,導(dǎo)出未簽名apk文件,。保存.apk文件之后,,用Jarsigner及你自己的密鑰給apk文件簽名 ,如果沒有密鑰,, 你可以用Keystore創(chuàng)建密鑰和密鎖,。如果已經(jīng)有一個密鑰了,如公共密鑰,,就可以給.apk文件簽名了,。
Android程序的簽名和Symbian類似都可以自簽名(Self-signed),但是在Android平臺中證書初期還顯得形同虛設(shè),,平時開發(fā)時通過ADB接口上傳的程序會自動被簽有Debug權(quán)限的程序,。需要簽名驗證在上傳程序到Android Market上時大家都已經(jīng)發(fā)現(xiàn)這個問題了。Android signed制作方法 首先在Android開發(fā)時沒有安裝JDK的網(wǎng)友在Sun官方網(wǎng)站下載JDKhttp://www./download/jdk ... 6-p-12_sep_2008.exe,,其實僅需要中的Keytool和Jarsigner,。 詳細的簽名步驟: 第一步 C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias android123.keystore -keyalg RSA -validity 20000 -keystore android123.keystore 輸入keystore密碼:[密碼不回顯] 再次輸入新密碼:[密碼不回顯] 您的名字與姓氏是什么? [Unknown]: android123 您的組織單位名稱是什么,? [Unknown]: www. 您的組織名稱是什么,? [Unknown]: www. 您的組織名稱是什么? [Unknown]: www. 您所在的城市或區(qū)域名稱是什么,? [Unknown]: New York 您所在的州或省份名稱是什么,? [Unknown]: New York 該單位的兩字母國家代碼是什么 [Unknown]: CN CN=android123, OU=www., O=www., L=New York, ST =New York, C=CN 正確嗎? [否]: Y 輸入<android123.keystore>的主密碼 (如果和 keystore 密碼相同,,按回車): 其中參數(shù)-validity為證書有效天數(shù),,這里我們寫的大些20000天。還有在輸入密碼時沒有回顯,,只管輸入就可以了,一般位數(shù)建議使用20位,,最后需要記下來后面還要用,,整個過程如圖: 接下來我們開始為apk文件簽名了。 第二步 執(zhí)行下面這句jarsigner -verbose -keystore android123.keystore -signedjar android123_signed.apk android123.apk android123.keystore 就可以生辰簽名的apk文件,,這里輸入文件android123.apk,,最終生成android123_signed.apk為Android簽名后的APK執(zhí)行文件,。下面提示輸入的密碼和keytool輸入的一樣就行了,如圖: 有關(guān)Android程序發(fā)布和簽名可以查看SDK中 http://code.google.com/android/devel/sign-publish.html 一文. 附上keytool參數(shù)以及jarsigner參數(shù): keytool用法: -certreq [-v] [-protected] [-alias <別名>] [-sigalg <sigalg>] [-file <csr_file>] [-keypass <密鑰庫口令>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -changealias [-v] [-protected] -alias <別名> -destalias <目標(biāo)別名> [-keypass <密鑰庫口令>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -delete [-v] [-protected] -alias <別名> [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -exportcert [-v] [-rfc] [-protected] [-alias <別名>] [-file <認(rèn)證文件>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -genkeypair [-v] [-protected] [-alias <別名>] [-keyalg <keyalg>] [-keysize <密鑰大小>] [-sigalg <sigalg>] [-dname <dname>] [-validity <valDays>] [-keypass <密鑰庫口令>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -genseckey [-v] [-protected] [-alias <別名>] [-keypass <密鑰庫口令>] [-keyalg <keyalg>] [-keysize <密鑰大小>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -help -importcert [-v] [-noprompt] [-trustcacerts] [-protected] [-alias <別名>] [-file <認(rèn)證文件>] [-keypass <密鑰庫口令>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -importkeystore [-v] [-srckeystore <源密鑰庫>] [-destkeystore <目標(biāo)密鑰庫>] [-srcstoretype <源存儲類型>] [-deststoretype <目標(biāo)存儲類型>] [-srcstorepass <源存儲庫口令>] [-deststorepass <目標(biāo)存儲庫口令>] [-srcprotected] [-destprotected] [-srcprovidername <源提供方名稱>] [-destprovidername <目標(biāo)提供方名稱>] [-srcalias <源別名> [-destalias <目標(biāo)別名>] [-srckeypass <源密鑰庫口令>] [-destkeypass <目標(biāo)密鑰庫口令>]] [-noprompt] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -keypasswd [-v] [-alias <別名>] [-keypass <舊密鑰庫口令>] [-new <新密鑰庫口令>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -list [-v | -rfc] [-protected] [-alias <別名>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] -printcert [-v] [-file <認(rèn)證文件>] -storepasswd [-v] [-new <新存儲庫口令>] [-keystore <密鑰庫>] [-storepass <存儲庫口令>] [-storetype <存儲類型>] [-providername <名稱>] [-providerclass <提供方類名稱> [-providerarg <參數(shù)>]] ... [-providerpath <路徑列表>] jarsigner用法: [選項] jar 文件別名 jarsigner -verify [選項] jar 文件 [-keystore <url>] 密鑰庫位置 [-storepass <口令>] 用于密鑰庫完整性的口令 [-storetype <類型>] 密鑰庫類型 [-keypass <口令>] 專用密鑰的口令(如果不同) [-sigfile <文件>] .SF/.DSA 文件的名稱 [-signedjar <文件>] 已簽名的 JAR 文件的名稱 [-digestalg <算法>] 摘要算法的名稱 [-sigalg <算法>] 簽名算法的名稱 [-verify] 驗證已簽名的 JAR 文件 [-verbose] 簽名/驗證時輸出詳細信息 [-certs] 輸出詳細信息和驗證時顯示證書 [-tsa <url>] 時間戳機構(gòu)的位置 [-tsacert <別名>] 時間戳機構(gòu)的公共密鑰證書 [-altsigner <類>] 替代的簽名機制的類名 [-altsignerpath <路徑列表>] 替代的簽名機制的位置 [-internalsf] 在簽名塊內(nèi)包含 .SF 文件 [-sectionsonly] 不計算整個清單的散列 [-protected] 密鑰庫已保護驗證路徑 [-providerName <名稱>] 提供者名稱 [-providerClass <類> 加密服務(wù)提供者的名稱 [-providerArg <參數(shù)>]] ... 主類文件和構(gòu)造函數(shù)參數(shù) |
|