使用 Python 和 SL4A 的 Android 应用程序,第 1 部分: 构建您自己的开发环境

配置您的 Windows 工作站以运行 Scripting Layer for Android

本系列文章将介绍如何使用 Python 和 Scripting Layer for Android (SL4A) 为 Google Android 平台构建应用程序。本系统的第 1 部分文章将介绍执行安装和运行所需要做的事情。

Paul Ferrill, 首席技术官, ATAC

Paul Ferrill 为计算机出版物撰写文章已有超过 20 年的时间了。他最初为 PC Magazine 撰写关于 LANtastic 和 Novell 的早期版本等产品的评论。Paul 拥有 BSEE 和 MSEE 学位,曾经为许多计算机平台和体系结构编写过软件。



2012 年 5 月 25 日

关于本系列

本系列开局篇第 1 部分将向您展示如何安装在 Android 设备上编写 Python 脚本所需要每件事。第 2 部分将介绍完成真实工作的有用脚本编写示例,此外还探讨了一些可用的 Android API 调用,包括各种 windows 版本。在最后,本系列将探讨如何像使用 Java 语言那样构建一个完整的用户界面。

关于在 Google Android 平台进行开发的一个常见误解是,必须使用 Java™ 语言编写代码。实际上,通过 Scripting Layer for Android (SL4A) 项目您将拥有了多种选项。SL4A 刚开始时候是一个才完成 20% 的项目,是由 Google 员工 Damon Kohler 开发的。几乎耗费了 2 年时间,有了 4 个主版本。

SL4A 为很多脚本编写语言(包括 Lua、Perl、Python 和 Rhino)提供了一个平台。它还支持基础的 Shell 脚本编写。现在,SL4A 项目的 Python 部分已经发展成一个独立的项目,部分原因是由于 Python 的流行,以及从主要 SL4A 版本周期分离新 Python 函数的需要。

本文主要关注于使用 Python 为 Android 平台编写应用程序。Python 是一个功能强大的工具,可以编写简单脚本和复杂的多线程应用程序。在 Android 上使用 Python 最大的优势是有机会使用成千上万行已编写好的代码,而且这些代码均是免费的。Python 是一种易于学习的语言,如果您之前从未使用过,可以在 Internet 上找到许多资源,帮助您尽快上手。

安装和设置

开始使用 SL4A 进行开发之前,必须下载和安装几个必备工具。第一个是完整的 Java Development Kit (JDK)。您可以在 Oracle Developer 网站上找到该工具的最新版本。

其次,您需要下载 Android software development kit (SDK)。在 Android 开发人员主网站中有两个格式可供下载:一个 .zip 文件和一个 .exe 文件。如果您下载和运行 .exe 文件,将会出现一个界面,要您选择 SDK 版本和想要安装的支持文件(见图 1)。

图 1. 选择您要下载的 Android SDK 选项
选择您要下载的 Android SDK

对于本文,我在 Windows® 7 64 位机上进行安装和测试。

因为本文是关于使用 Python 为 Android 平台开发应用程序的,显然您需要在开发机器上安装 Python。Windows 自身并不带 Python。在本文撰写时,SL4A Python 版本是 2.6.2。可以下载 Python 2.6 的 32 位或 64 位版本 保持兼容。

在您的 PATH 声明中添加一些 Android SDK 链接是一个很不错的主意,使得启动 SDK Manager 和其他工具变得更加容易。要在 Windows 7 上做到这一点,执行以下步骤:

  1. 按 Windows 键,并单击Search
  2. 在文本对话框,输入 Environment
  3. 单击 Edit the system environment variables
  4. 在打开的窗口中,单击 Environment Variables,然后在 User variables 列表中选择 PATH 变量。
  5. 单击 Edit,然后将该路径添加到您的 Android SDK 工具目录。

需要添加以下字符串:

 ;C:\Users\paul\Downloads\android-sdk-windows\platform-tools

在将新路径添加到一个新目录之前,必须添加分号 (;)。输入完成后,单击 OK 3 次。

在目录命中不能出现空格

如果将 SDK 安装在一个名称中带有空格的目录下,一些工具(比如模拟器)可能不能启动。C:\Program Files\android-sdk-windows 下的默认位置也是如此。

