Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1543839
  • 博文数量: 237
  • 博客积分: 5139
  • 博客等级: 大校
  • 技术积分: 2751
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-18 14:48
文章分类

全部博文(237)

文章存档

2016年(1)

2012年(4)

2011年(120)

2010年(36)

2009年(64)

2008年(12)

分类: Java

2011-04-20 16:12:15

1.Eclipse中,选择Android Tools->Export Unsigned Application Package... , 接下来,系统会提示你输入apk文件的保存地址。这样我们就编译生成了发布版的未签名的apk文件. eg.sdialer.apk

2.完成了发布版的编译,接下来是获取私钥,会用到JDK下的两种工具:keytool和jarsigner. keytool是生成私钥的工具。

keytool命令的解释:
-genkey                                   产生一个密钥对(公钥和私钥)

-v                                        开启详细输出

-keystore.keystore         包含私钥的keystore名称

-storepass                      keystore的密码。安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,keytool就会提示你输入密码,这样你的密码就不会保存在shell历史中。

-alias                        密钥的别名
-keyalg                              产生密钥的加密算法,可以采用DSA和RSA中的一种

-dname                                    用于描述密钥的产生者。这个值将作为自签名证书中的发布者。如果你此时没有输入,那么在执行签名时,jarsigner会提示你输入dname(distinguished  name)

-validity                                 密钥的有效期,这里以天来计算。我们通常建议大于10000天

-keypass                        密钥的密码,安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,keytool就会提示你输入密码,这样你的密码就不会保存在shell历史中。

jarsigner命令解释:

-keystore                          包含私钥的keystore
.keystore

-verbose                           开启详细输出

-storepass               keystore的密码,安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,jarsigner就会提示你输入密码,这样你的密码就不会保存在shell历史中。

-keypass                 密钥的密码,安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,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来实现版本管理的

阅读(2160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~