使用Ant构建脚本构建你的应用程序有两种方式:一种用于测试/调试你的引用程序—debug模式—另一种用于构建你最终发布的包-release模式。无论你使用哪种方式构建你的应用程序,它必须在安装在模拟器或者设备之前被签名—当以debug模式构建的时候使用debug key,当以release模式构建的时候使用你自己的private key。

无论你使用debug模式或者release模式构建,你需要使用Ant工具来编译和构建你的项目。这将创建你能安装在模拟器或者设备上的.apk文件。当你以debug模式构建的时候,.apk文件自动通过SDK工具使用debug key签名,所以立即能安装在模拟器或者附加的开发设备中。当你以release模式构建的时候,这个.apk文件是没有被签名的,所以你必须运用Keytool和Jarsinger,使用你自己的private key手工签名。

你阅读并理解Signing Your Applications是非常重要的,尤其是一旦你准备发布你的应用程序和终端用户共享它的时候。那个文档讲述了生成private key和使用它签名你的.apk文件的过程。如果你仅仅是刚开始,可是,你能在模拟器或者你自己的开发设备上,通过以debug模式构建,快速运行你的应用程序。

如果你没有Ant,你能从Apache Ant官网上获取它。安装它并确保它在你的可执行PATH。在你调用Ant之前,你需要声明JAVA_HOME环境变量来指定JDK被安装的路径。

注意:当你在Windows中安装JDK的时候,默认是安装在“Program File”目录中。因为空格,这个位置将会导致ant失败。为了解决这个问题,你能像这样指定JAVA_HOME环境变量:

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

最简单的解决办法,那就是,在一个没有空格目录下安装JDK,例如:

c:\java\jdk1.6.0_02 

在Debug模式构建

—————————————————————————————————————————————————————————————

为了立刻测试和调试应用程序,你可以在debug模式下构建你的应用程序,并且立即在模拟器上安装。在debug模式中,构建工具使用debug key自动签名你的应用程序,并且使用zipalign优化包。

在debug模式下构建:

  1. 打开命令行,导航到你的项目的根目录。

  2. 使用Ant在debug模式编译你的应用程序:

ant debug 

这在项目的bin/目录中创建你的调试.apk文件,名字为<your_project_name>-debug.apk,这个文件已经使用debug key签名,并且zipalign优化。

每次你改变一个源文件或者资源,你必须再次运行Ant为了打包你的应用程序的最新版本。

为了在模拟器上安装和运行你的应用程序,阅读下面的章节Running on the the Emulator。

在Release模式构建

—————————————————————————————————————————————————————————————

当你准备向终端用户分发你的应用程序的时候,你必须以release模式构建你的应用程序。一旦你完成在release模式的构建,建议对最终的.apk文件进行附加的测试和调试。

在你开始以release模式构建你的应用程序之前,注意你必须使用private key签名你的最后应用程序包,然后使用zipalign工具优化它。以release构建这里有两种方式:在release模式构建一个为签名的包,然后手工签名并优化这个包,或者使用构建脚本签名并优化你的包。

未签名构建

如果你未签名构建你的应用程序,然后你将需要手工签名和优化这个包。

为了以release模式构建一个未签名的.apk文件:

  1. 打开命令行,导航至你的项目的根目录。

  2. 使用Ant在release模式下编译你的项目:

ant release 

这样在这个项目的bin/目录下创建了你的Andorid应用的.apk文件,名字为<your_project_name>-unsigned.apk。

注意:注意在这个时候这个.apk文件是未签名的,并且直到你使用你的private key签名前不能被安装。

一旦你创建了未签名的.apk文件,你的下一步是使用你的private key签名这个.apk文件,然后使用zipalign优化它。为了完成这个步骤,阅读Signing Your Applicaitons。

当你的apk文件已经被签名和优化的时候,它已经可以被发布给终端用户。你应该在不同的设备或者AVD测试这个最终的构建,来确保它在不同的平台顺畅运行。

签名和优化构建

如果你想,你可以配置Android构建脚本来自动签名和优化你的应用程序包。如果这样做,你必须在你的项目的ant.properties文件中提供你的keystore路径和你的key别名名称。使用提供的这些信息,当你以release模式构建的时候,构建脚本将提示你输入你的keystore和别名密码,并产生你应用程序最终的包,它已经可以发布。

当心:当以Ant的方式处理输入的时候,在构建的过程中你输入的密码将可见。如果你担心你的keystore和别名密码在屏幕中可见,那么你可能更愿意使用Jarsinger(或者相似的工具)执行手工签名应用程序。为了执行手工的执行签名过程,未签名构建,然后跟着Signing Your Applications继续。

