Android apk文件签名

来源:互联网 发布:山东大学网络教育官网 编辑:程序博客网 时间:2024/05/01 12:36

其实,Android平台需要每个apk包(每个应用程序存档文件)上都有数字签名。如果没有数字签名,则不允许相应的.apk运行。说到这里,大家也许会有疑问,我在使用SDK进行开发应用程序的时候,就没有进行签名啊,其实不是这样的。 开发过或学习过google map应用程序的人都知道debug.keystore这个文件(该文件默认位于用户主目录的.android子目录中)。当我们在eclipse中编写好自己的程序,运行的时候,处在调试模式中。在调试模式中,SDK会使用存储在debug.keystore文件中的自签名调试密钥自动对你的应用的程序进行数字签名(由于这个签名,系统已经帮我们自动配置好了,所以我们才感觉到,我们的程序没有进行签名,也可以运行)。 由于调试密钥和密钥库都自动配置好,因此我们在使用SDK进行开发Android应用程序的时候,无需担心数字签名。

但如果要离开调试模式并在adb外部运行呢,这就不行了,这是,就需要我们通过手动配置,来进行签名。

具体操作如下,需要用到Keytool命令 和 Jarsinger工具。(当然这一切的前提是,你必须安装好了JDK,然后在DOS下进行操作)

1.使用 Keytool命令创建自签名私有密钥的示例如下:

C:/Program Files/Java/jdk1.6.0_10/bin>keytool -genkey -v -keystore key.keystore -alias my_key -keyalg RSA -validity 10000 " C:/Program Files/Java/jdk1.6.0_10/bin"这是我JDK所保存的路径。

该命令以详细模式(-v)生成一个密钥(-genkey),它使用key.keystore.keystore库文件和别名my_key,同时采用RSA加密算法并将有效期设为10000天。输入这行命令,一步步的进行操作就可以了。

2.创建一个私有密钥后,就可以使用Jarsigner签名应用程序文件。在使用该工具之前,需要将项目未签名的.apk存档文件导出。

使用Eclipse/ADT环境导出项目的步骤:在项目上,单击鼠标右键,选择Android Tools——>Export Unsigned Application Package选项,导出来就可以了。 具体操作如下: jarsigner -verbose -keystore key.keystore -signedjar android123_signed.apk android123.apk my_key(这一步是和第一步紧密相连的,第一步操作完成后才可以执行这个操作)

3.最后验证是否签名成功,如下所示: C:/Program Files/Java/jdk1.6.0_10/bin>jarsigner -verify android123.apk 如果成功,则会显示: jar 已验证

原创粉丝点击