使用 Python 和 SL4A 的 Android 应用程序,第 1 部分

构建您自己的开发环境

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

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用 Python 和 SL4A 的 Android 应用程序,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:使用 Python 和 SL4A 的 Android 应用程序,第 1 部分

敬请期待该系列的后续内容。

关于在 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
选择您要下载的 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 次。

在 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 界面
图像显示 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 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 服务
图像显示正在运行的 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 应用程序
图像显示 Python IDLE 中的 Hello World 应用程序

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

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

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


相关主题


评论

添加或订阅评论,请先登录注册

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