Android Developers:在命令行构建和运行
使用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模式下构建:
打开命令行,导航到你的项目的根目录。
使用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文件:
打开命令行,导航至你的项目的根目录。
使用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:
打开命令行,导航至你的项目的根目录。
使用Ant在release模式编译你的项目:
ant release
当提示,输入你的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。
为了运行你的应用程序:
打开AVD Manager,并启动一个虚拟设备
从你的SDK的platform-tools/目录,使用avd选项运行android工具:
android avd
安装你的应用程序
从你的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:在命令行构建和运行的更多相关文章
- [Android] 基于 Linux 命令行构建 Android 应用(七):自动化构建
本章将演示如何基于 Linux 命令行构建 Android 应用,在开始本章之前,希望你已经阅读之前几章内容. 本文环境为 RHEL Sandiego 32-bits,要基于 Linux CLI 构建 ...
- [Android] 基于 Linux 命令行构建 Android 应用(六):Android 应用签名
Android 要求所有应用在安装前必须使用证书进行数字签名.Android 使用该证书来确定一个应用以及其作者身份,该证书不要求由证书发行机构颁发,因此 Android 应用经常使用自我签名的证书, ...
- [Android] 基于 Linux 命令行构建 Android 应用(四):命令行构建
谷歌提供的 Android SDK 支持 Ant 自动构建[1],你可以使用调试和发行两种模式进行构建,两种模式不同之处在于调试模式 Ant 会调用内置的调试密钥,而发行模式调用你提供的私钥. 首先安 ...
- [Android] 基于 Linux 命令行构建 Android 应用(二):命令行管理项目
创建 Android 项目 在命令行创建 Android 项目需要用到 android 工具(该工具由 Android SDK 提供,位于 <sdk>/tools/ 目录下.).它能自动生 ...
- [Android] 基于 Linux 命令行构建 Android 应用(三):构建流程
Android 应用的构建过程就是将 Android 项目中的文件和资源进行编译和打包,最后将结果输出到 .apk 文件..apk 文件是保存二进制文件的容器,它包含了运行安卓应用所需的所有信息,例如 ...
- [Android] 基于 Linux 命令行构建 Android 应用(五):Ant 构建命令
Android SDK 提供的 android 工具可以在项目根目录自动生成 Ant 构建文件 build.xml[1].进入项目根目录后,你可以使用以下 Ant 命令[2]. ant clean 清 ...
- [Android] 基于 Linux 命令行构建 Android 应用(一):关于 Android 项目
关于 Android 项目 项目是保存源代码和资源文件的容器. 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包.因此强烈建议使用 Eclipse + ADT 或者 ...
- MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。
1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...
- 如何使用命令行编译和运行java文件
相信大家现在一般都在使用IDE环境来开发运行java文件,但我觉得可以在命令行里面简单运行java文件,技多不压身. 接下来我来说一下编译和运行java文件: 第一步,首先下一个入门程序(注意:一定要 ...
随机推荐
- 如何使用 orachk 工具
Oracle RAC 安装完毕后的健壮性是一个令人头疼的问题.之前Oracle为之专门推出了raccheck工具,确实方便了我们这些个苦逼的DBA.现在Oracle在raccheck的基础之上又推出了 ...
- RubyWin32Api Win32OLE
#ruby提供了多种运行外部程序的方法 #1.%x %x不需要使用引号包含. #2. system方法 #3.exec类似system但是会中断当前的代码执行 #system和exec不能捕获执行程序 ...
- table_open_cache
当 MySQL 访问一个表时,如果该表在缓存中已经被打开,则可以直接访问缓存:如果还没有被缓存,但是在MySQL表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区:如果表缓存满了,则会按照一定的规则 ...
- POJ 1160 Post Office
题意:有n个村庄,要在其中m个村庄里建邮局,每个村庄去邮局的代价为当前村庄到最近的一个有邮局村庄的路程,问总最小代价是多少. 解法:dp.dp[i][j]表示在前j个村庄建立i个邮局后的代价,则状态转 ...
- [Everyday Mathematics]20150118
设 $X$ 是线性空间, $\phi_1,\cdots,\phi_n,\phi$ 是 $X$ 上的线性泛函, 试证: $$\bex \phi\in \span\sed{\phi_1,\cdots,\p ...
- Winform使用DevExpress的WaitDialogForm画面 z
使用了DevExpress的WaitDialogForm 在应用程序加载开始时新建一个线程,并将loading画面show起来,在应用程序画面弹出前将该线程终止. 代码: private DevExp ...
- 《Python核心编程》 第四章 Python对象- 课后习题
练习 4-1. Python对象.与所有Python对象有关的三个属性是什么?请简单的描述一下. 答:身份.类型和值: 身份:每一个对象都有一个唯一的身份标识自己,可以用id()得到. 类型:对象的 ...
- 【windows核心编程】DLL相关(2)
关于DLL的延迟加载 延迟加载DLL,使用的是隐式加载方式,当为exe使用的DLL指定为延迟加载的时候,连接器会将exe的[导入段]中去除该DLL的相关信息,同时在exe中嵌入一个新的[延迟加载段]表 ...
- ubuntu 14.04 允许root 登录
在/etc/lightdm/lightdm.conf里添加一下两句: greeter-show-manual-login=true allow-guest=false
- 基于Hbase数据的Mapreduce程序环境开发
一.实验目标 编写Mapreduce程序,以Hbase表数据为Map输入源,计算结果输出到HDFS或者Hbase表中. 在非CDH5的Hadoop集群环境中,将编写好的Mapreduce程序整个工程打 ...