MeeGo 开发指南 1.0 开发教程
MeeGo 开发指南 1.0 开发教程
介绍
如果想获取MeeGo平台的开发概览,最好地方的是MeeGo developers。这里讨论的是一些更细节化的问题,比如MeeGo APIs的详细内容。
MeeGo应用程序开发教程
(1)在 Linux 上使用 MeeGo SDK
介绍
MeeGo SDK由以下部分构成:
- 一个MeeGo chroot环境,这包含了一个基于Xephyr (http://www.freedesktop.org/wiki/Software/Xephyr) 的MeeGo应用程序模拟器(仅支持Linux),一些在Xephyr里启动/停止MeeGo桌面的脚本,以及可以远程配置和部署MeeGo设备的Qt Creator。
- 一个启动MeeGo chroot环境,并运行模拟器和Qt Creator的meego-sdk-chroot脚本。
要安装MeeGo SDK,最简单的方法是下载这些组件的打包版本。这将在下一节讨论。
系统要求
要在Xephyr里运行MeeGo模拟器,你需要一个比较新的Linux发行版(例如Fedora 11,Ubuntu 9.10)以及Intel的硬件环境。硬件环境有以下要求:
- CPU: 32bit Intel(r) Atom(tm) or Intel(r) Core(tm) 2 CPU (support for SSSE3)
- 注意: MeeGo模拟器无法在不支持SSSE3的CPU上运行。
- 一块兼容的Intel显卡。GMA-500,Nvidia,以及ATI的芯片组都无法提供支持
译注:这是MeeGo模拟器的要求,不是SDK的要求。我可以在AMD处理器和NV显卡的机器上,运行 MeeGo SDK ,并正常编译/调试程序。
安装MeeGo chroot环境
MeeGo chroot压缩包是一个大文件(接近800M)。它不仅有MeeGo自身的所有库文件,也其他有用的东西(Xephyr, scripts, Qt Creator)。
下载MeeGo chroot压缩包文件:
wget http://download3.meego.com/meego-sdk-0524.tar.bz2
解压MeeGo chroot压缩包文件:
tar zxvf meego-sdk-0524.tar.gz
另一个方案是自己创建一个MeeGo chroot,参见Building a MeeGo chroot on Linux。
安装meego-sdk-chroot脚本
meego-sdk-chroot脚本会设置chroot环境的挂载点,然后用恰当的方式启动root环境;在离开chroot环境时,它也会尝试正确地卸载整个环境,并清除在chroot环境中启动的进程。
下载:
wget http://download3.meego.com/meego-sdk-chroot
给脚本可执行权限:
chmod +x meego-sdk-chroot
移动到/usr/bin:
mv meego-sdk-chroot /usr/bin
为模拟器配置host
下一步,是配置host的X环境,让模拟器(在chroot环境下运行)可以正确地显示在普通用户的屏幕上:
xhost +local:
(每次重启后,在运行模拟器和Qt Creator之前你都需要执行这一步)
进入 MeeGo chroot 环境
meego-sdk-chroot脚本将设置一个MeeGo chroot环境,并给你一个该环境下的shell:
sudo meego-sdk-chroot ~/meego-sdk-0524
(用你的chroot目录代替上面的’~/meego-sdk-0524)
注意,这个脚本使用了chroot命令。有些时候,root用户无法在PATH环境变量里定位这个命令(在Fedora里,chroot命令在/usr/sbin路径下)。你可以在meego-sdk-chroot脚本的顶部添加一行alias,以解决这个问题:
alias chroot='/usr/sbin/chroot'
脚本运行后,会输出下面这样的内容:
mount --bind /proc /home/ell/meego-sdk-0524/proc mount --bind /sys /home/ell/meego-sdk-0524/sys mount --bind /dev /home/ell/meego-sdk-0524/dev mount --bind /dev/pts /home/ell/meego-sdk-0524/dev/pts mount --bind /tmp /home/ell/meego-sdk-0524/tmp mount --bind /var/lib/dbus /home/ell/meego-sdk-0524/var/lib/dbus mount --bind /var/run/dbus /home/ell/meego-sdk-0524/var/run/dbus cp /etc/resolv.conf /home/ell/meego-sdk-0524/etc/resolv.conf root@meego-netbook-sdk:/#
安装其他软件
你可以在chroot环境下正常安装软件(和最新的netbook镜像一样)。
进入chroot环境,然后执行:
zypper install <package>
下面这个命令可以将整个MeeGo镜像更新到最新版本:
zypper dist-upgrade
运行模拟器
在chroot环境下,以root的身份执行:
startmeego &
这将启动Xephyr服务器,并运行一个脚本。这个脚本在Xephyr里启动一个MeeGo桌面。
如果你想在chroot环境里启动一个程序,并显示在模拟器窗口里,你可以:
DISPLAY=:2 glxgears
(用你想启动的程序名代替glxgears)
在模拟器里Debugging
如果你的模拟器出现了问题,可以使用debug脚本,看看具体发生了些什么:
startmeego-debug
这个脚本会在控制台输出一些信息,这些信息应该能给你问题的线索。
模拟器里的 Netbook UX 界面
它看起来像这样:
已发现的问题:
- 一些依赖DBus的工具条组件(比如电池,网络)无法报告设备的工作状态。
停止模拟器
要停止模拟器,只需要离开chroot shell:
exit
这会停止模拟器启动的所有进程,并卸载chroot环境使用的路径。这会输出下面这样的信息:
exit umount /home/ell/meego-sdk-0524/proc umount /home/ell/meego-sdk-0524/sys umount /home/ell/meego-sdk-0524/dev/pts umount /home/ell/meego-sdk-0524/dev umount /home/ell/meego-sdk-0524/tmp umount /home/ell/meego-sdk-0524/var/lib/dbus umount /home/ell/meego-sdk-0524/var/run/dbus
(2)Hello World – Linux上的 MeeGo x86 开发
介绍
这个教程介绍了Linux下的 MeeGo x86 开发。教程解说了基本的开发流程,重点介绍了如何使用SDK附带的那些工具。
教程不会涉及一些开发细节,例如 Qt 和 MeeGo 的 API、或是如何将程序整合到 MeeGo 环境中。
如何开发 (简要说明)
- 获取并安装 MeeGo SDK
- 进入 MeeGo SDK 环境
- 启动模拟器
- 启动 Qt Creator
- 使用 Qt Creator 创建一个项目, 配置项目的 DISPLAY 环境变量,让项目能够在模拟器中运行
- 使用 SDK 的 Qt 库编译项目。
- 在模拟器中运行程序
- 在模拟器中为程序 Debug
如果你有一台真实的 MeeGo 设备:
- 准备设备
- 在设备上运行程序
- 在设备上为程序 Debug
如何开发 (详细说明)
在你的机器上安装 MeeGo SDK
请参阅 在 Linux 上使用 MeeGo SDK 的介绍。
进入 MeeGo chroot 环境
请参阅 这个介绍 。
运行模拟器
把所有东西安装配置完成后,你应该可以在 MeeGo chroot 环境中 运行模拟器 了。
使用 Qt Creator 创建项目
让 startmeego 脚本继续运行,然后启动 Qt Creator :
qtcreator &
这会在 host 上运行 Qt Creator (而不是在 Xephyr 里):
- 创建一个新项目(File > New File or Project)。 在 Projects 对话框中, 选择 Qt Gui Application ,然后点击 OK。
- 输入 helloworld 作为项目名称,选择一个保存项目的目录 (例如,如果你使用 root 账户工作的话,可以选择 /root )。 然后点击 Next。
- 保持 Class Information 对话框的默认配置,然后点击 Next。
- 在 Project Management 对话框里,点击 Finish。
- 打开 Forms 目录,双击 mainwindow.ui 打开图形窗体编辑器。
- 从窗体编辑器左边的组件列表里,拖出一个 label ,放到编辑中的窗体上。
- 修改 label 的文本( “Hello world” 是个不错的选择 )。
- 再拽几个你喜欢的东西上去。
- 点击 Qt Creator 窗口左边的 Projects 图标。
- 配置 Qt 版本:
- 在 Build Settings > General 栏里,点击 More 按钮。这会显示当前项目中使用的 Qt 库版本。
- 点击 Qt Version 标签边上的 Manage 按钮,这会显示 Qt Versions 面板:
- 选中 Qt in PATH 项目。
- 点击 Rebuild 按钮,创建当前 Qt 版本使用的 Debugging Helper 。
- 点击 OK 保存设置。
- 确认 Qt Version 的设置,应该是 Default Qt Version (Qt in PATH) 。
- 然后,配置运行环境,用模拟器来显示运行的程序:
- 点击 Run Settings 标签。
- 点击 Run Environment 下面的 More 按钮。
- 双击 Display 环境变量边上的文本区,将 :0.0 改为 :2 。这会让 Qt Creator 使用 :2 号显示区域来运行程序,也就是在 Xephyr 中运行。
在模拟器中运行程序
现在你已经做好了运行程序的准备。
在 Qt Creator 里,点击左下角那个大大的绿色箭头,就可以运行程序。在第一次运行时,这会编译整个项目(使用你设置的 Qt 库版本),然后在 :2 号 display (也就是 Xephyr 里的 MeeGo 模拟器)上显示程序。
在模拟器里,程序可能会在后台运行,不会直接显示在屏幕上。这时你可以需要点击 MyZone 图标激活程序:
在模拟器中为程序 Debug
在 Qt Creator 里启动程序后,如果你激活了 Debug 模式,你就可以监视这个程序的运行状态。
在之前的 小节 里,我们已经为当前版本的 Qt 库创建了 debugging helper 。这必须预先做好,不然你无法调试程序。
点击左边工具栏中的 bug 图标,这会激活 Qt Creator 的 Debug 模式。这会在窗口里增加一个面板,以显示运行栈、变量和表达式的值、以及其他有用的信息。
然后,你需要一些 Bug 好进行 debug。我在程序窗体里添加了一个 Push Button :
然后为这个按钮添加了点击事件。当点击这个按钮时,一个字符串变量将会被打印到控制台上。代码是这样的:
/* file: Headers/mainwindow.h */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); protected: void changeEvent(QEvent *e); private: Ui::MainWindow *ui; private slots: void on_pushButton_clicked(); }; #endif // MAINWINDOW_H
/* file: Sources/mainwindow.cpp */ #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #include <QString> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void MainWindow::on_pushButton_clicked() { QString message; message = "I have been well and truly clicked"; qDebug() << message; }
大部分代码继承自原本的项目,只有 MainWindow::on_pushButton_clicked 这个方法是我自己添加的。需要注意的是,我还在头文件里定义了一个私有的槽。
译者注:信号和槽是 Qt 里的概念,请参考介绍 Qt 的文章。
然后在编辑器里,在你想要 debug 的语句左边点击一下,添加一个断点。看起来像是这样:
然后点击那个带着 bug 标志的绿色箭头(在左下角),这会以 Debug 模式启动程序。程序将会显示在模拟器中:
现在,在模拟器里的程序窗口中,点击那个 Push Button ,这会在刚才设置的断点上中断程序。回到 Qt Creator 里,看下 debug 面板:
我们可以看到,在 Locals and Watchers 标签里, message 变量的值,已经被设置为 “I have been well and truly clicked” 了。
MeeGo 开发指南 1.0 开发教程相关推荐
- 【资源共享】Rockchip I2C 开发指南 V1.0
I2C设备的设备应用非常广泛,常见的包含重力传感器,触摸屏驱动芯片,音频解码等 这个文档是RK3399的I2C开发文档:<Rockchip I2C 开发指南 V1.0> 内容预览: 下载地 ...
- AutoCAD 开发文档,AutoLISP 教程,.Net AutoCAD开发教程,VB AutoCAD开发教程,ObjectARX 开发指南,VBA AutoCAD开发教程,ActiveX 开发指南
AutoCAD 开发文档, CAD开发者社区 - AutoCAD二次开发文档,CAD二次开发,CAD插件开发,中文CAD文档 - 中文CAD开发文档,CAD二次开发问题交流,优秀插件分享 AutoLI ...
- Facebook最新Libra币开发指南---接口服务器开发2
Facebook最新Libra币开发指南---接口服务器开发2 2019年06月24日 16:23:16 最老程序员闫涛 阅读数 1145 在上一篇博文中,我们已经使用Rust语言开发了一款简单的We ...
- 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发
SRS 4.0开发环境搭建 视频讲解如下,点击观看: 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发 音视频高级开发学习学习资料链接:FFmpeg/WebR ...
- 【正点原子FPGA连载】 第三章 硬件资源详解 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...
- 【正点原子Linux连载】第二十三章 DDR3实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 【正点原子Linux连载】第六十七章 Linux USB驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 【正点原子FPGA连载】 第十七章 RS485串口通信实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- 【正点原子FPGA连载】第八章LED灯闪烁实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
最新文章
- 小马智行最新RoboTaxi来了!彭军:对方向有着前所未有的笃定
- springboot项目文档源码_基于SpringBoot和Vue的企业级中后台项目(附源码)
- winform定义数据源名称_winform ComboBox自定义数据源实现用户输入时出现与用户输入匹配的项...
- 改了上百遍!记上海交通大学第一篇《Science》
- matlab最小生成树举例,Matlab最小生成树示例
- 页面无法访问 css文件加载问题
- 聚类:Python遗传算法
- mysql学生管理系统背景_MySql学习之路1 背景介绍
- Word的”交叉引用“和”插入题注“快捷键设置
- 如何在HTML添加背景图片么,如何在HTML中添加背景图片
- 湖南师范大学2021年3月25日蓝桥杯热身赛解题报告与标程
- Windows 2016 修改密码时提示密码不符合规则
- Java对接谷歌身份验证器
- 大数据分析与挖掘期末复习
- python爬虫入门------王者荣耀英雄及皮肤数据爬取项目
- 极简微前端框架-京东MicroApp开源了
- PDF格式分析(一)简介
- 信捷PLC程序 八轴程序,有伺服也有步进,内部有伺服和步进计算公式换算
- 用Java实现ATM机功能(附带源码)
- ubuntu中Vim美化
热门文章
- 圣迭戈大学计算机科学,2020年加州大学圣地亚哥分校排名TFE Times美国最佳计算机科学硕士专业排名第17...
- 异步电机和永磁同步电机的区别
- AR 恐龙博物馆三(萌宠小恐成长日记之蹒跚学步)
- TI C2000 TMS320F28379D SCID SCIB 的配置与使用
- Python Scrapy 爬虫框架爬取推特信息及数据持久化!整理了我三天!
- python3.8.2numpy版本,如何查看安装python和numpy的版本,numpy版本的选择,命令行下查看pyth...
- iPad2 4.3.3完美越狱教程 一键即可操作
- 小米android8.0新功能,性能大优化:小米A1已向所有用户推Android 8.0更新!
- 广东全国计算机考试准考证
- Project 2021为项目管理带来智能、高效可靠的未来+全版本安装包