IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Linux | Open source  >

为 Nokia N810 开发感知 GPS 的应用程序,第 1 部分: 开发环境

Eclipse 和 Python 是完成此任务的适当工具

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 中级

Paul Ferrill, CTO, ATAC

2008 年 12 月 29 日

学习如何配置针对 Nokia N810 Internet Tablet 的开发环境,包括在目标开发机器上针对 Python 语言设置 Eclipse。

Nokia N810 Internet Tablet 是一种小巧的设备,但是提供许多功能。它提供几个标准应用程序和到 Maemo 网站的链接,可以从这个网站下载许多其他应用程序。(参见下面 参考资料 中的链接)。

不幸的是,不一定能够找到提供您需要的功能的应用程序。在这种情况下,基本上只有两种解决方法:要么请人替您开发应用程序,要么自己开发。developerWorks 文章 “Linux 的魅力:Nokia N810 开发” 通过构建一个警报应用程序讲解如何使用 N810 的警报 API。这篇文章主要讨论如何使用现有的 API 和标准 SDK。

本系列讲解如何使用 N810 和它内置的 GPS 接收器构建感知 GPS(全球定位系统)的应用程序。

开发方式

选择适当的开发方式会直接影响总体编程体验,并最终影响效率。在选择开发工具时,涉及的主要问题之一是选择使用的编程语言。在默认情况下,Maemo 开发环境支持 C 语言,但是可以添加对 C++ 和 Python 的支持。Maemo 网站提供一个 how-to 文档,介绍如何添加其他语言的元包(参见 参考资料)。

高效的应用程序开发需要一个优秀的编程环境,其中应该包含代码编辑、编译和调试工具。对于嵌入式应用程序,另一个关键需求是能够在模拟环境中或直接在目标设备中运行。 通过简化编辑、编译和测试过程,帮助程序员提高生产力。

在过去,为 Nokia Internet Tablet 开发应用程序的主要方法是使用 SDK 和 Scratchbox(参见 参考资料)。这仍然是一种可行的方法,这在一个自含的环境中提供一种基于模拟的开发方法。惟一的缺点是,在设备上部署测试用的解决方案比较麻烦。这实际上不是大问题,但是要求正确地完成几个步骤。

在选择编程语言时,关键因素是支持库的数量以及示例代码的数量和质量,这有助于为项目提供一个良好的起点。应该选择一种开发应用程序比较方便的编程语言。许多程序员熟悉多种语言,但是往往有一两种是他们用起来最舒服的。

对于此项目,由于许多原因,我选择了 Python。这种语言是大家熟悉的,而且它提供许多库,能够处理大多数场景。 已经有许多针对 Maemo 环境编写的 Python 应用程序,借鉴这些应用程序有助于加快学习过程。





回页首


Eclipse 和 PluThon

Eclipse 编辑器为用多种语言开发应用程序提供一个坚实的基础。它是免费的,很容易安装在任何平台上。使用 Eclipse 开发 Python 应用程序需要 Pydev 插件(参见 参考资料)。在安装 Eclipse 之后,可以使用更新管理器添加更多特性。

Eclipse 通过 Maemo 网站介绍的一个集成层完全支持 Maemo 开发。提供对 Maemo version 4.0.x Chinook 和 version 4.1.x Diablo SDK 以及 N800 和 N810 设备的支持。在 Diablo 发布之后增加的新特性包括 PC Connectivity 工具、用于启动 Scratchbox 模拟器的 ESBox 插件以及用于在设备上执行的 PluThon 插件。

PluThon 和 PC Connectivity 工具的组合是一项重大的进步,它使我们能够通过 SSH 连接链接到 tablet、下载应用程序和工具并在设备上直接运行应用程序。正确地配置所有方面需要一定的努力,但这肯定是值得的。图 1 显示已经装载了 Hildon Hello World 应用程序并准备在设备上运行。


图 1. Eclipse 和 Pluthon
Eclipse 和 Pluthon




回页首


设置开发环境

设置并运行完整配置的 Maemo 开发环境的最快方法之一是,从 Maemo 网站下载 Maemo SDK VMware Appliance。在此之后,只需获得 VMware Player(参考资料 中提供这两者的链接)。启动 Maemo SDK VMware Appliance 就会出现一个基于 K Desktop Environment (KDE) 的 Linux® 环境,其中包含为 Nokia N800 和 N810 设备开发应用程序所需的所有东西。

对于此项目,在设备上直接测试应用程序是很重要的,因为需要 GPS 功能。可以使用 PluThon 插件执行测试。所有安装工作都在 Eclipse 环境中执行。详细的说明参见 PluThon 安装页面(参见 参考资料)。必须在 VMware Appliance 环境中执行所有步骤,因为当前版本在默认情况下不安装它。

连接 tablet 需要满足几个前提条件并做一些配置。首先,必须安装 PluThon 安装页面上提到的三个包。为了完成连接,PluThon 需要在 tablet 上运行一个 SSH 服务器。在 tablet 上安装 SSH 服务器需要在终端提示上执行一个命令:

$ sudo apt-get install openssh-server

在开发机器和 tablet 之间建立 SSH 链接需要公共密钥和私有密钥,这样就不需要在连接时提供密码。PC Connectivity 页面(参见 参考资料)提供关于从命令行创建密钥的详细信息。此过程还要求把密钥复制到主机和目标机器上的特定位置。幸运的是,在 Eclipse 中创建密钥是很容易的。