为了指定你的keystore和alias,打开项目的ant.properties文件(在你的项目的跟目录中寻找),并输入key.store和key.alias实体。例如:

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

保存你的修改。现在你能在release模式构建签名的apk:

  1. 打开命令行,导航至你的项目的根目录。

  2. 使用Ant在release模式编译你的项目:

ant release 
  1. 当提示,输入你的keystore和alias密码。

当心:如上面所描述的,你的密码将会在屏幕中可见。

这样在项目的bin/目录中创建了你的Android应用程序的.apk文件,名字为<your_project_name>-release.apk。这个.apk文件已经使用了在ant.properties文件中指定的private key签名,并使用zipalign优化。它已经可以安装和发布。

在release模式完成构建和签名

一旦你使用private key完成对你的应用程序的签名,你在模拟器或者设备上安装并运行它。你也能尝试从web服务器上向设备上安装它。向网站上传这个签名的.apk文件,然后在你的Android网页浏览器中加载这个.apk的URL,来下载这个应用程序并开始安装。(在你的设备中,确保启动Settings>Applications>Unknown sources。)

在模拟器上运行

——————————————————————————————————————————————————————————

在你能在Android模拟器上运行你的应用程序之前,你必须Crate an AVD。

为了运行你的应用程序:

  1. 打开AVD Manager,并启动一个虚拟设备

从你的SDK的platform-tools/目录,使用avd选项运行android工具:

android avd  
  1. 安装你的应用程序

从你的SDK的tools/目录,在模拟器安装这个.apk:

adb install <path_to_your_bin>.apk 

在你构建你的应用程序之后,你的apk文件(使用release或者debug key签名)在你的项目bin/目录中。

如果有超过一个模拟器在运行,你必须使用-s选项,使用它的serial number,指定在哪个模拟器安装这个应用程序。例如:

adb -s emulator-5554 install path/to/your/app.apk 

为了查看可用的设备serial number列表,执行adb devices。

如果在模拟器上你没有看见你的应用程序,尝试关闭模拟器,从AVD Manager再次启动这个虚拟设备。某些时候,当你第一次安装应用程序,它不会出现在应用程序启动器中,或者访问其它应用程序。这时因为包管理器通常仅仅在模拟器启动的时候完整检测清单。

一定要创建多个AVD来测试你的应用程序。你应该创建为每个平台和你的应用程序兼容的屏幕类型,创建一个AVD。例如,如果你的应用程序使用Android 4.0(API Level 14)平台编译,你应该为等于或大于4.0的每个平台和你支持的每个屏幕类型,创建一个AVD,然后在上面测试你的应用程序。

提示:如果你仅仅有一个模拟器在运行,你可以仅仅一步就构建你的应用程序并在模拟器上安装它。导航到你的项目的根目录,使用Ant工具编译的install模式:ant install。这将构建你的应用程序,

在设备上运行

——————————————————————————————————————————————————————————

更多信息请阅读Setting up a Device for Developerment。

一旦你的设备设置完成

adb -d install path/to/your/app.apk 

-d标识指定你想使用附加的设备(在你还有一个模拟器运行的情况)。

更多关于上面使用的工具的信息,请查阅下面的文章:

  • android Tool

  • Android Emulator

  • Android Debug Bridge(ADB)

应用程序签名

—————————————————————————————————————————————————————————

当你开始开发你的应用程序,明白在系统在模拟器或者设备上安装它们之前所有的Android应用程序必须数字化签名。这里有两种方式实现它:使用debug key(为了立即在模拟器或者开发设备上测试)或者使用private key(用于应用程序发布)。

Android构建工具帮助你使用debug key在构件时自动签名你的apk文件。这意味这你能编译并且在模拟器上安装你的应用程序,并不需要生成一个你自己的private key。然而,请注意,如果你想发布你的应用程序,你必须使用你自己的private key签名你的应用程序,而不是通过SDK工具生成debug key。

ADT插件帮助你在将它们安装到模拟器和开发设备之前,快速使用debug key签名你的apk文件。这意味着你能在没有生成你自己的private key之前,从Eclipse中快速运行你的应用程序。没有你需要具体执行的动作,提供的ADT已经访问了Keytool。然而,请注意如果你想发布你的应用程序,你必须使用你的private key签名你的应用程序,而不是使用SDK工具生成的debug key。

