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

  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 都支持两种模式下的自动签名。

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

构建过程

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

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

  整个构建过程大体如下:

  ● 安卓资源打包工具(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

  

时间: 2024-10-27 04:07:20

[Android] 基于 Linux 命令行构建 Android 应用(三):构建流程的相关文章

[Android] 基于 Linux 命令行构建 Android 应用(七):自动化构建

本章将演示如何基于 Linux 命令行构建 Android 应用,在开始本章之前,希望你已经阅读之前几章内容. 本文环境为 RHEL Sandiego 32-bits,要基于 Linux CLI 构建 Android 应用,先决环境为: 1. JDK[1] 2. Android SDK 3. Apache Ant 安装过程需要使用 sudo 权限. 1. 搭建环境 1.1. 安装 JDK JDK 是构建 Android 应用先决条件之一,由于版权原因,一般安装 Open JDK. RHEL 中使

[Android] 基于 Linux 命令行构建 Android 应用(二):命令行管理项目

创建 Android 项目 在命令行创建 Android 项目需要用到 android 工具(该工具由 Android SDK 提供,位于 <sdk>/tools/ 目录下.).它能自动生成一个项目目录,其中包含若干默认应用程序文件,存案文件,配置文件和一个构建文件. 命令用法[1]: $ android create project \ --target <target_ID> \ --name <your_project_name> \ --path path/to

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

谷歌提供的 Android SDK 支持 Ant 自动构建[1],你可以使用调试和发行两种模式进行构建,两种模式不同之处在于调试模式 Ant 会调用内置的调试密钥,而发行模式调用你提供的私钥. 首先安装 Ant,并且将它添加到你的执行路径 PATH 里[2]. 调试模式构建 在调试模式下,Ant 会自动使用一个调试密钥对你的安卓应用进行签名,并且使用 zipalign 进行优化. 要进行调试模式下的构建,首先在命令行进入安卓项目根目录,然后使用 Ant 启动调试模式构建: $ ant debug

[Android] 基于 Linux 命令行构建 Android 应用(五):Ant 构建命令

Android SDK 提供的 android 工具可以在项目根目录自动生成 Ant 构建文件 build.xml[1].进入项目根目录后,你可以使用以下 Ant 命令[2]. ant clean 清理项目.该命令负责清理本文列出的其他 Ant 命令产生的输出结果. ant debug 构建调试包. ant emma debug 以开启 instrumentation 的方式构建测试项目,可用于代码覆盖的测试. ant release 构建发行包. ant instrument 构建支持 ins

[Android] 基于 Linux 命令行构建 Android 应用(一):关于 Android 项目

关于 Android 项目 项目是保存源代码和资源文件的容器. 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包.因此强烈建议使用 Eclipse + ADT 或者 android 命令创建 Android 项目. 你可以使用 Eclipse + ADT 创建三种项目,它们主要结构相同但功用不同,分别是 Android Projects.Test Projects 和 Library Projects.本文我们主要关注 Android Projects. 一个

7个基于Linux命令行的文件下载和网站浏览工具

7个基于Linux命令行的文件下载和网站浏览工具 时间:2015-06-01 09:36来源:linux.cn 编辑:linux.cn 点击: 2282 次 Linux命令行是GNU/Linux中最神奇迷人的部分,它是非常强大的工具.命令行本身功能多样,多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大.Linux Shell支持多种不同类型的网 Linux命令行是GNU/Linux中最神奇迷人的部分,它是非常强大的工具.命令行本身功能多样,多种内建或者第三方的命令行应用使得Linu

Linux 命令行更新android sdk

命令: android update sdk --no-ui 查看哪些包可以更新命令是: android list sdk 也可以只更新需要的包,只需要加上--filter, android update sdk --filter <component> --no-ui 例如: android update sdk -u --filter platform-tools,android-16,extra-android-support 参考资料:http://stackoverflow.com/

5个基于Linux命令行的文件下载和网站浏览工具

导读 命令行是GNU/Linux中最神奇迷人的部分,它是非常强大的工具;命令行本身功能多样,多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大.Linux Shell支持多种不同类型的网络应用,无论是BT下载软件,专用下载器或者互联网冲浪. 5个命令行互联网工具 这里我们介绍了5个很好的命令行互联网工具,它们非常有用,也很容易上手. 1. rTorrent rTorrent是基于文本,用C++编写,追求高性能的Torrent客户端.支持大部分标准的Linux发行版,包括FreeBSD

开发利器_ImageMagick.基于Linux命令行的图片缩放/编辑/格式转换?

简单介绍: ImageMagick是一系列的用于修改,加工图像的命令行工具,能够快速地使用命令行对图片进行操作,对大量的图片进行批处理,它能执行相当多操作,本文涉及的只是开发中常用的技能. 快速安装: yum -y install epel-release yum install -y ImageMagick ImageMagick-devel 格式转换: convert 1.png 1.jpg 缩放图像: convert 1.jpg -resize 499x 1.jpg 说明: ImageMa