您的位置:首页 > 移动开发 > Android开发

Android签名(命令行)与zipalign优化

2014-12-11 16:13 288 查看

0、准备

环境变量要将sdk下的tools路径放到path中。用到tools下的工具
APK文件要通过一下方式导出,bin目录下的APK文件已经被debug签名过



部分人可能没有zipalign.exe,从网上下载一个即可

下载地址http://download.csdn.net/detail/qq_17513815/8248619

1、使用keytools生成专用密钥(Pirvate Key)文件

<span style="font-size:14px;">keytool -genkey -keystore HelloKey.keystore -alias HelloKey -keyalg RSA -validity 10000</span>




参数说明

-keystore 就是要生成的keystore的名称 这里是Hello.keystore

-alias 后面跟的是别名 HelloKey

-keyalg 是加密方式这里是 RSA

-validity 是有效期 这里是 10000 天

在当前文件夹下面就生成了一个HelloKey.keystore密钥文件

2、使用jarsigner根据专用密钥对apk文件签名



<span style="font-size:14px;">Jarsigner -verbose -keystore HelloKey.keystore -signedjar HelloApk0.apk HelloApk.apk HelloKey</span>


-keystore HelloKey.keystore 指定密钥文件

HelloApk0.apk 是签名后的文件 【注意】

HelloApk.apk 是签名前的文件

最后的密钥别名不可省略

3、使用zipalign(压缩对其)优化APK

Android中,每个应用程序中储存的数据文件都会被多个进程访问:安装程序会读取应用程序的manifest文件来处理与之相关的权限问题;Home应用程序会读取资源文件来获取应用程序的名和图标;系统服务会因为很多种原因读取资源(例如,显示应用程序的Notification);此外,就是应用程序自身用到资源文件。

在Android中,当资源文件通过内存映射对齐到4字节边界时,访问资源文件的代码才是有效率的。但是,如果资源本身没有进行对齐处理(未使用zipalign工具),它就必须回到老路上,显式地读取它们——这个过程将会比较缓慢且会花费额外的内存。

从未对齐的apk中读取资源比较慢且花费较多内存。最好的情况是,Home程序和未对齐的程序启动得比对齐后的慢(这也是唯一可见的效果)。最坏的情况是,安装一些未对齐资源的应用程序会增加内存压力,并因此造成系统反复地启动和杀死进程。最终,用户放弃使用如此慢又耗电的设备。

方式有很多,推荐手动(成功后APK文件会比原来大一点)



手动对齐:zipalign -v 4 HelloApk0.apk HelloApk1.apk;



对齐验证:zipalign -c -v 4 HelloApk0.apk

HelloApk0.apk 是优化前的文件
HelloApk1.apk 是优化前的文件







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: