快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

贵宾会网址:Android 数字签名学习笔记



在Android系统中,所有安装到系统的利用法度榜样都必有一个数字证书,此数字证书用于标识利用法度榜样的作者和在利用法度榜样之间建立相信关系,假如一个permission的protectionLevel为signature,那么就只有那些跟该permission所在的法度榜样拥有同一个数字证书的利用法度榜样才能取得该权限。Android应用Java的数字证书相关的机制来给apk加盖数字证书,要理解android的数字证书,必要先懂得以下数字证书的观点和java的数字证书机制。Android系统要求每一个安装进系统的利用法度榜样都是颠末数字证书署名的,数字证书的私钥则保存在法度榜样开拓者的手中。Android将数字证书用来标识利用法度榜样的作者和在利用法度榜样之间建立相信关系,不是用来抉择终极用户可以安装哪些利用法度榜样。这个数字证书并不必要势力巨子的数字证书署名机构认证,它只是用来让利用法度榜样包自我认证的。

同一个开拓者的多个法度榜样尽可能应用同一个数字证书,这可以带来以下好处。

(1)有利于法度榜样进级,当新版法度榜样和旧版法度榜样的数字证书相同时,Android系统才会觉得这两个法度榜样是同一个法度榜样的不合版本。假如新版法度榜样和旧版法度榜样的数字证书不相同,则Android系统觉得他们是不合的法度榜样,并孕育发生冲突,会要求新法度榜样变动包名。

(2)有利于法度榜样的模块化设计和开拓。Android系统容许拥有同一个数字署名的法度榜样运行在一个进程中,Android法度榜样会将他们视为同一个法度榜样。以是开拓者可以将自己的法度榜样分模块开拓,而用户只必要在必要的时刻下载适当的模块。

(3)可以经由过程权限(permission)的要领在多个法度榜样间共享数据和代码。Android供给了基于数字证书的权限付与机制,利用法度榜样可以和其他的法度榜样共享概功能或者数据给那那些与自己拥有相同数字证书的法度榜样。假如某个权限(permission)的protectionLevel是signature,则这个权限就只能赋予那些跟该权限所在的包拥有同一个数字证书的法度榜样。

在署名时,必要斟酌数字证书的有效期:

(1)数字证书的有效期要包孕法度榜样的估计生命周期,一旦数字证书掉效,持有改数字证书的法度榜样将不能正常进级。

(2)假如多个法度榜样应用同一个数字证书,则该数字证书的有效期要包孕所有法度榜样的估计生命周期。

(3)Android Market强制要求所有利用法度榜样数字证书的有效期要持续到2033年10月22日今后。

Android数字证书包孕以下几个要点:

(1)所有的利用法度榜样都必须稀有字证书,Android系统不会安装一个没稀有字证书的利用法度榜样

(2)Android法度榜样包应用的数字证书可所以自署名的,不必要一个势力巨子的数字证书机构署名认证

(3)假如要正式宣布一个Android ,必须应用一个相宜的私钥天生的数字证书来给法度榜样署名,而不能应用adt插件或者ant对象天生的调试证书来宣布。

(4)数字证书都是有有效期的,Android只是在利用法度榜样安装的时刻才会反省证书的有效期。假如法度榜样已经安装在系统中,纵然证书过时也不会影响法度榜样的正常功能。

(5)Android应用标准的java对象 Keytool and J贵宾会网址arsigner 来天生数字证书,并给利用法度榜样包署名。

(6)应用zipalign优化法度榜样。

Android系统不会安装运行任何一款未经数字署名的apk法度榜样,无论是在模拟器上照样在实际的物理设备上。Android的开拓对象(ADT插件和Ant)都可以帮忙开拓者给apk法度榜样署名,它们都有两种模式:调试模式(debug mode)和宣布模式(release mode)。

在调试模式下,android的开拓对象会在每次编译时应用调试用的数字证书给法度榜样署名,开拓者无须关心。

当要宣布法度榜样时,开拓者就必要应用自己的数字证书给apk包署名,可以有两种措施。

(1)在敕令行下应用JDK中的和Keytool(用于天生数字证书)和Jarsigner(用于应用数字证书署名)来给apk包署名。

