提交應(yīng)用程序到Android Market教程
—來源: 作者:
投遞者:cattong 投遞時(shí)間:2010-09-18; 最后更新時(shí)間:2010-09-18
給你的程序簽名
概述
注意事項(xiàng):
所有提交到Market的程序必須經(jīng)過簽名。未經(jīng)簽名的程序不能安裝。
你可以使用個(gè)人證書去簽名程序,不一定要經(jīng)證書機(jī)構(gòu)授權(quán)。
用Debug版本證書簽名的程序?qū)⒉荒馨l(fā)布。
在安裝程序時(shí)會(huì)檢測簽名證書是否過期。如果程序在安裝后證書過期,程序也能正常使用。
你可以使用keytool和Jarsigner產(chǎn)生密鑰并簽名你的程序。
你的程序在簽名后還需要使用zipalign去優(yōu)化。
建議:
用同一密鑰簽名所有程序,以保證程序的無縫升級(jí)。
證書的有效期最好在25年以上。發(fā)布到Market的程序中證書有效期必須在2033年10月22日以后。
如何簽名
除了下面提到的方法,還有一種利用GUI來編譯的方法。
在 Eclipse中Package Explorer里選擇要編譯的工程,F(xiàn)ile->Export,
打開Android文件夾,選擇Export Android
Application,一步一步完成向?qū)Ъ纯?。這樣程序就會(huì)編譯,簽名,優(yōu)化,可以直接發(fā)布到Market了。
獲取合適的私有密鑰
通過Keytool去產(chǎn)生私有密鑰。Keytool在JDK/bin目錄里(比如C rogram FilesJavajdk1.6.0_20in)。
Keytool參數(shù) |
描述 |
-genkey |
生成公鑰和私鑰 |
-v |
輸出詳細(xì)信息 |
-keystore <keystore-name>.keystore |
生成的keystore文件名 |
-alias <alias name> |
此密鑰的別名。只保留前8位字符 |
-keyalg <alg> |
加密算法。支持DSA和RSA |
-dname <name>
用于描述此密鑰的創(chuàng)建者信息。如果沒有提供,Jarsigner會(huì)提示你輸入這些信息
-validity <valdays>
密鑰有效期,按天數(shù)。最好>10000
例如:keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -validity 10000
更多關(guān)于keytool的信息:http://java./j2se/1.5.0/docs/tooldocs/#security
編譯Release版本程序
在release狀態(tài)下程序是未經(jīng)簽名的。在Eclipse中導(dǎo)出未經(jīng)簽名的release版本apk文件。在Package
Explorer中找到要編譯的工程,右擊選擇Android Tools->Export Unsigned Application
Package
用私有密鑰簽名
通過Jarsigner來使用私有密鑰簽名。
例如:jarsigner -verbose -keystore my-release-key.keystore -signedjar my_application_signed.apk my_application.apk alias_name
用法:jarsigner [選項(xiàng)] jar 文件別名
驗(yàn)證已簽名程序:jarsigner -verify my_signed.apk
用法:jarsigner -verify [選項(xiàng)] jar文件
優(yōu)化APK文件
通過zipalign來優(yōu)化apk文件。Zipalign可以在Andorid SDK/tools目錄下找到。
例如:zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
your_project_name-unaligned.apk是輸入,your_project_name.apk是輸出。如果要覆蓋已有文件,需要加上-f參數(shù)
添加版本信息
主要有兩方面,一個(gè)是程序的版本號(hào),另外一個(gè)是程序中要求的系統(tǒng)API版本號(hào)。二者都需要在AndroidManifest.xml中設(shè)定。
程序版本號(hào)
Android:versionCode: int類型,只能是整數(shù)。別的程序在調(diào)用時(shí)要用到,最終用戶無法看到。
Android:versionName: 字符串類型。就是給最終用戶看的。
程序要求的系統(tǒng)API版本號(hào)
Android:minSdkVersion: 要執(zhí)行此程序需要的最低的系統(tǒng)API版本
Android:targetSdkVersion: 此程序設(shè)計(jì)時(shí)的目標(biāo)系統(tǒng)API版本
Android:maxSdkVersion: 此程序設(shè)計(jì)時(shí)支持的最高的系統(tǒng)API版本
準(zhǔn)備發(fā)布
發(fā)布前的檢查列表:
在考慮發(fā)布程序之前
1. 在真實(shí)設(shè)備上進(jìn)行完整的測試
2. 考慮在程序中添加最終用戶許可協(xié)議
3. 在程序中添加圖標(biāo)和標(biāo)題
4. 關(guān)閉并清理log和debug信息
在進(jìn)行最后的編譯之前
5. 添加版本號(hào)
6. 獲取合適的密鑰
7. 如果用到了Mapview元素,請注冊Maps API key
在程序編譯完成后
8. 對程序進(jìn)行簽名
9. 測試編譯好的程序
發(fā)布程序到Android Market
1. 注冊賬號(hào):http://market.android.com/publish
2. 在提交程序之前,必須確保程序符合Android Market 服務(wù)器的要求:
(1) 對程序簽名的私有密鑰有效期必須在2033年10月22日之后。
(2) 程序中必須設(shè)定了android:versionCode和android:versionName。前者用于程序的更新,后者會(huì)展示給最終用戶。
(3) 在程序的manifest中必須定義了android:icon和android:label。
-
感謝<cattong>的貢獻(xiàn)
創(chuàng)建這個(gè)平臺(tái)(文章發(fā)布和收集平臺(tái))是為了收集技術(shù)文章,方便大家共享和找到所需要的資源!
— 冰刀
|