Android应用程序生成的.apk安装文件,如果要上传到Google Play应用商店,则首先要生成一个签名文件,再根据这个签名文件把apk从debug模式转换到release模式,才允许被上传到Google Play.
1 生成签名
进入控制台,访问到你安装JDK的bin目录 [Java_home]\bin,运行 keytool -genkey -alias [alias] -keyalg RSA -validity 20000 -keystore [android.keystore]
[]内的为你自定义的名字
然后按照以下提示输入信息:
password:
name:
组织单位名称:
组织名称:
城市:
州或身份:
国家代码:
CN=?, OU=?, O=?, L=?, ST=NewYork, C=? 正确吗?
输入:Y
输入<power_click>的主密码
(如果和 keystore 密码相同,按回车)
有时候会失败是因为bin文件夹是只读的,无法生成android.keystore文件,只需把bin文件夹改为可写,或者把生成的文件指向其他的目录
2 把开发的app的安装文件从debug模式转为release模式
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore android.keystore [app name].apk [alias]
[alias]与你签名中定义的一致。
可以通过命令:
$ jarsigner -verify -verbose -certs my_application.apk 来查看是否已经将apk从debug模式转为release模式了
如果看见"CN=Android Debug", 意味着APK仍然是debug签名模式
如果出现以下错误:
if jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 2358 but got 2418 bytes)
解决方式为:
把app文件的后缀 .apk 改为 .zip 用压缩软件打开,删除 meta-info文件夹, 把后缀.zip 改回原来的 .apk
再次运行签名的命令,问题解决
3 调整你的APK(原文:Align the final APK package)
$ zipalign -v 4 [your_project_name-unaligned.apk] [your_project_name.apk]
经过以上处理过的apk文件,才可以发布到Google Play!
详情可以仔细阅读android developer上的该章节:http://developer.android.com/tools/publishing/app-signing.html
4 此外,你还可以直接通过Eclipse才生成签名的Apk
如果是首次发布App,则选择Create new keystore生成keystore,如果是升级App,则需要用到第一次的keystore,所以一定要保存好第一次的keystore文件和记住keystore密码,否则Google Play不允许更新应用。