class="Paragraph SCX126199646">使用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环境变量:
最简单的解决办法,那就是,在一个没有空格目录下安装JDK,例如:
在Debug模式构建
—————————————————————————————————————————————————————————————
为了立刻测试和调试应用程序,你可以在debug模式下构建你的应用程序,并且立即在模拟器上安装。在debug模式中,构建工具使用debug key自动签名你的应用程序,并且使用zipalign优化包。
在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模式下编译你的项目:
这样在这个项目的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实体。例如:
保存你的修改。现在你能在release模式构建签名的apk:
打开命令行,导航至你的项目的根目录。
使用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工具:
安装你的应用程序
从你的SDK的tools/目录,在模拟器安装这个.apk:
在你构建你的应用程序之后,你的apk文件(使用release或者debug key签名)在你的项目bin/目录中。
如果有超过一个模拟器在运行,你必须使用-s选项,使用它的serial number,指定在哪个模拟器安装这个应用程序。例如:
为了查看可用的设备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。
一旦你的设备设置完成
-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导出并签名你的应用程序指南。