您的位置:首页 > 移动开发 > Android开发

Android生成keystore

2014-05-22 14:20 211 查看
Android应用程序在发布时需要使用一个证书对应用进行数字签名,该证书的私钥由开发人员所有。这样做可以防止第三方或恶意软件替换我们的应用,因为相同包名如果签名不同,则不可以覆盖安装,同样当我们的App升级时也会检验,只有签名相同才会正常升级。签名的另一个作用是允许代码和数据共享,Android有一个基于签名的Permission标签:

<permission android:protectionLevel="normal" />

其中protectionLevel有4种值:normal、dangerous、signature和signatureOrSystem。

Normal是缺省值,表示权限是低风险的。

dangerous表示权限是高风险的。

Signature表示仅仅当应用程序的签名与声明该权限的App的数字签名相同时,才能将权限授给它。

signatureOrSystem表示将权限授给具有相同数字签名的应用程序或Android包,这种应用情况比较少,比如多个供应商需要通过系统映像共享功能时。

其实我们在调试应用的时候,也用到了签名,只不过我们用的是debug.keystore,如果我们的App要发布,那么如何生成一个正式版的keystore呢?

 

一、命令行方式

在JDK的安装目录的bin文件夹下有一个工具:keytool.exe,比如在我的电脑路径是C:\Program Files\Java\jdk1.6.0_27\bin\keytool.exe,可以使用它来生成keystore。具体步骤如下:

1.打开命令行窗口,进入上述路径的bin目录

2.键入命令:keytool -genkey -alias hence -keyalg RSA -validity 40000 -keystore hence.keystore

具体含义:

      -genkey 表示产生密钥

       -alias hence 别名 hence

       -keyalg RSA 表示使用RSA算法对签名加密

       -validity 40000 表示有效期限 40000天

       -keystore hence.keystore 

3.截图如下:



4.执行完上述操作后就可以在C:\Program Files\Java\jdk1.6.0_27\bin目录下生成一个名为hence.keystore的文件,之后我们就可以使用这个文件对我们的App进行签名了。

 

二、使用Eclipse导出

选中Android项目,右键——Android Tools——Export Signed Application Package,之后在Keystore Selection界面,选择Create new keystore而不是Use existing keystore,后续都是一些可视化的操作,其实就是第一种命令行方式输入的那些内容,包括密码、单位名称、国家等。

这种方式按步骤提示即可完成操作,因此不再截图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 签名 keystore