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

  谷歌提供的 Android SDK 支持 Ant 自动构建[1],你可以使用调试和发行两种模式进行构建,两种模式不同之处在于调试模式 Ant 会调用内置的调试密钥,而发行模式调用你提供的私钥。

  首先安装 Ant,并且将它添加到你的执行路径 PATH 里[2]

调试模式构建

  在调试模式下,Ant 会自动使用一个调试密钥对你的安卓应用进行签名,并且使用 zipalign 进行优化。

  要进行调试模式下的构建,首先在命令行进入安卓项目根目录,然后使用 Ant 启动调试模式构建:

$ ant debug

  该命令会在项目的 bin/ 目录下创建一个名为 <your_project_name>-debug.apk 的文件,该 .apk 文件已经使用调试密钥进行了签名,并且经过 zipalign 优化。

  每次项目中的资源发生变化,你都必须重新运行该命令进行编译和打包。

发行模式构建

  当你准备发行你的安卓应用时,就必须使用发行模式进行构建,使用该模式前,你先得有一个私有密钥,并且使用该密钥对发行包进行签名。

  你现在有两种构建方案,一是构建一个未签名的发行包然后手动签名和优化,另一个是使用脚本自动签名和优化。

构建未签名发行包

  你可以选择不签名构建,但随后你必须要进行手动签名和优化。

  要进行不签名构建,在命令行进入项目根目录,使用 Ant 在发行模式下编译你的项目:

$ ant release

  该命令会在项目的 bin/ 目录下创建一个名为 <your_project_name>-unsigned.apk 的文件。但该文件无法安装到安卓设备,直到你使用了你的私钥对其进行签名后方可。你接下来要做的事情就是对 .apk 文件签名并使用 zipalign 工具对其优化,更多参见 Signing Your Applications

构建已签名和优化包

  如果你想的话,你可以配置 Android 构建脚本来自动签名和优化你的应用包。具体做法是编辑 ant.properties 文件,在其中配置要使用的私钥 keystore 路径以及密钥别名。这样 Ant 在构建过程中会弹出对话要求输入密钥和密钥别名的密码,之后你将得到一个可以投放市场的最终发行包[3]

  具体做法为在项目根目录找到并编辑 ant.properties 文件,如果没有该文件就创建一个。在该文件添加两个字段 key.store 和 key.alias。例如:

key.store=path/to/my.keystore
key.alias=mykeystore

  保存退出,并运行 Ant 命令开始构建:

$ ant release

  中途会要求输入 keystore 和别名密码,最终你会在 bin/ 目录下得到一个名为 <your_project_name>-release.apk 的文件,该文件已经使用 ant.properties 中指定的私钥签名,并且经过 zipalign 优化,你可以随时安装与发行该文件。你可以将该文件上传至 web 服务器,然后在安卓设备中使用浏览器打开下载链接来完成自动安装。

  

注:

[1] Android SDK 提供的 android 工具能自动生成一个 build.xml 文件,Ant 会使用该文件进行自动构建。Android SDK 中没有附带 Ant 工具,你可以从 Apache Ant 主页下载安装 Ant。

[2] 在调用 Ant 之前,你还要确保你的 JDK 路径声明在了环境变量 JAVA_HOME 中。JDK 在 Windows 的默认安装路径为 "Program Files" 文件夹,由于该文件夹中含有空格符,因此会导致 ant 失败。要修复这个问题,可以将 JAVA_HOME 环境变量设置为如下:

set JAVA_HOME=c:\Progra~1\Java\<jdkdir>

但最好的方法是将 JDK 安装到一个没有空格符的目录下。

[3] 由于在 Ant 构建过程中你输入的密码会显示在屏幕上,如果你对此有顾虑,可以选择使用 Jarsigner 工具进行手动签名和优化。

附:

1. Signing Your Applications - 安卓应用签名。

时间: 2024-10-08 22:14:15

[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 应用(五):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. 一个

android安装Linux,玩转Android

前一两天,看着三星更新了Android6.0的名单,但自己的手机是小米3,也想试试Android原生,就去刷了Android6.0适应小米版,来自大神@秋叶随风ivan的更改版.用了几天,发现Android6.0不太完善,想自己更改完善系统,奈何能力不够.就把手机刷回了MIUI7.然后看到小米可以刷Linux就准备去试试.(其实手机上玩没啥用,平板还可以试试!~~,但还是挺好玩的) 首先我们要知道,这个是在Android上运行的,理论上是Android手机都可以刷,其次我们不用担心,原来的And

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

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

Android基于mAppWidget实现手绘地图(四)--如何附加javadoc

以下内容翻译自:FAQ——How to attach javadoc to the library? 如何把javadoc添加到代码库中? How to attach javadoc to the library? 项目属性——>Java Build Path——>Libraries.选择mappwidget的javaDoc位置,然后点击Edit 选择“Javadoc in archive” 单选按钮 选择“Workspace file” 单选按钮 在“Archive path”编辑区域中写上

Android和Linux应用综合对比分析

公开发布的序言: 这篇文章是作于2012年7月12日,也就是自己刚从大学校园迈向工作岗位的时候遇到的第一个题目"请你针对我们公司目前的应用行业场景做一下调研:在终端做应用程序开发的平台是选择Linux好还是Android好"而写的. 在踏出校园之前,自己从来没有接触过安卓的开发领域(除了在2010年下半年买了一部分安卓的智能手机外).接到这个题目后,自己也没有退缩,硬着头皮接下来了,然后凭借自己在学校时候学的一点检索信息写学术论文的小功底,三天之内写下了这篇长达1万4千多字的调研报告,

Android和Linux的关系

①.Android采用Linux作为内核 ②.Android对Linux内核做了相应的修改,使Linux适应在移动设备上使用 ③.Android一开始是Linux的一个分支,由于无法并入Linux的主开发树,被从开发树中移除 一.Android是继承于Linux Android是在Linux内核基础之上运行,提供的核心系统服务包括安全.内存管理.进程管理.组网组和驱动模型等内容,内核部分相当于介于硬件层和系统中其他软件组之间的一个抽象层次.所以,严格来说不算是Linux操作系统.由于Androi