方法一: 命令行下对apk签名(原理)
创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入
D:\>
keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*说明:-genkey 产生密钥
-alias demo.keystore 别名 demo.keystore
-keyalg RSA 使用RSA算法对签名加密
-validity 40000 有效期限4000天
-keystore demo.keystore */
D:\>
jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说明:-verbose 输出签名的详细信息
-keystore demo.keystore 密钥库位置
-signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/
注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。
使用上面的签名参数,签名以后再模拟器上安装还是提示没有签名,但是在手机上能安装成功,最后修改参数如下,模拟器上就能安装了 -digestalg SHA1 -sigalg MD5withRSA,好像多上这两个参数
签名
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore demo.keystore -storepass 123456 -signedjar aaa_signed.apk android-release-unsigned.apk demo.keystore
例子:
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore aaa.keystore -storepass 123456 -signedjar aaa_signed.apk aaa.apk aaa.keystore
[-sigalg <算法>] 签名算法的名称
[-keystore <url>] 密钥库位置
[-storepass <口令>] 用于密钥库完整性的口令
[-storetype <类型>] 密钥库类型
[-keypass <口令>] 专用密钥的口令(如果不同)
[-sigfile <文件>] .SF/.DSA 文件的名称
[-signedjar <文件>] 已签名的 JAR 文件的名称
[-digestalg <算法>] 摘要算法的名称
[-sigalg <算法>] 签名算法的名称
[-verify] 验证已签名的 JAR 文件
[-verbose] 签名/验证时输出详细信息
[-certs] 输出详细信息和验证时显示证书
[-tsa <url>] 时间戳机构的位置
[-tsacert <别名>] 时间戳机构的公共密钥证书
[-altsigner <类>] 替代的签名机制的类名
[-altsignerpath <路径列表>] 替代的签名机制的位置
[-internalsf] 在签名块内包含 .SF 文件
[-sectionsonly] 不计算整个清单的散列
[-protected] 密钥库已保护验证路径
[-providerName <名称>] 提供者名称
[-providerClass <类> 加密服务提供者的名称
[-providerArg <参数>]] ... 主类文件和构造函数参数
优化
签名之后,用zipalign(压缩对齐)优化你的APK文件。
未签名的apk不能使用,也不能优化。签名之后的apk谷歌推荐使用zipalign.exe(位于android-sdk-windows\tools目录下)工具对其优化:
D:\>
zipalign -v 4 demo_signed.apk final.apk
如上,zipalign能够使apk文件中未压缩的数据在4个字节边界上对齐(4个字节是一个性能很好的值),这样android系统就可以使用mmap()(请自行查阅这个函数的用途)函数读取文件,可以在读取资源上获得较高的性能,
PS:1.在4个字节边界上对齐的意思就是,一般来说,是指编译器吧4个字节作为一个单位来进行读取的结果,这样的话,CPU能够对变量进行高效、快速的访问(较之前不对齐)。
2.对齐的根源:android系统中的Davlik虚拟机使用自己专有的格式DEX,DEX的结构是紧凑的,为了让运行时的性能更好,可以进一步用"对齐"进一步优化,但是大小一般会有所增加。
5.签名对你的App的影响。
分享到:
相关推荐
Android签名生成工具和签名格式转换工具,方面快捷,很实用
一、Android签名机制--基础概念 1. 消息摘要算法 2. 非对称加密算法(RSA算法) 3. 数字签名 二、Android签名机制--APK签名过程 1. APK签名概述 2. APK签名相关的文件 3. 签名的过程(MANIFEST.MF) 4. 签名的过程...
此文件包含生成android签名文件keystore及验证的源码还包含生成的keystore文件。放到项目中即可使用
mac下android签名工具,为命令行有使用说明
3.用于android.uid.system,需要使用Android源码签名文件签名的情况。 4.签名后的apk,即可安装到Android系统。 5.注意,签名文件需要你自己Android源码系统的,我这里不提供。build/target/product/security 就是这...
生成 Android 签名文件的方法。 ossez.com
该APP提供了获取手机上已安装的所有应用的签名信息,并支持直接复制。
Android签名生成工具、签名格式转换,用于生成各种格式的MD5和SHA1签名,
Android签名经典教程 Android签名经典教程 Android签名经典教程
android 签名工具.
为各种使用第三方分享,推送,地图,对象存储等等需要填入各种格式的MD5,SHA签名而制作的工具,Android签名生成工具微信官方也有,不过只能生成MD5签名,格式也比较单一,该工具可以同时生成各种格式的MD5和SHA1...
android签名工具包含windows/linux/mac(支持Linux&MAC;下批量签名)
Android签名证书文件的解析和签名校验的加强
安卓签名获取的一款工具,使用方法请见CSDN博客http://blog.csdn.net/weimeig/article/details/78818085
各种格式的MD5,SHA签名而制作的工具,生成各种格式的MD5和SHA1签名
这是一个android签名版,用androidStudio写的demo,可以直接运行看效果,签字后保存到本地,获取到路径。
Android签名用keytool和jarsigner制作apk文件
3:如果出现 Unsupported major.minor version 52.0 则表示该文件的版本与本地的jdk版本不匹配 经测试 jdk1.7.0使用1.05版本的AndroidKeystore jdk1.8.0使用1.07版本的AndroidKeystore (资源里面两个版本的都有) ...
windows平台的android签名工具,支持中英双语