Android签名的一些事。

来源:互联网 发布:华为中级网络认 编辑:程序博客网 时间:2024/04/29 09:29

一、什么是Android签名?

        简单来说,android签名就是对应用的一种标识,通过签名可以确保应用的唯一性。 Android是通过数字签名文件来对应用进行签名,而签名文件一般以keystore或者jks结尾。签名文件中包含有key的相关信息,例如sha1值等,通过以下命令可以获取到key的相关信息:

keytool -list -keystore ***.jks  //简单信息 包含sha1值。
<span style="font-family: Arial, Helvetica, sans-serif;">keytool -list -v -keystore  ***.jks  //详细信息 包含密钥库注册信息,有效时长等。</span>

二、Android签名有什么作用?

      1.首先,通过签名可以保障我们引用的唯一性。当我们对软件进行升级的时候,只有相同的签名文件才能够进行覆盖安装。
      2.有利于程序的模块化设计和开发。Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。
      3.可以通过权限(permission)的方式在多个程序间共享数据和代码。
Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共享概功能或者数据给那那些与自己拥有相同数字证书的程序。如果某个权限(permission)的protectionLevel是signature,则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。     

三、什么时候需要对应用进行签名?

      Android系统要求,应用必须签名后才能被进行安装。所以我们必须要对应用进行签名。
      但是,我们通过Eclipse或者Android Studio进行应用安装的时候,并没有进行签名这个过程,应用就安装到了手机上。这是因为IDE工具帮我们生成了debug.keystore 用于测试使用。该keystore文件mac在可以到~/.android文件夹下找到,windows也是在.android文件夹中(该文件夹默认为隐藏文件夹)。
      需要注意的是keysotre是有有效期的,当过了有效期,签名的应用无法被安装,但是安装过的可以正常使用。

四、如何对应用进行签名?

      对应用进行签名可以通过命令行或者IDE工具。
      1.使用命令行,这个方法主要用于在反编译其他应用之后,然后进行打包的时候使用:
jarsigner -verbose -keystore ***.keystore -signedjar Signered.apk NoSigned.apk ***

      -verbose:指定生成详细输出
      -keystore:指定数字证书存储路径
      -signedjar:该选项的三个参数为 签名后的apk包 未签名的apk包 数字证书别名

      2.使用IDE工具进行应用签名。
      在Android Studio中,通过Build->Generate Signed APK...->选择要被签名编译的module->Choose existing...->选择keystore所在的位置。->分别输入keystore的密码和key的别名和密码->选择输出路径和版本->Finish


0 0