为了在 Eclipse 中创建密钥,单击 Window > Preferences,见图 2。然后,单击 General > Network Connnections > SSH2,这会显示一个包含三个选项卡的窗口。在中间的 Key Management 选项卡上,可以创建公共密钥和私有密钥。


图 2. 生成密钥很容易
生成密钥

现在,单击 Generate DSA Key。可以输入一个密码以提高安全性,但这不是必需的。接下来,单击 Save Private Key 把密钥保存在本地。必须把密钥保存在主文件夹的 .ssh 目录中。

注意:我无法从 Eclipse 菜单直接保存密钥,只能从命令行复制文件。

为了完成公共-私有密钥组合,必须把公共密钥存储在目标机器上。为了存储密钥,在相同的 SSH2 密钥窗口中单击 Export Via SFTP。您必须知道 tablet 的 IP 地址而且已经设置和运行了 SSH 服务器。另一个需求是,在目标机器发出提示时,需要作为 user 连接:

user@192.168.1.111

完成之后,对 RSA 密钥重复此过程。创建这两组密钥并把它们复制到适当的目录之后,就准备好了。





回页首


测试

完成设置和配置之后,可以进行测试以确保已经正确地配置了所有方面。最简单的测试方法是创建并运行一个简单的 Hello World 应用程序。为此,在开发机器上(或从 Maemo SDK VMware Appliance)启动 Eclipse。接下来,单击 File > New > Project 启动 New Project Wizard。然后,单击 PluThon > PluThon project。输入项目名 (Hello World),然后单击 Next

接下来,为项目创建一个用于与目标设备通信的 SSH 会话。这需要主机名或 IP 地址和一个用户名。还可以选择使用定制的端口或使用默认端口。最后,单击 Finish 完成此过程。现在应该有了一个空的项目。

如果希望用一个在 tablet 上实际显示内容的应用程序来测试设置,比较方便的方法是使用 Hildon Hello World 模板。使用此模板的步骤与上面介绍的步骤相同,只在单击 Finish 之前有一处差异。如果在配置 SSH 会话之后单击 Next,会出现根据现有模板创建项目的选项。选择 Hildon Hello World 模板,然后单击 Next 显示最后一个页面,其中包含链接多个项目的选项。可以忽略它并单击 Finish

现在,应该有了一个包含 Python 源代码文件 hello_world.py 的项目。此文件由 40 行代码(包括注释)组成,其作用是在窗口的中间显示文本 Hello World。如果确实需要,可以修改文本;但是对于这个测试,不需要修改文本。现在谈谈 Python 的作用以及它使用库在程序中添加功能的方式。hello world 中的两行 — import gtkimport hildon — 提供在屏幕上显示文本所需的所有东西。

最后一步是在目标设备上实际部署此应用程序。单击 Run > Run As,然后单击 PluThon Application,从而使用 SSH 连接把所有代码复制到主机并运行它。如果一切正常,应该会看到一个白色屏幕,在屏幕的中间显示文本 Hello World(或者您修改后的文本)。Eclipse 提供一个控制台窗口,其中显示所有状态消息;如果从 Python 命令行运行应用程序,也可以把输出发送到这个控制台。





回页首


结束语

完成了所有这些步骤并测试了连接之后,现在可以开始开发了。在本系列的第 2 部分中,我要讨论几个 Python 库,它们提供有助于 GPS 访问的 UI 选项和实用程序功能。选择适当的 UI 模型是让这个应用程序能够适应小屏幕的关键。

可能需要的其他库包括数据库访问库(用于存储从 GPS 接收的位置信息)、数学库(用于执行位置计算)和通信库(用于通过网络连接传输当前位置)。甚至可以使用可用的库连接 Twitter 等公共服务。

选择 Python 和 Eclipse 作为这个开发项目的核心技术,可以简化创建单元测试的过程,从而在最终产品中添加内置的测试。Pydev Eclipse 模块附带几个代码片段,其中之一可以为代码快速构建一个单元测试框架。如果通过使用 Docstring 遵守标准的 Python 代码约定,就为生成文档建立了牢固的基础。如果文档直接嵌入在代码中,就非常容易维护文档,有助于保持代码与文档同步。

选择适当的 UI 库需要做一些原型设计并用各种候选 UI 库执行测试。尽管标准的 Hildon 库提供典型桌面应用程序中常用的所有组件和按钮,但是不一定适合用手指操作的小界面。可以调整不同的对象以满足自己的需要,但是对于复杂的界面不建议这么做。可以考虑的其他 UI 库包括 Canola 媒体播放器应用程序使用的 Enlightenment Foundation Library (EFL)。这个解决方案很不错,但是程序员需要做的工作比较多。测试这些库是很有趣的!



参考资料

学习

获得产品和技术

讨论


关于作者

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




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM、IBM 徽标、ibm.com、DB2、developerWorks、Lotus、Rational、Tivoli 和 WebSphere 是 International Business Machines 公司在美国和/或其他国家的商标或注册商标。这些和其他 IBM 商标词汇在内容中首次出现时用适当的符号(® 或 ™)加以标记,这表示在发布此信息时它们是 IBM 拥有的美国注册商标或习惯法商标。这些商标还可能是其他国家的注册商标或习惯法商标。请参见 IBM 商标 的最新列表。 Linux 是 Linus Torvalds 在美国和/或其他国家的商标。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款