现在的位置: 首页 > 综合 > 正文

我对Android中apk文件进行签名的一点理解

2013年09月13日 ⁄ 综合 ⁄ 共 1366字 ⁄ 字号 评论关闭

    之前,我也不是太清楚,为什么开发好的android程序,要对其apk文件进行数字签名,只是略为知道一点:为了维护自己的版权,更加合法吧,防止别人侵权。不过现在,我觉得,不光是这样,下面我来谈谈自己的看法。

    其实,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 已验证

 

抱歉!评论已关闭.