(2)应用ADT Export Wizard进行署名(假如没稀有字证书可能必要天生数字证书)。

应用Keytool和Jarsigner给法度榜样署名

敕令:keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000

该敕令中,-keystore ophone.keystore 表示天生的证书,可以加上路径(默认在用户主目录下);-alias ophone 表示证书的又名是ophone;-keyalg RSA 表示采纳的RSA算法;-validity 20000表示证书的有效期是20000天。

此时,我们会在互用主目录下看到ophone.keystor贵宾会网址e,即我们刚刚创建的证书。

接着对法度榜样进行署名:

jarsigner用法: [选项] jar 文件又名

jarsigner -verify [选项] jar 文件

履行:jarsigner -verbose -keystore android.keystore -signedjar android123_signed.apk android123.apk android 就可以天生署名的apk文件,这里输入文件android123.apk,最毕天生android123_signed.apk为Android署名后的APK履行文件。下面提示输入的密码和keytool输入的一样就行了。(不过在我的JDK目录下没有找到jarsigner这个法度榜样,不知道是怎么回事)

应用ADT Export Wizard进行署名

利用法度榜样(apk)署名,在EC中,右键单击利用法度榜样工程,如图选择

选择证书的寄放路径,填写相关资料,完成,即可天生被署名的apk文件。如下图所示:

如上图所示,我们可以看到也可以在这里选择”Create new keystore“来创建一个证书。输入密码,点击下一步,填写相关信息,如下图所示。

应用zipalign优化APK

根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可以被多个进程造访,安装的历程包括如下几个步骤:

Installer经由过程每个apk的manifest文件获取与当前利用法度榜样相关联的permissions信息

Home application读取当前APK的Name和Icon等信息。

System server将读取一些与Application运行相关信息,例如:获取和处置惩罚Application的notifications哀求等。

着末,APK所包孕的内容不仅限于当前Application所应用,而且可以被其它的Application调用,前进系统资本的可复用性。

zipalign优化的最根本目的是赞助操作系统更高效率的根据哀求索引资本,将resource-handling code统一将Data struct贵宾会网址ure alignment(数 据布局对齐标准:DSA)限制为4-byte boundaries。假如不采取对齐的标 准,处置惩罚器无法准确和快速的在内存地址中定位相关资本。今朝的系统中应用fallback mechanism机制处置惩罚那些没有利用DSA标准的利用法度榜样,这切实着实大年夜大年夜的方便了通俗开拓者无需关注繁琐的内存操作问题。然则相反,对付这样的利用法度榜样 将给通俗用户带来必然的麻烦,不只影响法度榜样的运行的效率,而且使系统的整体履行效率下降和占用大年夜量不需要的内存资本,以致耗损必然的电池资本 (battery life)。

敕令行要领手动优化:

使用tools文件夹下的zipalign对象。首先调出cmd敕令行,然后履行:zipalign -v 贵宾会网址4 source.apk androidres.apk。这个措施不受API Level的限定,可以对任何版本的APK履行Align优化。

同时可以使用zipalign对象反省当前APK是否已经履行过Align优化。敕令:zipalign -c -v 4 androidres.apk

应用ADT自动优化:

从 ADT 0.9.3版本开始,可以经由过程export wizard自动对宣布的application packages履行align操作。设置措施:鼠标右键点击Project,然后选择”Android Tools” > “Export Signed Application Package…”。

综上所述,可以应用Keytool、Jarsigner、zipalign 给法度榜样署名并优化法度榜样,这样就必要三个不合的对象:

keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000

jarsigner -verbose -keystore android.keystore -signedjar android123_signed.apk android123.apk android

zipalign -v 4 android123_signed.apk android123_signed_aligned.apk

当然,也可以经由过程ADT插件中Export Signed Application Package…来履行,图形界面更为简单、形象、直不雅。

参考:blog.csdn.net/zgfee/archive/2009/11/11/4796831.aspx

Android SDK:androidappdocs.appspot.com/guide/publishing/app-signing.html

android123.com.cn/androidkaifa/173.html

yarin.javaeye.com/blog/549280

androidres.com/index.php/2009/10/18/use-zipalign-to-optimize-your-application-pac贵宾会网址kages/

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: