Android Aligned Unaligned Apk 取消zipalign优化

Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在老版本的Android平台下开发的。这篇文章将描述zipalign如何有助于性能改善以及如何使用它来优化你的app。

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

Android app签名的流程如下:

--> 生成 private key  (keytool 完成)

--> 编译生成unsigned apk  (状态:未对齐,未签名)

--> 用private key进行签名 (jarsinger完成)  (状态:未对齐,签名)

--> 使用zipalign进行签名 (状态:对齐,签名)

apk只有在签名之后才能使用zipalign进行优化。如果在签名之前就进行align优化,那么在签名时会回退之前的align操作。

因此会先进行签名,在进行align优化。因而中间会产生 unaligned signed apk (app-debug-unaligned.apk).


但是有时候,第三方APK编译到android 系统镜像中,aligned APK之后,会导致APK起不来,或者各种其它问题。但是直接手动安装APK没有问题。解决方法是编译生成APK时,取消aligned APK,out 目录下生成的apk就与手动安装的apk是同一个apk。

1,/build/core/clear_vars.mk文件中添加 :

LOCAL_CONFIG_ZIPALIGN_UNALIGNED_BOOL := # '',true


2,/build/core/definitions.mk文件中添加 :

define align-package_no_zipalign

$(hide) mv $@ $@.unaligned
$(hide) mv $@.unaligned $@.aligned
$(hide) mv $@.aligned $@

endef

3,/build/core/dpi_specific_apk.mk 修改:

+ifeq ($(LOCAL_CONFIG_ZIPALIGN_UNALIGNED_BOOL),true)            
+       $(align-package_no_zipalign)
+else
        $(align-package)
+endif


4,/build/core/prebuilt_internal.mk 修改:(有3处$(align-package) 需要修改)

+ifeq ($(LOCAL_CONFIG_ZIPALIGN_UNALIGNED_BOOL),true)    
+       $(align-package_no_zipalign)
+else
        $(align-package)
+endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值