您的位置:首页 > 运维架构 > Linux

Moblin Linux开发手册(一)_简介

2008-11-04 09:07 218 查看
简介

此文旨在为Moblin项目概念提供如何在Moblin环境中通过LibOSSO库编程的指导。此文将提供程序模型,通常使用API描述和示例代码。

此文假设读者具备下列知识:

·  
了解MID。

·  
基本Linux应用程序编程技能,基于GTK+。

·  
熟悉Hildon应用程序框架


·  
熟悉Moblin Image Creator及如何使用它开发。

此文不是完整的Moblin开发者编程手册,亦不提供深入编程参考给Moblin应用程序开发者。为打算在Moblin上使用LibOSSO的应用程序开发者,提供介绍、高层技术概览和入门级程序手册。

LibOSSO库是由Maemo团体开发的D-Bus。此文描叙如何在Moblin环境上通过LibOSSO库编程。确切说,此文讨论LibOSSO背景、LibOSSO编程模型,通常会使用API描述和示例代码。此文不是完整的Moblin开发者编程手册,亦不提供深入编程参考给Moblin应用程序开发者。

文中章节有:

章节

描述

LibOSSO纵览

介绍LibOSSO基本术语和背景

基本LibOSSO编程模型

介绍在Moblin环境中使用LibOSSO基本编程步骤

通过LibOSSO实现RPC

介绍如何使用LibOSSO实现远程过程调用(RPC),使用同步和异步方式

通过LibOSSO接收系统事件

描述如何使用LibOSSO接收和操作系统事件

LibOSSO纵览

背景

目前,新的进程间通信(IPC)机制,D-Bus,已是成功要素。D-Bus是给免费桌面环境设计的统一中间件层。与其它IPC机制相比,D-Bus简单且快捷。想知道更多关于D-Bus编程的细节信息,查阅SDK中另一文章,使用D-Bus的APIs

LibOSSO库由Meamo团体开发,它装入大部分在MID(或Nokia Internet Table)常用D-Bus功能。因为他简单易用,并独立于libdus API可能的改变,LibOSSO是Moblin开发交付的库。

LibOSSO简介

所有Moblin应用程序都期待使用LibOSSO库。主要原因是Moblin应用程序框架是Hildon,Hildon拥有的任务管理机制将周期的终止没有在D-Bus中注册的进程。使用LibOSSO是让应用程序在D-Bus中注册和避免任务进程被终止的最好方式。LibOSSO方便的独立应用程序与D-Bus层可能的执行改变。D-Bus用于在API没有稳定前更好,所以LibOSSO提供“版本独立”于D-Bus中。因为D-Bus有区域完备(1.0),无API改变将期待低层库,但GLib/D-Bus包装可能持续改变部分目标[2]。

通过使用LibOSSO,应用程序可容易的发出RPC到任意注册的D-Bus服务。LibOSSO通常装入D-Bus服务相关的必须硬件和系统事件初始化,这样应用程序可完全地接收和控制这些事件——这是运行在MID上的应用程序必须的。例如,注册后,应用程序能在系统电力不足时收到消息……应用程序能在处理这些事件时获得更加使用体验。

除D-Bus API包外,LibOSSO也提供一些有用功能,像UI状态和应用程序数据自动保存。

所有LibOSSO调用是平台独立的,所以这些库能被方便的用于桌面、Maemo和Moblin,以及不同计算机系统架构。

提示:此功能集是针对大多通用GUI应用程序涵盖所需,同样的,并非能满足全部情况。在有些情况下,将必须使用GLib/D-Bus包功能(或者直接是libdbus,这是不推荐的)[2]。

基本LibOSSO编程模型

概述

类似许多其他的库,使用LibOSSO被使用在应用程序前有几个必须步骤。这些步骤是:

1.       
准备该库的包。

2.       
修改编译文件,包含LibOSSO和开发(头)文件。

3.       
增加必须设定并清理代码。

4.       
通过LibOSSO
API实现设计功能。

准备该库的包
通过LibOSSO开发前,开发包需要被安装。LibOSSO没有独立包,通常,它包含在Hildon库中。所以,用户可通过安装Hildon-1库实现。在Debian系统中,可使用该命令:

$ apt-get install libhildon-1-dev

添加LibOSSO参考到编译文件

在包已被准备后,编译文件——通常是configure.ac 或configure.in——需要被定义给编译器,以便找到头文件,并告知linker程序哪个库文件应该被连接到应用程序。

下列代码片段显示如何添加LibOSSO参考到编译文件"configure.ac":

....

# Checks for libosso libraries.

PKG_CHECK_MODULES(LIBOSSO, [libosso]

# Add libosso specific preprocessor, compile & link flags

CFLAGS="$CFLAGS $LIBOSSO_CFLAGS"

LIBS="$LIBS $LIBOSSO_LIBS"

....

基本编程步骤

在完成准备工作后,LibOSSO现已能被应用程序使用。通过LibOSSO编程非常简单,只需要下列步骤:

1.       
包含<libosso.h>到公共头文件。

2.       
在使用任何LibOSSO
API前调用“osso_initialize()”函数,并保证返回的上下文指针在以后使用。

3.       
调用LibOSSO
API实现设计功能。
提示:所有其他LibOSSO API需要上下文结构指针,像初始化函数返回pass-in参数。

4.       
在程序结束前,通过调用“osso_deinitialize()”清理,这应该是应用程序实例的LibOSSO生命周期中最后一个调用。

你可下载示例代码这里:http://v1.moblin.org/toolkits/sampleCode/hello_libosso.tar.gz

基本编程步骤示例代码:

//

// Header file inclusion: above step1

//

#include <libosso.h>

....

//

// OSSO initialization: above step2

//

osso_context = osso_initialize (

    "org.moblin.my_program_name",

    ;"0.1",

    TRUE,

    NULL);

if (sso_context == NULL)

{

    g_error ("failed to initialize osso!/n");

    return OSSO_ERROR;

}

....

//

// Calling other APIs: above step3

//

osso_rpc_run (osso_context, ...); // Just an example

....

//

// Clean up: above step4

//

if (osso_context != NULL)

{

    osso_deinitialize (osso_context);

    osso_context = NULL;

}

....

翻译:徐诚
本文译自Moblin.org技术社区,  点击此处,查看原文
               更多内容,到“Moblin技术中国”专区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息