转自http://www.phonegap100.com/portal.php?mod=view&aid=19
作为你开发的一部分,为安卓设备开发的 Sencha Touch框架应该在安卓虚拟机中被测试。这篇博客讨论如何安装和使用安卓虚拟机,使用命令行或者Sencha Architect构建器来进行 Sencha Touch开发。
被出售和使用的Android智能手机的数量最近超过了iOS智能手机。 (2013年4月的时代杂志的一篇文章披露出来的数据)。
很多Sencha Touch开发者针对的是Android平台。这篇博客将从头到尾向你展示如何搭建Android开发环境。文章中的截图和路径是Mac OS上的,Linux上的过程几乎是相同的,Windows平台的过程也是非常相似的。
1. 安装Android SDK工具
摘要
安装Android SDK工具: 为你的操作系统下载合适的文件。
详述
在下载页面点击 "Download for Other Platforms"下拉菜单,为你的操作系统下载"SDK Tools Only"压缩文件。(对于Windows,下载zip压缩文件而不是installer.exe安装文件)。
你正在下载的并不是SDK本身,而是一个包含SDK其余安装程序的压缩文件。在下一部分我们将用SDK工具去下载真正的虚拟机。
解压Android SDK Tools到你的主目录下的"bin"文件夹下,这可能需要自己去创建。
Mac OS
对于Mac OS,将文件保存到/Users/username/bin (如果不存在“bin”文件夹则自行创建)。Android SDK在你的Mac上的完整路径是/Users/username/bin/android-sdk-macosx/。
Linux
对于Linux, 将文件保存到/home/username/bin (如果不存在“bin”文件夹则自行创建)。Android SDK在Linux上的完整路径是/home/username/bin/android-sdk-linux/。
Windows
如果你是用的是Windows 7, Windows将你的个人文件存放在C:\Users\username目录下。如果你已经安装Sencha Cmd (见后文),那么C:\Users\username\bin directory目录已经为你创建好了,如果没有的话你可以自行创建。将Android SDK解压到bin文件夹。对于Windows,Android SDK的完整路径是 C:\Users\username\bin\android-sdk-windows。
2. 安装安卓虚拟机
摘要
用你刚刚下载的Android SDK Manager,安装基于Intel的安卓虚拟机。
详述
在Android SDK目录的tools子目录下,你可以找到一个名叫“android”的可执行文件。双击它来运行 Android SDK Manager.
去掉"Android 4.2.2 (API 17)"旁边的勾,这样这一部分的所有已选择选项将被取消。你唯一需要选择的选项是"Intel x86 Atom System Image"。如果你愿意的话可以留着默认被选中的"Platform tools"和"Build-tools"两项。
由于我们使用的是Sencha Touch来开发Android应用,我们不需要任何其他的东西。
以下是完成安装的最后一步:
- 单击"Install 4 packages..."来下载和安装你选中的包。
- 点击包的名字,然后单击"Accept License"来接受许可。
- 底部的进度条将会显示安装进度,请等待直到所有的包被安装。
3. 配置并启动安卓虚拟机
摘要
为了测试我们下载的虚拟机,我们将在第一次运行的时候进行配置,然后启动虚拟机看虚拟机是否正常工作。
详述
在前一步把所有的包下载完之后,选择安卓SDK工具菜单栏上的"Tools → Manage AVDs..."。
将会出现一个对话框显示列出你已经建好的安卓虚拟设备。如果这是你第一次运行这个选项你将不会看到任何虚拟设备。单击 "New..." 来建立一个新的虚拟设备。
填好虚拟机的名字(name),设备类型(type of device)和API等级(本文使用API Level 17 即Android 4.2.2)。同时确保你勾选了"Use Host GPU" 选项。单击确定(OK)来使这些设置生效同时在设备信息摘要界面单击确定(OK)。
当你看见你的第一个安卓虚拟设备前面有一个绿色的勾的时候你就配置好了你的第一台安卓虚拟机。 单击对话框右侧的“Start...”来启动虚拟机。 在下一个窗口点击“Launch”。
如果安装没有出错,安卓虚拟机将会启动。根据不同的电脑配置启动过程可能会需要好几分钟。 看到下面的界面说明你的虚拟机已经启动了。
单击那个圆圈将看到已经在你的虚拟机上安装的软件。如果你进行到了这里说明你已经正确的安装和配置你的安卓虚拟机。
64位Linux系统的其他步骤
Android模拟器文件是一个32位二进制文件。为了让你的64位的Linux系统能运行32位文件,你需要在你的Linux版本上安装32位库。在大多数Linux系统上,默认是没有安装的。
假如你得到一个错误信息类似“emulator: file not found”,即使你看到模拟器文件在你的“工具”目录,也要在你的64位Linux系统上安装32位装载机。
Ubuntu/Debian:执行“sudo apt-get install ia32-libs”
Red Hat/Fedora:请读文档
其他版本的Linux:请谷歌搜索“ 32 bit loader for 64 bit system” 或者其他类似信息
4. 生成Android证书
摘要
创建一个证书以便下载程序到Android虚拟机或者在真机上测试时使用。
详述
要创建一个你的Android虚拟机可以使用的证书,你需要使用Java中的"keytool"程序,所以你的机器上应该安装有Java SE 1.6或者更高版本。如果你使用Mac电脑,这个已经安装好了,Windows机器也很有可能预装了Java。
打开一个终端(Terminal)或者命令提示符窗口(command prompt)输入"keytool"。如果这个命令没有找到,你可能需要访问java.com下载Java SE 1.6或更高版本。
为了简单起见,我们将私钥仓库(keystore)建立在Android SDK目录,将私钥仓库(keystore),别名(alias) 和密码(password)都设为"android1"。 (对于一个真正的证书你不能设置这么简单明显的私钥仓库和密码,但是为了保持示例演示的简单性我们这样做了。)
以下是终端中的显示内容:
$ pwd /User/username/bin/android-sdk-macosx $ keytool -genkey -v -keystore android1.keystore -alias android1 -keyalg RSA -keysize 2048 -validity 10000 Enter keystore password: (I entered "android1") What is your first and last name? [Unknown]: Patrick Chu What is the name of your organizational unit? [Unknown]: Training What is the name of your organization? [Unknown]: Sencha What is the name of your City or Locality? [Unknown]: Redwood City What is the name of your State or Province? [Unknown]: California What is the two-letter country code for this unit? [Unknown]: US Is CN=Patrick Chu, OU=Training, O=Sencha, L=Redwood City, ST=California, C=US correct? [no]: yes Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) with a validity of 10,000 days for: CN=Patrick Chu, OU=Training, O=Sencha, L=Redwood City, ST=California, C=US Enter key password for <android1> (RETURN if same as keystore password): [Storing android1.keystore] $
到现在为止,你已经有了一个叫做"android.keystore"的文件包含着你的证书。你需要用这个文件来将Sencha Touch程序打包成本地Android应用程序。
5. 编辑 packager.json
摘要
编辑"packager.json"来反射Android虚拟机环境和你在上面生成的证书文件的细节。
详述
在这一步,我们将生成一个Sencha Touch应用示例,所以我们有些东西要导入到Android虚拟机。为了完成这部,我将对你的Sencha Touch环境做以下假定:
你的本地web服务器的根目录是一个叫“htdocs”的文件夹。如果你是用的是XAMPP来安装Apache这是默认的。
你的Sencha Touch文件应该在"htdocs/touch2"目录下。
你已经安装好了Sencha Cmd。为了进行测试,在终端(Terminal)或者命令提示符窗口(command prompt)中输入"sencha" 。如果你看到Sencha Cmd帮助界面,说明Sencha Cmd已经被安装。如果没有找到命令,安装 Sencha Cmd。
转到"htdocs/touch2"目录,输入以下命令:
sencha generate app --name AndroidDemo --path ../demo
对于Windows,路径是"..\demo"
如果htdocs/demo目录不存在也没关系 -- Sencha Cmd会自动创建。当这些命令执行完毕,你将得到一个简单但是完整的Sencha Touch应用程序。如果你的web服务器在工作,你可以在http://localhost/demo它的运行。
为了告诉这个应用程序具体的安卓环境,我们需要修改"htdocs/demo/packager.json"这个文件。这些是需要我们修改的各个平台通用的属性:
"applicationId": "com.demo.AndroidDemo", /* (这个必须至少包括两用点分隔的部分) */
"platform": "AndroidEmulator",
"certificateAlias": "android1",
"certificatePassword": "android1",
"androidAPILevel": "17",
Mac OS
Mac OS的特定属性:
"certificatePath": "/User/username/bin/android-sdk-macosx/android1.keystore",
"sdkPath": "/User/username/bin/android-sdk-macosx",
替换"username"为你自己的用户名
Linux
Linux的特定属性:
"certificatePath": "/home/username/bin/android-sdk-linux/android1.keystore",
"sdkPath": "/home/username/bin/android-sdk-linux",
替换"username" 为你自己的用户名
Windows
Windows的特定属性:
"certificatePath": "C:/User/username/bin/android-sdk-windows/android1.keystore",
"sdkPath": "C:/User/username/bin/android-sdk-windows",
替换"username" 为你自己的用户名
是的,你可以也应该在你的windows路径使用使用正斜杠
保存你对文件的修改。
你几乎就要完成了!现在我们要做的就是在Android虚拟机上运行我们的程序。按照以下步骤:
启动你的Android虚拟机。当Sencha Cmd试图发送程序文件的时候,虚拟机必须在运行。
转到"htdocs/demo"目录 (你的应用程序的根目录,packager.json在那里)。
输入: sencha app package run packager.json
(注意: 为了确保Sencha Cmd的工作,你必须将你的Java可执行文件添加到你的环境变量中)
如果你足够的幸运(还需要耐心),你应该会在你的Android虚拟机上看见示例程序的运行!恭喜你!
在示例程序中点击底部的选项卡来切换到不同的界面。
摘要
为安卓模拟器安装硬件加速器是为了提高性能。这一步骤是高度推荐的。
讨论
当你在你的安卓模拟器里运行你所编写的Sencha Touch程序时,你可能注意到它运行地有些“懒散”(我认为只是最有礼貌的说词)。因为这个模拟器是完全由软件实现的,所以它总是慢慢腾腾。
不过如果你正在基于英特尔的Mac或者Windows机器上运行的话,你可能已经为安卓模拟器使用了提供硬件加速的英特尔驱动,如同VMWare的或者 Hyper-V的虚拟机器得到硬件帮助。你的英特尔处理器不得不支持英特尔虚拟化技术(VT),以便于驱动正常运行。英特尔的这个包的名字为HAX,是 “硬件加速器”简写。
注意:你将注意到在安卓的包SDK工具里,HAXM作为一个可能的安装列在最底端。按照这种方式安装HAX我遇到了一些问题。不过,可以进入上面的链接,从那个页面安装HAX。
注意:如果你正在你的个人电脑上的Windows 7上运行Hyper-V,那么为了英特尔硬件加速为你所用,你将不得不禁止使用Hyper-V。Hyper-V将为了独自使用而锁定虚拟特性,因此阻止其他会虚拟化程序运行。
7. 更多资源
Chrome移动模拟器:在Chrome里,你可以模拟触碰事件、屏幕分辨率、设备用户代理、设备方向和定位,所有这一切都来自于Chrome内部。这允 许你在主机的浏览器里执行大量的开发和调试,这个要快很多,然后在模拟器里运行应用来进行每天一次的测试和完整性检查.
远端调试安卓上的应用:使用你主机上的Chrome调试你安卓浏览器里的互联网应用。
更多的信息
你是不是对Sencha Touch应用有一个很好的认识,不过你不能确定什么是开发Sencha Touch应用的最好的方法? Sencha培训全年 在全世界的任何地方给你提供包括Sencha Touch和ExtJS的直播的、综合性的课程。Secha认证老师教你最简洁和最佳实践,使你获得Sencha Touch 应用,并尽可能快的运行它,其中包含IOS和安卓下的部署。
原文来自: http://www.sencha.com/blog/android-setup-for-sencha-touch/
我按照上面的方法配置了,到最后报错,提示STBuild is no longer supported in Cmd 5.
提示版本的问题,待解决。