请阅读Singing Your Applications,它为Android应用程序签名提供了一个全面的指南,和它对于一个Android开发人员意味着什么。这个文档也包含一个使用ADT的Export Wizard导出并签名你的应用程序指南。

Android Developers:在命令行构建和运行的更多相关文章

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

    本章将演示如何基于 Linux 命令行构建 Android 应用,在开始本章之前,希望你已经阅读之前几章内容. 本文环境为 RHEL Sandiego 32-bits,要基于 Linux CLI 构建 ...

  2. [Android] 基于 Linux 命令行构建 Android 应用(六):Android 应用签名

    Android 要求所有应用在安装前必须使用证书进行数字签名.Android 使用该证书来确定一个应用以及其作者身份,该证书不要求由证书发行机构颁发,因此 Android 应用经常使用自我签名的证书, ...

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

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

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

    创建 Android 项目 在命令行创建 Android 项目需要用到 android 工具(该工具由 Android SDK 提供,位于 <sdk>/tools/ 目录下.).它能自动生 ...

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

    Android 应用的构建过程就是将 Android 项目中的文件和资源进行编译和打包,最后将结果输出到 .apk 文件..apk 文件是保存二进制文件的容器,它包含了运行安卓应用所需的所有信息,例如 ...

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

    Android SDK 提供的 android 工具可以在项目根目录自动生成 Ant 构建文件 build.xml[1].进入项目根目录后,你可以使用以下 Ant 命令[2]. ant clean 清 ...

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

    关于 Android 项目 项目是保存源代码和资源文件的容器. 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包.因此强烈建议使用 Eclipse + ADT 或者 ...

  8. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。

    1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...

  9. 如何使用命令行编译和运行java文件

    相信大家现在一般都在使用IDE环境来开发运行java文件,但我觉得可以在命令行里面简单运行java文件,技多不压身. 接下来我来说一下编译和运行java文件: 第一步,首先下一个入门程序(注意:一定要 ...

随机推荐

  1. Ejabberd源码解析前奏--配置

    一.基本配置     配置文件将在你第一次启动ejabberd时加载,从该文件中获得的内容将被解析并存储到内部的ejabberd数据库中,以后的配置将从数据库加载,并且任何配置文件里的命令都会被添加到 ...

  2. 查询MySQL锁等待的语句

    select 'Blocker' role,    p.id,    p.user,    left(p.host, locate(':', p.host) - 1) host,    tx.trx_ ...

  3. hdu 3038 How Many Answers Are Wrong(种类并查集)2009 Multi-University Training Contest 13

    了解了种类并查集,同时还知道了一个小技巧,这道题就比较容易了. 其实这是我碰到的第一道种类并查集,实在不会,只好看着别人的代码写.最后半懂不懂的写完了.然后又和别人的代码进行比较,还是不懂,但还是交了 ...

  4. PIG的配置

    Pig是一个客户端应用程序,就算你要在Hadoop集群上运行Pig,也不需要在集群上装额外的东西.Pig的配置非常简单: 1.下载pig,网址http://pig.apache.org/ 2.在机器上 ...

  5. codeforces 681D Gifts by the List dfs+构造

    题意:给你一个森林,表示其祖先关系(自己也是自己的祖先),每个人有一个礼物(要送给这个人的固定的一个祖先) 让你构造一个序列,使得的对于每个人,这个序列中第一个出现的他的祖先,是他要送礼物的的那个祖先 ...

  6. delegate 为什么用 weak属性

    weak指针主要用于“父-子”关系,父亲拥有一个儿子的strong指针,因此是儿子的所有者:但是为了阻止所有权回环,儿子需要使用weak指针指向父亲:你的viewcontroller通过strong指 ...

  7. CSS hack大全

    1.什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准),以 ...

  8. PHP $_SERVER的详细参数及说明

    $_SERVER['PHP_SELF']#当前正在执行脚本的文件名,与documentroot相关. $_SERVER['argv']#传递给该脚本的参数. $_SERVER['argc']#包含传递 ...

  9. Seam carving 学习笔记

    今天首次接触了图像编辑中的seam carving知识,感觉挺神奇的.虽然我自己可能理解的不是很深刻,但是记录下来,总是好的. seam carving直接翻译过来是“线裁剪”的意思.它的主要用途是对 ...

  10. 【原】Storm分布式RPC

    5. Storm高级篇 序列化 分布式RPC High level overview LinearDRPCTopologyBuilder Local mode DRPC Remote mode DRP ...