在 Android 设备上安装 SL4A,类似于其他 Android 应用程序安装流程。您可以使用您的设备浏览主 SL4A 项目网站上的 QR 代码,以下载 SL4A 安装文件。下载完成后会自动启动。此时,您可以看到一个安装界面,如图 2 所示。

图 2. SL4A 安装界面
SL4A 安装界面

单击 Install 启动该流程。

最后一步是在您的设备上安装 Python interpreter。你可以使用任何的几种方法完成。从模拟器中,您可以在浏览器搜索框(见图 3)中输入 sl4a download

图 3. SL4A 下载界面
图像显示 SL4A 下载界面

单击 PythonForAndroid_r4.apk 链接开始下载。要实际启动安装程序,通过单击并将模拟器界面顶部拖拉到界面底部,以查看通知界面。单击 Download complete 消息会启动 Python for Android 安装程序(见图 4)。

图 4. Python for Android 初始安装界面
图像显示初始 SL4A 安装界面

单击 Install 会启动一个进程,该进程下载并打开多个 .zip 文件。为了本文描述方便,只需单击主安装界面上的 Install(图 5)。

图 5. Python for Android 主安装界面
图像显示 Python 主安装界面

您应该可以看到 3 个独立进程窗口。第一个窗口显示下载,以及提取文件发送到 SD 卡。如果一切正常,出现 “Installation Successful” 消息。


Android SDK 基础

有 2 个基本方法可使用 SL4A 测试您的 Python 代码:使用一个模拟器或者使用一个真实物理设备。Android SDK 提供基础模拟器功能和工具创建一个具有与物理设备相同特征的模拟设备。在一些情况下,正如 Samsung 平板电脑附加组件,有一个预配置模拟器可供使用。

SDK Manager 可以作为一个更新管理程序和一个虚拟设备创建工具。每次当您启动 SDK Manager 时,它会连接到 Android 开发人员网站来查看新版本。(您可以单击取消,跳过这一步。)此时,您可以看到 Android SDK and AVD Manager 窗口,如图 6 所示。

图 6. Android SDK 和 AVD Manager
图像显示 Android SDK 和 AVD Manager 界面

在目录树中选择 Virtual devices 会在细节面板中显示之前定义的所有 Android 虚拟设备 (AVD)。要创建一个新模拟设备,单击 New。在 Create New Android Virtual Device (AVD) 窗口,提供 NameTargetSD Card Size 字段所需的信息。图 7 显示了测试设备的记录,名称中不能包含空格,至少得留出 100MB 用于存储。为您的目标设备选择适当的 Android 版本。该下拉菜单只显示之前下载的选项。

图 7. Create New AVD 向导
Create New Android Virtual Device (AVD) 窗口

接下来,单击 Create AVD。弹出窗口会提供新设备的详细信息。要启动任何现有虚拟器图像,选择目标,然后单击 Start。在 Launch Options 窗口,您可以继续保留默认屏幕大小,也可以选择 Scale display to real size 复选框选择更大的尺寸。值选为 7 似乎效果不错(见图 8)。启动一个空白的模拟器,选择 Wipe user data 复选框。

图 8. AVD 驱动选项
图像显示 AVD 启动选项

Android SDK 提供的另一个必不可少的工具是 Android Device Bridge (ADB)。该工具提供了一些功能,比如安装应用程序(.apk 文件)、从一个设备复制文件或者将文件复制到设备,以及在该设备上发布 Shell 命令。实际上,您也可以使用 ADB 在一个设备上启动 SL4A,这样您就可以从工作站执行程序。要在您的主机工作站和设备之前建立联系,必须使用 ADB 将 TCP/IP 流量从端口 9999 前移到设备的特定端口。打开一个命令窗口,输入以下命令:

 $ adb forward tcp:9999 tcp:42306

第二个端口号来自设备。对于最新版本的 SL4A,可以在首选项中设置这一数值。对于标准版本,必须使用 SL4A 提供的数值。

现在,启动 SL4A,然后单击 Menu。从窗口底部的 6 个选项中,单击 View,然后单击 Interpreters(见图 9)。

图 9. 从 SL4A Interpreters 菜单启动远程服务器
图像显示 Interpreters 菜单,您可以从其中启动一个远程服务器

