`
MyEyeOfJava
  • 浏览: 1152192 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7af2d6ca-4fe1-3e9a-be85-3f65f7120bd0
测试开发
浏览量:71172
533896eb-dd7b-3cde-b4d3-cc1ce02c1c14
晨记
浏览量:0
社区版块
存档分类
最新评论

[Android]Ziplign打包最后一步

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

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

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

对于应用程序开发者来说,这种显式读取方式是相当便利的。它允许使用一些不同的开发方法,包括正常流程中不包含对齐的资源,因此,这种读取方式具有很大的便利性(本段的原始意思请参考原文)。

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

幸运的是,对应用程序中的资源作对齐操作很简单:

·           使用ADT:

o     如果你使用导出向导的话,Eclipse中的ADT插件(从Ver. 0.9.3开始)就能自动对齐Release程序包。使用向导,右击工程属性,选择“Android Tools” > “Export Signed Application Package…”。当然,你还可以通过AndroidManifest.xml编辑器的第一页做到。

·           使用Ant:

o     Ant编译脚本(从Android 1.6开始)可以对齐程序包。老平台的版本不能通过Ant编译脚本进行对齐,必须手动对齐。

o     从Android 1.6开始,Debug模式下编译时,Ant自动对齐和签名程序包。

o     Release模式下,如果有足够的信息签名程序包的话,Ant才会执行对齐操作,因为对齐处理发生在签名之后。为了能够签名程序包,进而执行对齐操作,Ant必须知道keystore的位置以及build.properties中key的名字。相应的属性名为key.store和key.alias。如果这些属性为空,签名工具会在编译过程中提示输入store/key的密码,然后脚本会执行签名及apk文件的对齐。如果这些属性都没有,Release程序包不会进行签名,自然也就不会进行对齐了。

·           手动:

o     为了能够手动对齐程序包,Android 1.6及以后的SDK的tools/文件夹下都有zipalign工具。你可以使用它来对齐任何版本下的程序包。你必须在签名apk文件后进行,使用以下命令:zipalign -v 4 source.apk destination.apk

·           验证对齐:

o    以下的命令用于检查程序包是否进行了对齐:zipalign -c -v 4 application.apk

我们极力推荐手动zipalign你的应用程序,并确保将最新对齐后的版本提供给用户。此外,别忘了还有你的新应用程序也需要这么做!
分享到:
评论

相关推荐

    androidstudio 打包h5 网页地址

    在Android开发中,将H5网页打包到Android应用中,通常是为了实现快速开发或轻量级的应用。Android Studio是Google官方推出的集成开发环境(IDE),它提供了强大的功能来支持这一过程。下面,我们将深入探讨如何在...

    Hbuilder项目Android Studio本地打包详细步骤

    2. **导出资源文件**:这一步将生成用于打包的资源文件,包括必要的配置文件和编译资源等。 #### 四、Android Studio本地打包 1. **新建Android工程**: - 打开Android Studio,选择“File”>“New”>“New ...

    Android Studio打包APK软件步骤

    其中,打包 APK(Android Package Kit)是开发过程中至关重要的一步,它允许开发者将应用程序发布到 Android 设备上。APK 文件本质上是一个压缩文件,包含了应用程序的所有资源、代码以及 Android 操作系统所需的元...

    android重新打包工具:v1+v2

    android重新打包工具:v1+v2

    android中打包加密的key

    这个是android 打包中的那个资源 就是那个key 密码为linkyun

    Android 混淆打包不混淆第三方jar包

    Android混淆打包不混淆第三方jar包Android 混淆打包不混淆第三方jar包

    android shell批量打包

    在Android开发过程中,有时我们需要对应用进行批量打包,特别是在测试、发布或者构建多个版本时,手动逐一打包会非常耗时且容易出错。此时,利用Android Shell命令进行批量打包就显得尤为重要。Android Shell批量...

    android固件解包打包工具

    Android固件解包打包工具是专门用于处理Android操作系统固件的软件工具,它允许用户对固件进行修改、定制和优化。在Android开发和设备管理领域,这样的工具至关重要,因为它们能够帮助开发者深入理解固件结构,调试...

    android多渠道批量打包工具

    "android多渠道批量打包工具"就是为了解决这个问题而设计的,它利用Python语言实现了自动化打包的功能,大大提高了开发效率。 首先,我们需要理解这个工具的工作原理。在Android应用打包的过程中,通常会在APK文件...

    android程序编译打包工具

    总结来说,Android程序编译打包涉及多个工具和步骤,从源代码的编译到资源的处理,再到APK的生成与签名,每一步都是为了确保应用能在Android设备上正确运行。开发者通过掌握这些工具和流程,可以更有效地开发、调试...

    Android开发把项目打包成apk

    在Android开发过程中,将开发完成的项目打包成APK(Android Package)是至关重要的一步,因为这标志着应用程序从开发环境走向用户终端的关键转变。本文将深入解析如何在Android开发环境中,利用Eclipse集成开发环境...

    88个经典Android应用程序打包下载【精品】

    最后,Android应用通常会使用第三方库,如Butter Knife进行视图绑定,Retrofit进行网络请求,RxJava处理异步操作,Glide或Picasso加载图片等。通过分析这些应用,你可以了解到如何集成和使用这些流行库。 总之,这...

    在eclipse中将android工程打包成apk.pdf

    5. **选择输出目录**:最后一步,选择输出APK文件的目录及文件名,完成设置后点击Finish即可开始打包。 #### 三、注意事项 - **环境配置**:确保已经正确配置了JDK和Eclipse,并且安装了Android开发所需的SDK组件...

    Android批量打包gradle和python两种方式

    在Android应用开发中,批量打包是一项常见的任务,特别是在发布或者测试阶段。本文将详细解析如何使用Gradle和Python两种方式来实现这一目标。 首先,我们来看看使用Gradle进行批量打包。Gradle是Android Studio...

    通过脚本,编译打包android工程

    通过ant脚本,编译打包android工程, 编译打包android工程的ant脚本。

    Android打包boot.img工具mkbootfs

    用于Android打包boot.img文件,主要是针对ramdisk

    Android多渠道全自动打包发布工具

    "Android多渠道全自动打包发布工具"正是为了解决这个问题,它利用Apache Ant作为构建工具,能够自动化地完成多渠道打包和发布的任务。 Ant是Java的一个开源构建工具,类似于Unix的make,但它是跨平台的。它使用XML...

Global site tag (gtag.js) - Google Analytics