提示:本文僅針對Windows平臺。有關Linux平臺,可以參考Android SDK中的Dev Guide中的Publishing->Sign Your Applications中的Basic Setup for Signing一節。
前提: 1、正確安裝JDK,並配置了JAVA_HOME和PATH(JAVA_HOME/bin),因爲要使用到jdk/bin下面的兩個工具:keytool.exe、jarsigner.exe。
2、安裝Android SDK並在PATH中配置了(SDK_HOME/tools),因爲要使用到sdk_home/bin下面的一個工具:zipalign.exe
發佈應用程序步驟:
1、 查看要發佈的應用程序是否已經過以下必須步驟或包含以下必要信息:
*在真機上進行測試
*考慮在應用程序中添加最終用戶協議
*考慮添加授權支持
*指定一個圖標和標籤在應用程序的Manifest.xml文件中定義
*清除調試日誌等信息
*確定你發佈的版本
*如果應用程序使用到MapView,則需要註冊一個Map api密鑰
2、 數字簽名:
生成證書,命令行:$ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
簽名,命令行:$ jarsigner -verbose -keystore my-release-key.keystore my_application.apk alias_name
驗證是否已簽名,命令行:$ jarsigner -verify -verbose -certs my_application.apk
優化改善應用程序供發佈,命令行:$zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
創建數字證書需要提供的信息有:證書名稱:
證書密碼:
別名:
名字:
單位名稱:
組織名稱:
城市名稱:
國家名稱:
密鑰主密碼:
3、 發佈應用程序。
發佈到Google Android Market:market.android.com
*創建Google Market帳號,註冊成爲開發人員。(需通過信息卡支付註冊費25美元)
*註冊成功後,上傳應用程序。點擊發布後,用戶在Google Android Market中就能夠下載使用國內的Android應用市場
HTC市場 http://htc.appstoreconnect.com/
商店名稱
網址
機鋒市場
http://www.gfan.com/app/amarket/
可以自助上傳
愛米軟件商店
可以自助上傳
優億市場
http://www.eoemarket.com/
可以自助上傳
掌上應用匯
可以自助上傳
安卓市場
http://www.hiapk.com/bbs/Market/index0.htm
可以自助上傳
安智市場
可以自助上傳
開奇商店
N多市場
可以自助上傳
安卓星空
http://www.starandroid.com/apkclient
可以自助上傳
巴士商店
XDA市場
http://android.xda.cn/detail.php?swid=157
安豐下載
歷趣安卓市場
聯想應用
tp://www.lenovomm.com/appstore/
芒果有渠道
歐米
可以自助上傳
中國聯通沃商店 http://store.wo.com.cn/
1.Eclipse中,選擇Android Tools->Export Unsigned Application Package... , 接下來,系統會提示你輸入apk文件的保存地址。這樣我們就編譯生成了發佈版的未簽名的apk文件. eg.sdialer.apk
2.完成了發佈版的編譯,接下來是獲取私鑰,會用到JDK下的兩種工具:keytool和jarsigner. keytool是生成私鑰的工具。
keytool命令的解釋:
-genkey 產生一個密鑰對(公鑰和私鑰)
-v 開啓詳細輸出
-keystore<keystore-name>.keystore 包含私鑰的keystore名稱
-storepass<password> keystore的密碼。安全起見,通常建議不要在命令行輸入這個選項,如果你不提供這個選項,keytool就會提示你輸入密碼,這樣你的密碼就不會保存在shell歷史中。
-alias<alias_name> 密鑰的別名
-keyalg<alg> 產生密鑰的加密算法,可以採用DSA和RSA中的一種
-dname 用於描述密鑰的產生者。這個值將作爲自簽名證書中的發佈者。如果你此時沒有輸入,那麼在執行簽名時,jarsigner會提示你輸入dname(distinguished name)
-validity 密鑰的有效期,這裏以天來計算。我們通常建議大於10000天
-keypass<password> 密鑰的密碼,安全起見,通常建議不要在命令行輸入這個選項,如果你不提供這個選項,keytool就會提示你輸入密碼,這樣你的密碼就不會保存在shell歷史中。
jarsigner命令解釋:
-keystore 包含私鑰的keystore
<keystore-name>.keystore
-verbose 開啓詳細輸出
-storepass<password> keystore的密碼,安全起見,通常建議不要在命令行輸入這個選項,如果你不提供這個選項,jarsigner就會提示你輸入密碼,這樣你的密碼就不會保存在shell歷史中。
-keypass<password> 密鑰的密碼,安全起見,通常建議不要在命令行輸入這個選項,如果你不提供這個選項,jarsigner就會提示你輸入密碼,這樣你的密碼就不會保存在shell歷史中。
eg.
keytool -genkey -v -keystore s-dialer.keystore -alias sdialer_name -keyalg RSA -validity 10000
輸出一個s-dialer.keystore,密鑰別名爲sdialer_name。有了密鑰,我們就可以用它來進行簽名。簽名工具是jarsigner.
eg. jarsigner -verbose -keystore s-dialer.keystore sdialer.apk sdialer_name
這樣,就爲應用程序sdialer.apk完成了簽名
應用程序的版本
Android應用程序主要通過androidmanifest.xml中的android:versionCode和android:versionName來實現版本管理的
如何用eclipse打簽名包:
1.Eclipse工程中右鍵工程,彈出選項中選擇 android工具-生成簽名應用包:
2.選擇需要打包的android項目工程:
3.如果已有私鑰文件,選擇私鑰文件輸入密碼,如果沒有參見第6和7步創建私鑰文件:
4.輸入私鑰別名和密碼:
5.選擇APK存儲的位置,並完成設置 開始生成:
6.沒有私鑰文件的情況,創建私鑰文件:
7.輸入私鑰文件所需信息,並創建:
*自己的一點補充:SDK的安裝目錄最後不要有中文和空格,否則會出現不必要的錯誤。如果你的安裝路徑包含Program Files(有空格),用ADT打包會報錯,Ant方式打包的也會報錯,沒關係,不用重裝,解決方法:配置SDk環境變量和在Eclipse中配置SDK路徑的時候把Program Files改爲Progra~1即可。(而且改成其他的都不行,只能是Progra~1,不信試試,這是Dos的規格)。