再一次单击 Menu,然后单击 Private 启动一个私有服务器。

对于真实设备,其中的区别是 Private 使用 USB 端口启动服务器,而 Public 使用 Wi-Fi 启动。如果再一次查看通知页面,您可以看到 SL4A 服务正在运行(见图 10)。

图 10. Android 通知界面
图像显示正在运行的 SL4A 服务

单击消息查看分配的实际端口号。这种情况下,您可以使用端口号 42306 作为 adb forward 命令中的第二个 TCP 值。现在,您可以开始编写一个 Python 代码以及在该设备上进行测试。


Python for Android 中的 Hello World

在任何介绍编程文章中编写 “hello world” 程序几乎已经成了一种习惯。我这样做来证明您可以有多种方法使用 SL4A 编写和测试您的 Python 代码。下面就让我们看看这些代码是什么样子:

 import android droid = android.Android() result = droid.makeToast('Hello, world!')

每个 SL4A 脚本编写语言都使用一个导入文件(在本案例中,Python 使用 android.py),以在脚本和底层应用程序编程接口 (API) 之间设置接口。您可以直接在设备中输入该代码,使用解释器(参见 图 9)或者使用其他编辑器。要使用解释器,在 Interpreters 界面,选择 Python 2.6.2 来启动 Python 解释器。在结果界面中,您可以输入上述代码,在最后一行,您可以看到一个弹出窗口,其中有 “Hello, world!” 字样。

在一个模拟或者真实设备中执行键入可能让人觉得单调乏味。当结合 ADB 工具在 PC 上编写代码并在 Android 设备上进行测试时,Python 的 IDLE 控制台和编辑器是必不可少的。您惟一需要的是 android.py 文件的一个本地副本。您可以从 python_extras_r14.zip 文件(SL4A 下载页面上提供)中提取,或者使用 adb pull 命令将其从设备中转移。在您主系统驱动器的根目录有一个名为 SDCARD 的目录,可方便镜像模拟设备中的一切。从一个文件路径角度来说,这使得您在需要访问文件系统的本地机器上运行脚本变得很方便。图 11 显示了 IDLE 控制台上的 Hello World 脚本。

图 11. Python IDLE 控制台上的 Hello World
图像显示 Python IDLE 中的 Hello World 应用程序

如果启动服务器和执行 adb forward 命令,您将看到没有出现错误信息,而出现了 “Toast” 消息,如图 12 所示。

图 12. Hello World 弹出消息
图像显示设备上的 Hello World 弹出消息

在 Windows 中,可以通过单击 File > New Window 在 IDLE 中启动一个编辑窗口。该窗口为您提供了来自于您开发机器的一个完整的编辑和测试功能,可以在模拟或真实 Android 设备中使用。

参考资料

学习

获得产品和技术

  • 下载 SL4A,或者访问 非官方网站
  • 下载 Python for Android
  • 下载 Android SDK
  • 下载最新版本的 JDK
  • 下载并试用 IBM Mobile Technology Preview,一组代码样例和服务,可以帮助您开始构建可扩展和集成到企业中的移动应用程序。该预览包括一个 RESTful 通知服务;一个用于构建混合移动应用程序的开源框架 PhoneGap;一个轻量级的 WebSphere Application Server 运行时;以及向您演示其工作方式的样例代码。
  • IBM WebSphere Application Server Feature Pack for Web 2.0 and Mobile 包括 IBM Dojo 1.7 Toolkit、新的移动和富 Internet 应用程序 (RIA) 构建块,以及一个基于 Dojo 的图表组件。使用附带的 Rational 工具,该 Feature Pack 可帮助您采用原先面向桌面浏览器开发的 WebSphere 应用程序,对其进行调整,并将它们部署到移动设备中。
  • 以最适合您的方式 评估 IBM 产品:下载产品试用版,在线试用产品,在云环境下试用产品,或者在 SOA 沙盒 中花费几个小时来学习如何高效实现面向服务架构。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=移动开发, Open source
ArticleID=818350
ArticleTitle=使用 Python 和 SL4A 的 Android 应用程序,第 1 部分: 构建您自己的开发环境
publish-date=05252012