码迷,mamicode.com
首页 > 移动开发 > 详细

[Android] 基于 Linux 命令行构建 Android 应用(三):构建流程

时间:2014-09-24 12:08:46      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   color   io   使用   java   ar   

  Android 应用的构建过程就是将 Android 项目中的文件和资源进行编译和打包,最后将结果输出到 .apk 文件。.apk 文件是保存二进制文件的容器,它包含了运行安卓应用所需的所有信息,例如编译后的 .dex 文件(.class 对应的 Dalvik 字节码),一个二进制的 AndroidManifest.xml 文件,编译后的资源(resources.arsc)和未编译资源。

 

  如果你使用 Eclipse 进行开发,ADT 插件能持续构建你的项目,并将 .apk 文件自动输出到项目的 bin 文件夹,因此整个构建过程你无需做任何事情。

 

  如果你不是使用 Eclipse 进行开发,你可以使用 Ant + build.xml,build.xml 是 Ant 构建文件,位于项目根目录下。Ant 会自动调用构建工具来完成整个构建过程。

 

  为了让安卓应用运行在安卓设备上,你需要对安卓应用进行签名,签名分为调试(debug)和发行(release)两种模式。在开发阶段,一般使用调试模式进行签名,这时构建工具会使用一个调试密钥(debug key)和密码,这样你就不必每次构建时都输入密码。当你想正式将安卓应用通过 Google Play 公开发行时,你必须使用你的私钥在发行模式下构建你的应用。

 

  Eclipse 和 Ant 都支持两种模式下的自动签名。

 

  下图描述了从构建到运行安卓应用的流程与组件:

bubuko.com,布布扣

 

构建过程

 

  在生成 .apk 的整个构建过程中会用到许多工具,需要处理与生成许多临时文件。

 

  下图描述整个构建过程所使用的工具和相关文件:

bubuko.com,布布扣

 

  整个构建过程大体如下:

  ● 安卓资源打包工具(Android Asset Packaging Tool,简称 aapt)负责编译所有资源文件,例如 AndroidManifest.xml 和描述 Activity 的 XML 文件,并生成一个 R.java 文件,这样你就可以在 Java 代码中引用你的资源文件。

  ● aidl 工具将所有 .aidl 接口转换为 Java 接口。

  ● Java 编译器将项目中所有 Java 代码,包括 R.java 和 .aidl 文件编译成 .class 文件。

  ● dex 工具将 .class 文件转换为 Dalvik 字节码。所有第三方库和 .class 文件同样也会被转换为 Dalvik 字节码,这样它们才能最终一并打包到 .apk 文件中。

  ● apkbuilder 工具将所有未编译资源(例如图片)、编译后的资源和 .dex 一同打包到 .apk 文件。

  ● 当 .apk 文件生成后,还需要对其进行签名(调试或发行模式),否则该 .apk 文件无法安装到安卓设备。 

  ● 最后,当你使用发行模式签名后,你还需要使用 zipalign 工具调整 .apk 文件,这样做可以减少安卓应用运行在设备上的内存占用率。

 

  注意:安卓应用有 64K method reference[1] 限制。如果达到该限制,构建过程中将打印以下错误信息:

Unable to execute dex: method ID not in [0, 0xffff]: 65536.

 

  你可以使用 load secondary dex files at runtime 和使用 ProGuard 来消除非必要的类引用。(Proguard 只在发行模式下有效)

 

 

注:

[1] 64K method reference limit 是指安卓编译器限制每个 .dex 文件只能引用 65536 个方法。

  

附:

1. Building and Running

2. 了解关于应用签名:Signing Your Applications

  

[Android] 基于 Linux 命令行构建 Android 应用(三):构建流程

标签:android   style   blog   http   color   io   使用   java   ar   

原文地址:http://www.cnblogs.com/ifantastic/p/3977672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!