提示:本文仅针对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的规格)。