<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; 方亮 (Intel)</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/121845/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Mon, 28 May 2012 13:40:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>QML入门教程(3) -- 转载自www.cuteqt.com</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/12/20/qml3-wwwcuteqtcom/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/12/20/qml3-wwwcuteqtcom/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 00:54:07 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[移动技术]]></category>
		<category><![CDATA[qml]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/12/20/qml3-wwwcuteqtcom/</guid>
		<description><![CDATA[本站所有文章由本站和原作者保留一切权力，仅在保留本版权信息、原文链接、原文作者的情况下允许转载，转载请勿删改原文内容， 并不得用于商业用途。 谢谢合作。 原文链接:QML入门教程(3) 经过前面两个教程，文字也能显示，也能处理鼠标事件了，来点动画吧。 这个教程实现了当鼠标按住的时候，Hello,World从顶部到底部的一个旋转过程，并带有颜色渐变的效果。 完整的源代码main.qml import Qt 4.7 Rectangle { id: page width: 500; height: 200 color: "lightgray" Text { id: helloText text: "Hello World!" y: 30 anchors.horizontalCenter: page.horizontalCenter font.pointSize: 24; font.bold: true MouseArea { id: mouseArea; anchors.fill: parent } states: State { name: "down"; when: mouseArea.pressed == true PropertyChanges { target: helloText; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>本站所有文章由本站和原作者保留一切权力，仅在保留本版权信息、原文链接、原文作者的情况下允许转载，转载请勿删改原文内容， 并不得用于商业用途。 谢谢合作。</strong></p>
<p><strong>原文链接:<a href="http://www.cuteqt.com/blog/?p=1641">QML入门教程(3)</a></strong></p>
<p>经过前面两个教程，文字也能显示，也能处理鼠标事件了，来点动画吧。<br />
<img src="http://docs.google.com/File?id=dhhvrcmh_251dmx7zxcs_b" alt="" /><br />
这个教程实现了当鼠标按住的时候，Hello,World从顶部到底部的一个旋转过程，并带有颜色渐变的效果。</p>
<h4>完整的源代码main.qml</h4>
<blockquote>
<pre>import Qt 4.7

 Rectangle {
     id: page
     width: 500; height: 200
     color: "lightgray"

     Text {
         id: helloText
         text: "Hello World!"
         y: 30
         anchors.horizontalCenter: page.horizontalCenter
         font.pointSize: 24; font.bold: true

         MouseArea { id: mouseArea; anchors.fill: parent }

         states: State {
             name: "down"; when: mouseArea.pressed == true
             PropertyChanges { target: helloText; y: 160; rotation: 180; color: "red" }
         }

         transitions: Transition {
             from: ""; to: "down"; reversible: true
             ParallelAnimation {
                 NumberAnimation { properties: "y,rotation"; duration: 500; easing.type: Easing.InOutQuad }
                 ColorAnimation { duration: 500 }
             }
         }
     }

     Grid {
         id: colorPicker
         x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4
         rows: 2; columns: 3; spacing: 3

         Cell { cellColor: "red"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "green"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "blue"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "black"; onClicked: helloText.color = cellColor }
     }
 }</pre>
</blockquote>
<p>除了这个main.qml之外，还有一个Cell.qml也是需要的，和教程(2)中的完全一样。下面来看一看比起教程(2)的代码增加出来的内</p>
<p>容。</p>
<blockquote>
<pre>    Text{
         ...
         states: State {
             name: "down"; when: mouseArea.pressed == true
             PropertyChanges { target: helloText; y: 160; rotation: 180; color: "red" }
         }

         transitions: Transition {
             from: ""; to: "down"; reversible: true
             ParallelAnimation {
                 NumberAnimation { properties: "y,rotation"; duration: 500; easing.type: Easing.InOutQuad }
                 ColorAnimation { duration: 500 }
             }
         }
        ...
     }</pre>
</blockquote>
<p>states内嵌于Text之中，可以为Text元素添加多个状态，现在的这个例子只增加了一个状态。该状态的名为为”down”,然后由“when”指 定了什么时候触发这个状态。PropertyChanges则指定了哪个元素的哪些属性会发生什么样的变化。例子中PropertyChanges利用 “target”指定了id为”helloText”的元素会发生变化，包括其y,rotation,color等属性。<br />
transitions 是用于增加动画效果的（如果把transitions这一段代码删去，Hello,World的文字也会发生变化,但是看不到中间动画渐变效果)。同样可 以看到transitions是复数形式，意味着可以添加多个动画过程。“from”和”to”指明了当前的动画作用于哪两个状态变化之间。 “from”和”to”的参数名来自于State中的”name”属性。<br />
ParalleAnimation则指定了有多个 有多个动画并行发生。NumberAnimation用于qreal类型的属性变化,ColorAnimation则用于颜色变化。更多 Animation请在QML文档中查找”Animation and Transitions”。<br />
好了，三篇教程到此结 束。更多资源请访问<a id="s28f" title="Declarative UI Using QML" href="http://doc.qt.nokia.com/4.7-snapshot/declarativeui.html" class="broken_link">Declarative UI Using QML</a>。<br />
<a href="http://www.cuteqt.com/blog/wp-content/uploads/2010/05/qml-tutorial3.zip">本文源码下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/12/20/qml3-wwwcuteqtcom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QML入门教程(2) -- 转载自www.cuteqt.com</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/12/20/qml2-wwwcuteqtcom/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/12/20/qml2-wwwcuteqtcom/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 00:52:00 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[移动技术]]></category>
		<category><![CDATA[qml]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/12/20/qml2-wwwcuteqtcom/</guid>
		<description><![CDATA[本站所有文章由本站和原作者保留一切权力，仅在保留本版权信息、原文链接、原文作者的情况下允许转载，转载请勿删改原文内容， 并不得用于商业用途。 谢谢合作。 原文链接:QML入门教程(2) 在上一篇文章里我们使用了最基础的QML类型实现了文字Hello,World的显示。这篇文章中将会增加颜色选项面板，用户可以给Hello,World设置不同的颜色，如下图显示 QML组件 从图中可以看到选项面板由6个颜色小块组成，它们唯一的区别就是颜色不一样。那么我们就可以用组件(Component)来实现一个颜色块，然后在需要的时候使用这个组件就可以了。组件其实和其它编程语言中的宏，函数，类，结构体等功能差不多，就是代码复用。作为程序员，我知道你懂的。 组件由一个单独的QML文件名组成，文件名总是以大写字母开头，要使用该组件的时候直接使用该文件名就可以了。关于如何定义自己的组件，请访问Defining new Components。我们为一个颜色块定义了一个Cell.qml文件，然后使用Cell作为一个去访问它。 Cell.qml的内容 import Qt 4.7 Item { id: container property alias cellColor: rectangle.color signal clicked(color cellColor) width: 40; height: 25 Rectangle { id: rectangle border.color: "white" anchors.fill: parent } MouseArea { anchors.fill: parent onClicked: container.clicked(container.cellColor) } } 挨个看代码～ Item { id: container property alias cellColor: rectangle.color [...]]]></description>
			<content:encoded><![CDATA[<p><strong>本站所有文章由本站和原作者保留一切权力，仅在保留本版权信息、原文链接、原文作者的情况下允许转载，转载请勿删改原文内容， 并不得用于商业用途。 谢谢合作。</strong></p>
<p><strong>原文链接:<a href="http://www.cuteqt.com/blog/?p=1633">QML入门教程(2)</a></strong></p>
<p>在上一篇文章里我们使用了最基础的QML类型实现了文字Hello,World的显示。这篇文章中将会增加颜色选项面板，用户可以给Hello,World设置不同的颜色，如下图显示<br />
<img src="http://docs.google.com/File?id=dhhvrcmh_249ngkgfc6_b" alt="" /></p>
<h4>QML组件</h4>
<p>从图中可以看到选项面板由6个颜色小块组成，它们唯一的区别就是颜色不一样。那么我们就可以用组件(Component)来实现一个颜色块，然后在需要的时候使用这个组件就可以了。组件其实和其它编程语言中的宏，函数，类，结构体等功能差不多，就是代码复用。作为程序员，我知道你懂的。<br />
组件由一个单独的QML文件名组成，<strong>文件名总是以大写字母开头</strong>，要使用该组件的时候直接使用该文件名就可以了。关于如何定义自己的组件，请访问<a href="http://doc.qt.nokia.com/4.7-snapshot/qml-extending-types.html#defining-new-components" class="broken_link">Defining new Components</a>。我们为一个颜色块定义了一个Cell.qml文件，然后使用Cell作为一个去访问它。</p>
<h4>Cell.qml的内容</h4>
<blockquote>
<pre>import Qt 4.7

Item {
    id: container
    property alias cellColor: rectangle.color
    signal clicked(color cellColor)
    width: 40; height: 25
    Rectangle {
        id: rectangle
        border.color: "white"
        anchors.fill: parent
    }
    MouseArea {
        anchors.fill: parent
        onClicked: container.clicked(container.cellColor)
    }
}</pre>
</blockquote>
<p>挨个看代码～</p>
<blockquote><p>Item {<br />
id: container<br />
property alias cellColor: rectangle.color<br />
signal clicked(color cellColor)</p>
<p>width: 40; height: 25</p></blockquote>
<p>Item是最常使用的QML类型，一般用作其它类型的容器，可以理解成最顶级的父类，功能类似于QtGui中的QWidget。用一个属性别名访问其内嵌对象rectangle的color属性。在其它文件中可以用Cell对象的cellColor获得rectangle的color值。<br />
signal clicked(color cellColor)则为对象定义了一个信号，在代码的其它部分可以发出这个信号。</p>
<blockquote><p>Rectangle {<br />
id: rectangle<br />
border.color: “white”<br />
anchors.fill: parent<br />
}</p></blockquote>
<p>这一部分没有特别好说的，在Item中内嵌了一个id为rectangle白边框的矩形区域，大小占满整个Item。</p>
<blockquote><p>MouseArea {<br />
anchors.fill: parent<br />
onClicked: container.clicked(container.cellColor)<br />
}</p></blockquote>
<p>MouseArea则为Item增加了一块鼠标响应区，看它的anchors知道，在整个Item区域内都是鼠标活动区，都能侦听到鼠标事件。onClicked那一行则相当于为鼠标单击事件增加了一个处理行为，这里是发出了一个clicked()的信号。这个信号正是我们在Item里定义的那个signal。<br />
Cell.qml写完了，再来看看程序的主文件。</p>
<h4>main.qml的内容</h4>
<blockquote>
<pre>import Qt 4.7
Rectangle {
     id: page
     width: 500; height: 200
     color: "lightgray"

     Text {
         id: helloText
         text: "Hello world!"
         y: 30
         anchors.horizontalCenter: page.horizontalCenter
         font.pointSize: 24; font.bold: true
     }
    Grid {
         id: colorPicker
         x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4
         rows: 2; columns: 3; spacing: 3

         Cell { cellColor: "red"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "green"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "blue"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor }
         Cell { cellColor: "black"; onClicked: helloText.color = cellColor }
     }
 }</pre>
</blockquote>
<p>这里在原来的基础上增加了一个Grid网格。x坐标是4，底部挨着page的底部，所以我们看到的是在左下角。<br />
新增的6个Cell，名字和Cell.qml是一样的。通过cellColor属性将颜色传给了每个颜色块。<br />
当Cell接收到onClicked事件的时候,关联的代码回去修改Hello,World上的颜色。细心的朋友可能会注意到Cell只是定义了clicked()的信号，并没有定义onClicked()啊，是的这就是Component的语法规则了。如果你在Cell.qml里定义的是plicked(),那么你在main.qml中引用的时候就该用onPlicked()了。</p>
<p>好了，代码也不少了，随便改动改动，你会了解更多QML的秘密的:)<br />
<a href="http://www.cuteqt.com/blog/wp-content/uploads/2010/05/qml_tutorial2.zip">本文源码下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/12/20/qml2-wwwcuteqtcom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QML入门教程(1) -- 转载自www.cuteqt.com</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/12/20/qml1-wwwcuteqtcom/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/12/20/qml1-wwwcuteqtcom/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 00:49:48 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[移动技术]]></category>
		<category><![CDATA[qml]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/12/20/qml1-wwwcuteqtcom/</guid>
		<description><![CDATA[最近自学QML时在网上找到几篇不错的介绍QML的博客，转到此处与大家共享。 本站所有文章由本站和原作者保留一切权力，仅在保留本版权信息、原文链接、原文作者的情况下允许转载，转载请勿删改原文内容， 并不得用于商业用途。 谢谢合作。 原文链接:QML入门教程(1) 前言:Qt Declarative UI 传得沸沸扬扬，却很少有中文资料介绍这是一个什么样的技术，以及如何使用它。偶尔能搜到几篇也是掐头去尾的，让人摸不着头脑。CuteQt网友英狐奉献的三篇文章很有参考价值，把我带入了门。我准备翻译的这个入门教程来自于Qt官方文档，更多的是语法性的介绍。说是翻译，其实是我在原文基础上的一个阅读理解吧。 QML是什么？ QML是一种描诉性的脚本语言，文件格式以.qml结尾。语法格式非常像CSS(参考后文具体例子)，但又支持javacript形式的编程控制。我个人认为它结合了QtDesigner UI和QtScript的有点。QtDesigner可以设计出.ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互，但是有一个缺点，如果要在脚本中创建一个继承于QObject的图形对象非常不方便，只能在Qt代码中创建图形对象，然后从QtScript中进行访问。而QML可以在脚本里创建图形对象，并且支持各种图形特效，以及状态机等，同时又能跟Qt写的C++代码进行方便的交互，使用起来非常方便。 如何使用？ 在Qt C＋＋文件中通过QDeclarativeView加载，就像使用UiLoader加载.ui文件一样。不过本文不会去介绍如何在Qt C＋＋中使用QML，而是把重点放在QML的语法上，不过别担心看不到.qml文件的效果。Qt提供了一个工具QML Viewer可以查看.qml文件生成的效果，该程序在Qt的bin目录下，应用名字叫qml(Windows下叫qml.exe)。所以你在看到别人提供的.qml文件时，你可以用下面命令qml filename.qml 查看.qml的执行结果，咱们的第一个Hello,World生成界面如下 开始QML吧 上面的Hello,World源代码如下 1 import Qt 4.7 2 3 Rectangle { 4     id: page 5     width: 500; height: 200 6     color: “lightgray” 7 8     Text { 9         id: helloText 10         text: “Hello world!” 11         font.pointSize: 24; font.bold: [...]]]></description>
			<content:encoded><![CDATA[<p>最近自学QML时在网上找到几篇不错的介绍QML的博客，转到此处与大家共享。</p>
<p><strong>本站所有文章由本站和原作者保留一切权力，仅在保留本版权信息、原文链接、原文作者的情况下允许转载，转载请勿删改原文内容， 并不得用于商业用途。 谢谢合作。</strong></p>
<p><strong>原文链接:<a href="http://www.cuteqt.com/blog/?p=1629">QML入门教程(1)</a></strong></p>
<p>前言:Qt Declarative UI 传得沸沸扬扬，却很少有中文资料介绍这是一个什么样的技术，以及如何使用它。偶尔能搜到几篇也是掐头去尾的，让人摸不着头脑。CuteQt网友<a id="y7bb" title="英狐" href="http://www.cuteqt.com/blog/?author=13">英狐</a>奉献的三篇文章很有参考价值，把我带入了门。我准备翻译的这个入门教程来自于<a id="joc7" title="Qt官方文档" href="http://doc.qt.nokia.com/4.7-snapshot/qml-tutorial.html">Qt官方文档</a>，更多的是语法性的介绍。说是翻译，其实是我在原文基础上的一个阅读理解吧。</p>
<h4>QML是什么？</h4>
<p>QML是一种描诉性的脚本语言，文件格式以.qml结尾。语法格式非常像CSS(参考后文具体例子)，但又支持javacript形式的编程控制。我个人认为它结合了QtDesigner UI和QtScript的有点。QtDesigner可以设计出.ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互，但是有一个缺点，如果要在脚本中创建一个继承于QObject的图形对象非常不方便，只能在Qt代码中创建图形对象，然后从QtScript中进行访问。而QML可以在脚本里创建图形对象，并且支持各种图形特效，以及状态机等，同时又能跟Qt写的C++代码进行方便的交互，使用起来非常方便。</p>
<h4>如何使用？</h4>
<p>在Qt C＋＋文件中通过QDeclarativeView加载，就像使用UiLoader加载.ui文件一样。不过本文不会去介绍如何在Qt C＋＋中使用QML，而是把重点放在QML的语法上，不过别担心看不到.qml文件的效果。Qt提供了一个工具QML Viewer可以查看.qml文件生成的效果，该程序在Qt的bin目录下，应用名字叫qml(Windows下叫qml.exe)。所以你在看到别人提供的.qml文件时，你可以用下面命令<strong><em>qml filename.qml</em></strong> 查看.qml的执行结果，咱们的第一个Hello,World生成界面如下<br />
<img src="http://docs.google.com/File?id=dhhvrcmh_247gxszp2hh_b" alt="" /></p>
<h4>开始QML吧</h4>
<p>上面的Hello,World源代码如下</p>
<blockquote><p>1 import Qt 4.7<br />
2<br />
3 Rectangle {<br />
4     id: page<br />
5     width: 500; height: 200<br />
6     color: “lightgray”<br />
7<br />
8     Text {<br />
9         id: helloText<br />
10         text: “Hello world!”<br />
11         font.pointSize: 24; font.bold: true<br />
12         y: 30; anchors.horizontalCenter: page.horizontalCenter<br />
13     }<br />
14 }</p>
<p>第1行是Qt QML的统一用法，指明当前QML会使用Qt-4.7里已经定义好的类型，比如第3行的Rectangle和第8行的Text。</p>
<p>第3行开始至文章结束处则定义了一个矩形的图形区域对象，第4行则申明了该矩形区域对象的id为”page”可以被其它对象识别并通过该id访问其成员属性，另外几个属性width/height/color则很好理解，语法跟CSS类似，可以写在一行中用分号”;”隔开。<br />
第8行至第12行则是一个文本对象，看它代码的嵌套结构可以知道它是内嵌于Rectangle的。Text的属性除了anchors其它几个都能顾名思义。anchors描诉的是当前对象的位置和其它对象的相对关系，这里看到其水平中心位置在“page“的水平中心位置。如果相对anchors了解更多，请参考<a id="iwox" title="锚的解释" href="http://doc.qt.nokia.com/4.7-snapshot/anchor-layout.html" class="broken_link">锚的解释</a>。<br />
以上就是Hello,World的全部代码，将其存为hellowordl.qml，那么只要执行 <strong><em>qml hellowrold.qml</em></strong>就能看到文章前头的界面了。</p>
<h4>更多对象？</h4>
<p>在上面的代码中我们用到了Rectangle和Text，那么我还有哪些对象以及这些对象有哪些属性呢。那么请访问<a id="ra4f" title="QML-Item" href="http://doc.qt.nokia.com/4.7-snapshot/qml-item.html">QML-Item</a>类,Item类是QML最基础的类，通过查看它的继承类以及这些继承类可用的属性，你可以添加更多你感兴趣的内容。</p>
<p>好吧, Happy QML。</p>
<p>附:英狐的三篇相关文章<br />
<a id="np6_" title="QT declarative UI 初探（一）" href="http://www.cuteqt.com/blog/?p=1585">QT declarative UI 初探（一）</a><br />
<a id="tz1w" title="QT declarative UI 初探（二）" href="http://www.cuteqt.com/blog/?p=1588">QT declarative UI 初探（二）</a><br />
<a id="niiu" title="QT declarative UI 初探（三）" href="http://www.cuteqt.com/blog/?p=1594">QT declarative UI 初探（三）</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/12/20/qml1-wwwcuteqtcom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用Clutter写控件？不妨看看MX</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/01/20/cluttermx/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/01/20/cluttermx/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 10:19:24 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[开放源代码]]></category>
		<category><![CDATA[移动技术]]></category>
		<category><![CDATA[Clutter]]></category>
		<category><![CDATA[Moblin UI Toolkit]]></category>
		<category><![CDATA[MX]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/01/20/cluttermx/</guid>
		<description><![CDATA[之前写过一些介绍Clutter的文章，Clutter将2维的图形搬到了3维的舞台上，并提供了简单的操作接口，使得应用程序的界面可以更加丰富多彩。不过经常进行图形界面开发的程序员会发现，Clutter的缺点也十分的明显——那就是图形控件少的可怜。由于缺少像按钮、单选/复选框、进度条等控件，开发者不得不费时费力的实现一套自己的图形控件库，或者是利用GTK开发应用程序，大部分使用GTK的控件，只在程序内部嵌入Clutter，实现部分的3D效果。 有没有基于Clutter的图形控件库呢？The answer is YES! 现在Moblin.org上有一个名为Moblin UI Toolkit（简称MX）的项目，它为开发者提供了一套基于Clutter的常用控件，包括了常用的图形控件如button, toggle button, combobox, progressbar和scrollbar等，也提供了一些用于布局的容器类，如box layout和table。 MX是一套C库，依赖于clutter和glib。从面向对象的角度看，MX中的基类MxWidget继承自ClutterActor，因此所有针对ClutterActor的操作对MxWidget均可用。从MX的API来看，和GTK倒是有几分相似，熟悉GTK开发的程序员上手应该很快。 不过需要注意的是，目前MX还没有到稳定版本，如果要在正式产品中使用，还请慎重考虑。有兴趣的朋友可以到该项目的官方网址http://moblin.org/projects/moblin-ui-toolkit了解更多内容。 以下代码是从MX的示例代码中摘出的，功能并不完整，只是用来说明MX应用程序代码结构。 #include &#60;clutter/clutter.h&#62; #include &#60;mx/mx.h&#62; int main (int argc, char *argv[]) { ClutterActor *stage, *vbox, *hbox, *holder, *mainbox, *toolbar, *combo; MxApplication *application; // //初始化 // MX: mx_application_new(), 和当年的Hildon很像，呵呵。 // Clutter: clutter_init() // GTK: gtk_init() // application = mx_application_new (&#38;argc, &#38;argv, [...]]]></description>
			<content:encoded><![CDATA[<p>之前写过一些介绍Clutter的文章，Clutter将2维的图形搬到了3维的舞台上，并提供了简单的操作接口，使得应用程序的界面可以更加丰富多彩。不过经常进行图形界面开发的程序员会发现，Clutter的缺点也十分的明显——那就是图形控件少的可怜。由于缺少像按钮、单选/复选框、进度条等控件，开发者不得不费时费力的实现一套自己的图形控件库，或者是利用GTK开发应用程序，大部分使用GTK的控件，只在程序内部嵌入Clutter，实现部分的3D效果。</p>
<p>有没有基于Clutter的图形控件库呢？The answer is YES! 现在Moblin.org上有一个名为Moblin UI Toolkit（简称MX）的项目，它为开发者提供了一套基于Clutter的常用控件，包括了常用的图形控件如button, toggle button, combobox, progressbar和scrollbar等，也提供了一些用于布局的容器类，如box layout和table。</p>
<p>MX是一套C库，依赖于clutter和glib。从面向对象的角度看，MX中的基类MxWidget继承自ClutterActor，因此所有针对ClutterActor的操作对MxWidget均可用。从MX的API来看，和GTK倒是有几分相似，熟悉GTK开发的程序员上手应该很快。</p>
<p>不过需要注意的是，目前MX还没有到稳定版本，如果要在正式产品中使用，还请慎重考虑。有兴趣的朋友可以到该项目的官方网址<a href="http://moblin.org/projects/moblin-ui-toolkit">http://moblin.org/projects/moblin-ui-toolkit</a>了解更多内容。</p>
<p>以下代码是从MX的示例代码中摘出的，功能并不完整，只是用来说明MX应用程序代码结构。</p>
<p>#include &lt;clutter/clutter.h&gt;</p>
<p>#include &lt;mx/mx.h&gt;</p>
<p>int main (int argc, char *argv[])</p>
<p>{</p>
<p>ClutterActor *stage, *vbox, *hbox, *holder, *mainbox, *toolbar, *combo;</p>
<p>MxApplication *application;</p>
<p>//</p>
<p>//初始化</p>
<p>// MX: mx_application_new(), 和当年的Hildon很像，呵呵。</p>
<p>// Clutter: clutter_init()</p>
<p>// GTK: gtk_init()</p>
<p>//</p>
<p>application = mx_application_new (&amp;argc, &amp;argv, "Test Mx",</p>
<p>MX_APPLICATION_SINGLE_INSTANCE);</p>
<p>stage = (ClutterActor*) mx_application_create_window (application);</p>
<p>clutter_actor_set_size (stage, 800, 600);</p>
<p>//</p>
<p>//布局方式: Box packing, 用过GTK的朋友应该很熟了</p>
<p>//</p>
<p>mainbox = mx_box_layout_new ();</p>
<p>clutter_actor_set_size (mainbox, 800, 600);</p>
<p>mx_box_layout_set_vertical (MX_BOX_LAYOUT (mainbox), TRUE);</p>
<p>clutter_container_add_actor (CLUTTER_CONTAINER (stage), mainbox);</p>
<p>/* create the toolbar */</p>
<p>toolbar = mx_toolbar_new ();</p>
<p>mx_bin_set_alignment (MX_BIN (toolbar), MX_ALIGN_MIDDLE, MX_ALIGN_MIDDLE);</p>
<p>combo = mx_combo_box_new ();</p>
<p>clutter_container_add_actor (CLUTTER_CONTAINER (toolbar), combo);</p>
<p>mx_combo_box_set_title (MX_COMBO_BOX (combo), "Select");</p>
<p>mx_combo_box_append_text (MX_COMBO_BOX (combo), "Hello");</p>
<p>mx_combo_box_append_text (MX_COMBO_BOX (combo), "World");</p>
<p>/* create the horizontal layout */</p>
<p>hbox = mx_box_layout_new ();</p>
<p>clutter_actor_set_position (hbox, 12, 12);</p>
<p>/* add toolbar and hoizontal layout to main container */</p>
<p>clutter_container_add (CLUTTER_CONTAINER (mainbox), toolbar, hbox, NULL);</p>
<p>/* create a vbox for the list of tests */</p>
<p>vbox = mx_box_layout_new ();</p>
<p>mx_box_layout_set_vertical (MX_BOX_LAYOUT (vbox), TRUE);</p>
<p>clutter_container_add_actor (CLUTTER_CONTAINER (hbox), vbox);</p>
<p>/* create a place holder for the tests */</p>
<p>holder = clutter_group_new ();</p>
<p>clutter_container_add_actor (CLUTTER_CONTAINER (hbox), holder);</p>
<p>group = mx_button_group_new ();</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Label",</p>
<p>(GCallback) label_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Entry",</p>
<p>(GCallback) entry_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Button", (GCallback) buttons_main,</p>
<p>CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Combo Box",</p>
<p>(GCallback) combo_box_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Progress Bar",</p>
<p>(GCallback) progress_bar_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Slider",</p>
<p>(GCallback) slider_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Toggle",</p>
<p>(GCallback) toggle_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Tooltips",</p>
<p>(GCallback) tooltips_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Expander",</p>
<p>(GCallback) expander_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Scroll Grid",</p>
<p>(GCallback) scroll_grid_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Scroll Bar",</p>
<p>(GCallback) scroll_bar_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Scroll View",</p>
<p>(GCallback) scroll_view_main, CLUTTER_CONTAINER (holder));</p>
<p>add_tab (CLUTTER_CONTAINER (vbox), group, "Styles",</p>
<p>(GCallback) styles_main, CLUTTER_CONTAINER (holder));</p>
<p>clutter_actor_show (stage);</p>
<p>//</p>
<p>//Mainloop</p>
<p>//MX: mx_application_run()</p>
<p>//Clutter: clutter_main()</p>
<p>//GTK: gtk_main()</p>
<p>//</p>
<p>mx_application_run (application);</p>
<p>return EXIT_SUCCESS;</p>
<p>}</p>
<p>可以看到，MX应用程序代码结构和Clutter与GTK程序相比大同小异，这使得程序移植的难度相对降低了。当然，由于目前控件还不是太丰富，因此若是复杂的GTK程序要移植到MX上可能还是要费一番功夫，但是Clutter应用程序的移植相对就容易了许多。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/01/20/cluttermx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intel AppUp Center上线了</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/01/12/intel-appup-center/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/01/12/intel-appup-center/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 07:45:54 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[其他]]></category>
		<category><![CDATA[移动技术]]></category>
		<category><![CDATA[AppUp]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/01/12/intel-appup-center/</guid>
		<description><![CDATA[1月7日，Beta版的Intel® AppUpSM Center正式上线，随之一同发布的还有一款上网本客户端软件，通过这款客户端，用户可以方便的浏览、搜索、购买和下载应用程序商店中的软件，并且可以管理已下载的软件，对已下载的软件进行评分和发表评论。不过目前暂时只有针对Windows操作系统的客户端，且该服务目前暂时只针对美国和加拿大用户开放。 AppUpSM的正式上线标志着Intel的应用程序商店已具雏形：开发者可以通过Intel® Atom™ Developer Program提交所开发的应用程序，如果该程序通过了审核验证，那么最终用户可以通过Intel® AppUpSM Center的客户端看到这款软件，并且能购买与下载安装。 更多消息请参考http://www.intel.com/consumer/products/appup.htm?cid=sw:dev4atom291和http://appdeveloper.intel.com/en-us/ 以下是Intel AppUp Center客户端的一些截图，由于中国用户暂时无法申请账号，所以就只有这些啦。:)]]></description>
			<content:encoded><![CDATA[<p>1月7日，Beta版的Intel® AppUp<sup>SM</sup> Center正式上线，随之一同发布的还有一款上网本客户端软件，通过这款客户端，用户可以方便的浏览、搜索、购买和下载应用程序商店中的软件，并且可以管理已下载的软件，对已下载的软件进行评分和发表评论。不过目前暂时只有针对Windows操作系统的客户端，且该服务目前暂时只针对美国和加拿大用户开放。</p>
<p>AppUp<sup>SM</sup>的正式上线标志着Intel的应用程序商店已具雏形：开发者可以通过Intel® Atom™ Developer Program提交所开发的应用程序，如果该程序通过了审核验证，那么最终用户可以通过Intel® AppUp<sup>SM</sup> Center的客户端看到这款软件，并且能购买与下载安装。</p>
<p>更多消息请参考<a href="http://www.intel.com/consumer/products/appup.htm?cid=sw:dev4atom291">http://www.intel.com/consumer/products/appup.htm?cid=sw:dev4atom291</a>和<a href="http://appdeveloper.intel.com/en-us/">http://appdeveloper.intel.com/en-us/</a></p>
<p>以下是Intel AppUp Center客户端的一些截图，由于中国用户暂时无法申请账号，所以就只有这些啦。:)</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2010/01/home2.jpg"><img class="alignnone size-large wp-image-400003162" src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2010/01/home2-1024x600.jpg" alt="" width="1024" height="600" /></a></p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2010/01/category.jpg"><img class="alignnone size-large wp-image-400003167" src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2010/01/category-1024x600.jpg" alt="" width="1024" height="600" /></a></p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2010/01/app1.jpg"><img class="alignnone size-large wp-image-400003163" src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2010/01/app1-1024x600.jpg" alt="" width="1024" height="600" /></a></p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2010/01/search2.jpg"><img class="alignnone size-large wp-image-400003165" src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2010/01/search2-1024x600.jpg" alt="" width="1024" height="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/01/12/intel-appup-center/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Moblin SDK和Anjuta搭建Moblin V2开发环境 (3)</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/12/10/moblin-sdkanjutamoblin-v2-3/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/12/10/moblin-sdkanjutamoblin-v2-3/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 08:01:30 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[移动技术]]></category>
		<category><![CDATA[anjuta]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[Moblin]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/12/10/moblin-sdkanjutamoblin-v2-3/</guid>
		<description><![CDATA[在前两篇博客中曾经提到过Moblin Anjuta Plugin。假如有读者亲自动手搭建过Moblin V2的开发环境，或者在Moblin.org网站阅读过相关的内容，可能会发现在Moblin Anjuta Plugin的设置界面中，Target选项除了外部设备，也就是上网本之外，还有一个QEMU模拟器的选项，这是不是意味着可以使用QEMU和Moblin镜像来替代上网本作为目标环境呢？由于Moblin.org上并没有介绍相关内容，因此决定自行摸索一下。 首先，使用Moblin Image Creator2创建一个Moblin V2的KVM镜像文件。在终端上运行以下命令： sudo moblin-image-creator --config=2.1-final.ks --format=raw --cache=mycache 命令执行完毕后会在当前目录下生成一个名为moblin-2.1-final-XX的目录，目录中有一个名为moblin-2.1-final-XX-sda.raw的文件，就是我们想要的镜像文件。 再创建一个Moblin V2的LiveCD镜像，我们要从中把Kernel拷贝出来： sudo moblin-image-creator --config=2.1-final.ks --format=livecd --cache=mycache 命令执行完毕后会在当前目录下生成一个名为moblin-2.1-final-XX.iso的文件，然后在当前目录下建立一个目录，比如chroot-fs-2，通过moblin-chroot命令，将这个文件mount到目录上： sudo moblin-chroot -s chroot-fs-2 --unpack-only  moblin-2.1-final-XX.iso 最后，只要从chroot-fs-2/boot/下把vmlinuz-XX拷贝出来即可。 第二步，配置Moblin Anjuta Plugin。关于如何安装、启用该插件以及工具链设置，可以参考我的上两篇博客中的相关内容。打开Anjuta后，通过菜单”Edit”-&#62;”Preferences”，打开设置对话框，点击左侧的Moblin SDK，打开插件配置界面。在Target Options中，我们选择 “Use QEMU Device Emulator”，Kernel和Root filesystem这两个选项也被激活。Kernel设成刚才拷贝出来的vmlinuz-XX，Root filesystem设成刚才生成的KVM镜像文件即可。 第三步，启动KVM。通过菜单”Tools”-&#62;”Start QEMU”，启动虚拟机。 问题来了。Anjuta报了一条出错信息：找不到一个叫”poky-qemu”的命令。所谓“外事不决问google”，上google一查这个命令，发现了poky platform builder，它提供了一套完整的Linux下的开发环境，Moblin SDK也是基于它打造的。于是我下载了poky的SDK，从中复制出poky-qemu相关的一堆文件，放到了&#60;moblin sdk root&#62;/moblin-cross-toolchain/bin/下，再次从Anjuta中启动KVM。 旧的错误不见了，新的错误又来了。这次报告不支持”netboo”的机器类型。因此我们需要修改poky-qemu-internal，加入相应的机器类型。改完之后再次运行，虚拟机成功的运行起来了。但是遇到了一个新的问题：过了grub之后，整个虚拟机窗口一片白色，什么内容都没有……关掉Anjuta，从terminal里手动启动KVM： sudo kvm -m 512 [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="21pt;"><span style="宋体;">在前两篇博客中曾经提到过</span><span lang="EN-US">Moblin Anjuta Plugin</span><span style="宋体;">。假如有读者亲自动手搭建过</span><span lang="EN-US">Moblin V2</span><span style="宋体;">的开发环境，或者在</span><span lang="EN-US">Moblin.org</span><span style="宋体;">网站阅读过相关的内容，可能会发现在</span><span lang="EN-US">Moblin Anjuta Plugin</span><span style="宋体;">的设置界面中，</span><span lang="EN-US">Target</span><span style="宋体;">选项除了外部设备，也就是上网本之外，还有一个</span><span lang="EN-US">QEMU</span><span style="宋体;">模拟器的选项，这是不是意味着可以使用</span><span lang="EN-US">QEMU</span><span style="宋体;">和</span><span lang="EN-US">Moblin</span><span style="宋体;">镜像来替代上网本作为目标环境呢？由于</span><span lang="EN-US">Moblin.org</span><span style="宋体;">上并没有介绍相关内容，因此决定自行摸索一下。</span></p>
<p class="MsoNormal" style="21pt;"><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2009/12/anjuta_moblin_sdk_preferences_0.png"><img class="alignnone size-medium wp-image-400002895" src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2009/12/anjuta_moblin_sdk_preferences_0-300x202.png" alt="" width="300" height="202" /></a></p>
<p class="MsoNormal" style="21pt;"><!--[if gte mso 9]&gt;    &lt;![endif]--><!--[if gte mso 9]&gt;  Normal 0    7.8 pt 0 2  false false false  EN-US ZH-CN X-NONE                                  &lt;![endif]--><!--[if gte mso 9]&gt;                                                                                                                                            &lt;![endif]--></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">首先，使用</span><span lang="EN-US">Moblin Image Creator2</span><span style="宋体;">创建一个</span><span lang="EN-US">Moblin V2</span><span style="宋体;">的</span><span lang="EN-US">KVM</span><span style="宋体;">镜像文件。在终端上运行以下命令：</span></p>
<p class="MsoNormal" style="18pt;"><code><span style="9pt;" lang="EN-US">sudo moblin-image-creator --config=2.1-final.ks --format=raw --cache=mycache</span></code></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">命令执行完毕后会在当前目录下生成一个名为</span><span lang="EN-US">moblin-2.1-final-XX</span><span style="宋体;">的目录，目录中有一个名为</span><span lang="EN-US">moblin-2.1-final-XX-sda.raw</span><span style="宋体;">的文件，就是我们想要的镜像文件。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">再创建一个</span><span lang="EN-US">Moblin V2</span><span style="宋体;">的</span><span lang="EN-US">LiveCD</span><span style="宋体;">镜像，我们要从中把</span><span lang="EN-US">Kernel</span><span style="宋体;">拷贝出来：</span></p>
<p class="MsoNormal" style="18pt;"><code><span style="9pt;" lang="EN-US">sudo moblin-image-creator --config=2.1-final.ks --format=livecd --cache=mycache</span></code></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">命令执行完毕后会在当前目录下生成一个名为</span><span lang="EN-US">moblin-2.1-final-XX.iso</span><span style="宋体;">的文件，然后在当前目录下建立一个目录，比如</span><span lang="EN-US">chroot-fs-2</span><span style="宋体;">，通过</span><span lang="EN-US">moblin-chroot</span><span style="宋体;">命令，将这个文件</span><span lang="EN-US">mount</span><span style="宋体;">到目录上：</span></p>
<p class="MsoNormal" style="18pt;"><code><span style="9pt;" lang="EN-US">sudo moblin-chroot -s chroot-fs-2 --unpack-only  moblin-2.1-final-XX.iso</span></code></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">最后，只要从</span><span lang="EN-US">chroot-fs-2/boot/</span><span style="宋体;">下把</span><span lang="EN-US">vmlinuz-XX</span><span style="宋体;">拷贝出来即可。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">第二步，配置</span><span lang="EN-US">Moblin Anjuta Plugin</span><span style="宋体;">。关于如何安装、启用该插件以及工具链设置，可以参考我的上两篇博客中的相关内容。打开</span><span lang="EN-US">Anjuta</span><span style="宋体;">后，通过菜单</span><span lang="EN-US">”Edit”-&gt;”Preferences”</span><span style="宋体;">，打开设置对话框，点击左侧的</span><span lang="EN-US">Moblin SDK</span><span style="宋体;">，打开插件配置界面。在</span><span lang="EN-US">Target Options</span><span style="宋体;">中，我们选择</span> <span style="宋体;">“</span><span lang="EN-US">Use QEMU Device Emulator</span><span style="宋体;">”，</span><span lang="EN-US">Kernel</span><span style="宋体;">和</span><span lang="EN-US">Root filesystem</span><span style="宋体;">这两个选项也被激活。</span><span lang="EN-US">Kernel</span><span style="宋体;">设成刚才拷贝出来的</span><span lang="EN-US">vmlinuz-XX</span><span style="宋体;">，</span><span lang="EN-US">Root filesystem</span><span style="宋体;">设成刚才生成的</span><span lang="EN-US">KVM</span><span style="宋体;">镜像文件即可。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">第三步，启动</span><span lang="EN-US">KVM</span><span style="宋体;">。通过菜单</span><span lang="EN-US">”Tools”-&gt;”Start QEMU”</span><span style="宋体;">，启动虚拟机。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">问题来了。</span><span lang="EN-US">Anjuta</span><span style="宋体;">报了一条出错信息：找不到一个叫</span><span lang="EN-US">”poky-qemu”</span><span style="宋体;">的命令。所谓“外事不决问</span><span lang="EN-US">google</span><span style="宋体;">”，上</span><span lang="EN-US">google</span><span style="宋体;">一查这个命令，发现了</span><span lang="EN-US">poky platform builder</span><span style="宋体;">，它提供了一套完整的</span><span lang="EN-US">Linux</span><span style="宋体;">下的开发环境，</span><span lang="EN-US">Moblin SDK</span><span style="宋体;">也是基于它打造的。于是我下载了</span><span lang="EN-US">poky</span><span style="宋体;">的</span><span lang="EN-US">SDK</span><span style="宋体;">，从中复制出</span><span lang="EN-US">poky-qemu</span><span style="宋体;">相关的一堆文件，放到了</span><span lang="EN-US">&lt;moblin sdk root&gt;/moblin-cross-toolchain/bin/</span><span style="宋体;">下，再次从</span><span lang="EN-US">Anjuta</span><span style="宋体;">中启动</span><span lang="EN-US">KVM</span><span style="宋体;">。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">旧的错误不见了，新的错误又来了。这次报告不支持</span><span lang="EN-US">”netboo”</span><span style="宋体;">的机器类型。因此我们需要修改</span><span lang="EN-US">poky-qemu-internal</span><span style="宋体;">，加入相应的机器类型。改完之后再次运行，虚拟机成功的运行起来了。但是遇到了一个新的问题：过了</span><span lang="EN-US">grub</span><span style="宋体;">之后，整个虚拟机窗口一片白色，什么内容都没有……关掉</span><span lang="EN-US">Anjuta</span><span style="宋体;">，从</span><span lang="EN-US">terminal</span><span style="宋体;">里手动启动</span><span lang="EN-US">KVM</span><span style="宋体;">：</span></p>
<p class="MsoNormal" style="18pt;"><code><span style="9pt;" lang="EN-US">sudo kvm -m 512 -boot c -hda moblin-2.1-final-XX-sda.raw -vga std</span></code></p>
<p class="MsoNormal" style="18pt;"><code><span style="9pt;">但是结果还是与之前一样……该问题正在解决中。我用的<span lang="EN-US">OS</span>是<span lang="EN-US">Ubuntu9.04</span>，如果有朋友通过<span lang="EN-US">KVM</span>成功启动，欢迎告知。</span></code></p>
<p class="MsoNormal" style="18pt;"><code><span style="9pt;">附上修改过的</span></code><code><span style="&quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">poky-qemu-internal</span></code><code><span style="9pt;">, 直接复制以下内容并覆盖poky-qemu-internal原有内容即可。<br />
</span></code></p>
<p class="MsoNormal" style="18pt;">#!/bin/bash<br />
# Handle running Poky images under qemu<br />
#<br />
# Copyright (C) 2006-2008 OpenedHand Ltd.<br />
#<br />
# This program is free software; you can redistribute it and/or modify<br />
# it under the terms of the GNU General Public License version 2 as<br />
# published by the Free Software Foundation.<br />
#<br />
# This program is distributed in the hope that it will be useful,<br />
# but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br />
# GNU General Public License for more details.<br />
#<br />
# You should have received a copy of the GNU General Public License along<br />
# with this program; if not, write to the Free Software Foundation, Inc.,<br />
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</p>
<p># Call setting:<br />
#   QEMU_MEMORY (optional) - set the amount of memory in the emualted system.<br />
#   SERIAL_LOGFILE (optional) - log the serial port output to a file<br />
#   CROSSPATH - the path to any cross toolchain to use with distcc<br />
#<br />
# Image options:<br />
#   MACHINE - the machine to run<br />
#   TYPE - the image type to run<br />
#   ZIMAGE - the kernel image file to use<br />
#   HDIMAGE - the disk image file to use<br />
#</p>
<p>QEMUIFUP=`which poky-qemu-ifup`<br />
QEMUIFDOWN=`which poky-qemu-ifdown`<br />
KERNEL_NETWORK_CMD="ip=192.168.7.2::192.168.7.1:255.255.255.0"<br />
#QEMU_NETWORK_CMD="-net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=$QEMUIFUP,downscript=$QEMUIFDOWN"<br />
#QEMU_NETWORK_CMD="-net nic"<br />
KERNCMDLINE="mem=$QEMU_MEMORY"</p>
<p>if [ -z "$QEMU_MEMORY" ]; then<br />
QEMU_MEMORY="64M"<br />
fi</p>
<p>SERIALOPTS=""<br />
if [ "x$SERIAL_LOGFILE" != "x" ]; then<br />
SERIALOPTS="-serial file:$SERIAL_LOGFILE"<br />
fi</p>
<p>case "$MACHINE" in<br />
"qemuarm") ;;<br />
"qemux86") ;;<br />
"akita") ;;<br />
"spitz") ;;<br />
"netboo") ;;<br />
*)<br />
echo "Error: Unsupported machine type $MACHINE"<br />
return<br />
;;<br />
esac</p>
<p>if [ "$TYPE" != "nfs" -a ! -f "$HDIMAGE" ]; then<br />
echo "Error: Image file $HDIMAGE doesn't exist"<br />
return<br />
fi</p>
<p>if [ ! -f "$ZIMAGE" ]; then<br />
echo "Error: Kernel image file $ZIMAGE doesn't exist"<br />
return<br />
fi</p>
<p>if [ "$MACHINE" = "qemuarm" ]; then<br />
QEMU=qemu-system-arm<br />
if [ "$TYPE" = "ext2" ]; then<br />
KERNCMDLINE="root=/dev/sda console=ttyAMA0 console=tty0 mem=$QEMU_MEMORY"<br />
QEMUOPTIONS="$QEMU_NETWORK_CMD -M versatilepb -hda $HDIMAGE -usb -usbdevice wacom-tablet -no-reboot"<br />
fi<br />
if [ "$TYPE" = "nfs" ]; then<br />
if [ "x$HDIMAGE" = "x" ]; then<br />
HDIMAGE=/srv/nfs/qemuarm<br />
fi<br />
if [ ! -d "$HDIMAGE" ]; then<br />
echo "Error: NFS mount point $HDIMAGE doesn't exist"<br />
return<br />
fi<br />
KERNCMDLINE="root=/dev/nfs nfsroot=192.168.7.1:$HDIMAGE rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"<br />
QEMUOPTIONS="$QEMU_NETWORK_CMD -M versatilepb -no-reboot"<br />
fi<br />
fi</p>
<p>if [ "$MACHINE" = "qemux86" ]; then<br />
QEMU=qemu<br />
if [ "$TYPE" = "ext2" ]; then<br />
KERNCMDLINE="root=/dev/hda mem=$QEMU_MEMORY $KERNEL_NETWORK_CMD"<br />
QEMUOPTIONS="-std-vga $QEMU_NETWORK_CMD -hda $HDIMAGE -usb -usbdevice wacom-tablet"<br />
fi<br />
if [ "$TYPE" = "nfs" ]; then<br />
if [ "x$HDIMAGE" = "x" ]; then<br />
HDIMAGE=/srv/nfs/qemux86<br />
fi<br />
if [ ! -d "$HDIMAGE" ]; then<br />
echo "Error: NFS mount point $HDIMAGE doesn't exist."<br />
return<br />
fi<br />
KERNCMDLINE="root=/dev/nfs nfsroot=192.168.7.1:$HDIMAGE rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"<br />
QEMUOPTIONS="-std-vga $QEMU_NETWORK_CMD"<br />
fi<br />
fi</p>
<p>if [ "$MACHINE" = "spitz" ]; then<br />
QEMU=qemu-system-arm<br />
if [ "$TYPE" = "ext3" ]; then<br />
echo $HDIMAGE<br />
HDIMAGE=`readlink -f $HDIMAGE`<br />
echo $HDIMAGE<br />
if [ ! -e "$HDIMAGE.qemudisk" ]; then<br />
echo "Adding a partition table to the ext3 image for use by QEMU, please wait..."<br />
poky-addptable2image $HDIMAGE $HDIMAGE.qemudisk<br />
fi<br />
QEMUOPTIONS="$QEMU_NETWORK_CMD -M spitz -hda $HDIMAGE.qemudisk -portrait"<br />
fi<br />
fi</p>
<p>if [ "$MACHINE" = "akita" ]; then<br />
QEMU=qemu-system-arm<br />
if [ "$TYPE" = "jffs2" ]; then<br />
HDIMAGE=`readlink -f $HDIMAGE`<br />
if [ ! -e "$HDIMAGE.qemuflash" ]; then<br />
echo "Converting raw image into flash image format for use by QEMU, please wait..."<br />
raw2flash.akita &lt; $HDIMAGE &gt; $HDIMAGE.qemuflash<br />
fi<br />
QEMUOPTIONS="$QEMU_NETWORK_CMD -M akita -mtdblock $HDIMAGE.qemuflash -portrait"<br />
fi<br />
fi</p>
<p>if [ "$MACHINE" = "netboo" ]; then<br />
QEMU=kvm<br />
QEMUOPTIONS="-m 512 -boot c -hda $HDIMAGE -vga std $QEMU_NETWORK_CMD"<br />
fi</p>
<p>if [ "x$QEMUOPTIONS" = "x" ]; then<br />
echo "Error: Unable to support this combination of options"<br />
return<br />
fi</p>
<p>SDKDIR="/usr/local/poky/eabi-glibc"<br />
if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "spitz" -o "$MACHINE" = "borzoi" -o "$MACHINE" = "akita" ]; then<br />
SDKPATH="$SDKDIR/arm/arm-poky-linux-gnueabi/bin:$SDKDIR/arm/bin"<br />
fi</p>
<p>if [ "$MACHINE" = "qemux86" ]; then<br />
SDKPATH="$SDKDIR/i586/i586-poky-linux/bin:$SDKDIR/i586/bin"<br />
fi<br />
PATH=$CROSSPATH:$SDKPATH:$PATH</p>
<p>QEMUBIN=`which $QEMU`</p>
<p>if [ ! -x "$QEMUBIN" ]; then<br />
echo "Error: No QEMU binary '$QEMU' could be found."<br />
return<br />
fi</p>
<p>function _quit() {<br />
if [ -n "$PIDFILE" ]; then<br />
#echo kill `cat $PIDFILE`<br />
kill `cat $PIDFILE`<br />
fi<br />
return<br />
}</p>
<p>DISTCCD=`which distccd`<br />
PIDFILE=""</p>
<p>trap _quit INT TERM QUIT</p>
<p>if [ -x "$DISTCCD" ]; then<br />
echo "Starting distccd..."<br />
PIDFILE=`mktemp`<br />
$DISTCCD --allow 192.168.7.2 --daemon --pid-file $PIDFILE &amp;<br />
else<br />
echo "Warning: distccd not present, no distcc support loaded."<br />
fi</p>
<p>echo "Running $QEMU using sudo..."<br />
#echo $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS --append "$KERNCMDLINE"<br />
#sudo $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS --append "$KERNCMDLINE" || /bin/true<br />
sudo $QEMUBIN $QEMUOPTIONS || /bin/true</p>
<p>trap - INT TERM QUIT<br />
return</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/12/10/moblin-sdkanjutamoblin-v2-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转载：Mobile Device Thieving Soon Won’t Pay</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/12/01/mobile-device-thieving-soon-wont-pay/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/12/01/mobile-device-thieving-soon-wont-pay/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 04:44:31 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[可管理性]]></category>
		<category><![CDATA[移动技术]]></category>
		<category><![CDATA[anti-theft]]></category>
		<category><![CDATA[laptop]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/12/01/mobile-device-thieving-soon-wont-pay/</guid>
		<description><![CDATA[逛Moblinzone时发现了这篇博客，作者介绍了Intel Anti-theft Technology和使用场景，转来和大家一同学习，增广见闻。:) Mobile Device Thieving Soon Won’t Pay by Lisa Morgan Intel Anti-Theft Technology (Intel AT) is turning perfectly good laptops into bricks and will eventually turn perfectly good smartphones into rocks.  The company is already teaming up with tracking, remote data removal, encryption or PC recovery software vendors, as well as device recovery [...]]]></description>
			<content:encoded><![CDATA[<p>逛Moblinzone时发现了这篇博客，作者介绍了Intel Anti-theft Technology和使用场景，转来和大家一同学习，增广见闻。:)</p>
<p><strong>Mobile Device Thieving Soon Won’t Pay</strong></p>
<p><span>by <em>Lisa Morgan</em></span></p>
<p><strong>Intel Anti-Theft Technology (Intel AT) is turning perfectly good laptops into bricks and will eventually turn perfectly good smartphones into rocks.  The company is already teaming up with tracking, remote data removal, encryption or PC recovery software vendors, as well as device recovery service providers and OEMs to deter laptop computer theft.  At the request of partners and end customers, the technology will eventually extend to netbooks, MIDs, and smartphones. </strong></p>
<p><strong></strong>Each year millions of laptops and handheld devices are lost or stolen.  According to Processor, two million laptop computers are reported stolen and 97 percent of them are never recovered.  Asurion estimates that 60 million cell phones are lost, stolen or damaged each year.</p>
<p>“Smaller devices are becoming more powerful and [mobile users] want to access to their data from anywhere,” said Mauricio Cuervo, marketing manager, PC Client Group in Intel’s Anti-Theft Services Group.  “We’re starting with laptops but getting requests from partners and end users to support smaller formats.”</p>
<p>Intel AT is included in the new Centrino 2 processor-based laptops.  It provides dedicated security and manageability functions as well as dedicated circuitry and firmware making Intel AT far more difficult to compromise than software solutions alone.  In fact, Absolute Software, PGP, Phoenix Technologies, WinMagic and others are teaming up with Intel to add yet another layer of security.  For example, using Phoenix Technologies, IT administrators are able to manage and  remotely remove or retrieve data from a lost or stolen laptop.  With the addition of Intel AT administrators can also render the machine completely inoperable.</p>
<p>In addition to working with ISVs and recovery service providers like Absolute Software, Intel provides hardware and an SDK so OEMs can make their laptops AT ready.  To take advantage of the technology, the purchaser of a laptop must buy an AT-ready laptop as well as software from the likes of PGP, WinMagic or Absolute Software.</p>
<p>When a laptop has been reported lost or stolen, or a pre-defined event has been triggered, Intel AT disables the laptop via a “poison pill”.  The poison pill can be delivered over the Internet, locally, or via an SMS message.  Even if the OS is reinstalled, or the hard disk replaced, the laptop remains disabled.  However, the machine can be easily reactivated by administrators, assigned users or both, easily without causing data loss or damage to the PC.</p>
<p>“There are three key areas of anti-theft,” said Cuervo.  “Detection, response, and reactivation.”</p>
<p>Lost laptops can be detected in a number of ways, the most obvious of which is the user notifying the IT department or asset recovery service provider.  When a laptop has been reported lost or stolen, it is flagged in a central server.  When rebooted and connected to the Internet, it automatically receives a poison pill.</p>
<p>Intel AT includes support for pre-boot authentication (PBA) modules which includes a hardware-based PBA login timer and PBA login failure counter to detect potential theft.  The PBA login timer controls the time it takes to login.  The PBA login failure counter monitors failed login attempts and triggers a response when the number of failed attempts exceed a pre-defined threshold.</p>
<p>Intel AT also supports a rendezvous timer that requires the laptop to check in periodically with a central server. If the laptop fails to check in within the required time frame, a policy-based response triggers a local poison pill.</p>
<p>Intel AT further includes tamper monitoring so if a user tries to alter a key element like the firmware or BIOS, a poison pill is automatically activated locally.  There is also a dedicated controller that blocks the boot process regardless of what device (e.g. hard drive, USB key, CD, DVD, external hard disk, etc) is used to boot the OS.</p>
<p>With solutions from encryption vendors like PGP and WinMagic, there is an additional level of data protection. In addition to disabling computer operation, a poison pill can also block data access by deleting or hiding the end-user credentials or the encryption keys or similar cryptographic material stored in the the chipset.  When a poison pill is triggered, the encryption keys can be deleted or hidden to prevent access to the data, even if the credentials have been compromised.</p>
<p>“If you bind the encryption key to the platform the data in the hard drive is only available to that laptop,” said Cuervo.  “And if you remove the drive you won’t be able to access the data, even if you know the credentials.”</p>
<p>In the absence of any anti-theft protection whatsoever, laptops and the data on them are completely exposed. “If you don’t have any protection you can read and extract the data on the drive.  You can also reformat, reuse or swap out the drive,” said Cuervo.  Not so with Intel AT.</p>
<p>After the poison pill is received, the laptop becomes completely inoperable with or without a new hard drive.  The OS will not boot and cannot be reimaged.</p>
<p>Once disabled, a reactivation screen appears, indicating that the laptop has been disabled and the options to reactivate it.  Administrators can also include a custom message in that screen such as where a third party may return the machine to receive a reward.</p>
<p>Reactivation by an authorized user, administrator or both is quick and easy.  Users can enter a password they pre-defined (if their IT policy allows it) or an administrator can provide the user with a one-time recovery token that only works on that laptop.  The machine can also be reactivated by an administrator who sends a code via a secure text message (which requires the presence of a 3G card).</p>
<p>At the present time, Intel AT is available on some laptops based on the Intel Centrino 2 processor with vPro Technology.  In 2010, Intel AT will expand its reach beyond enterprise customers to consumers as well as small to medium enterprises (SMEs) via the Core i3, Core i5, and Core i7 processors with the proper chipsets.  Because OEMs will be rolling out products in phases, Cuervo suggests consumers contact the OEM to verify the machine is AT capable.</p>
<p>Cuervo also encourages Moblin community members to get their hands on a Core i3, Core i5, or Core i7 system and play with it.</p>
<p>“We’d love to get their feedback because our customers and partners want us to build Intel AT into smaller devices,” he said.</p>
<p>Although he did not provide a timeframe specifying when more mobile devices will be supported, he did say it is likely netbooks will be targeted first, followed by MIDs and smartphones.</p>
<p>ISVs, OEMs, ODMs, service providers and independent developers can get more information about Intel AT <a href="http://moblinzone.com/www.intel.com/go/anti-theft" class="broken_link"><span style="arial,helvetica,sans-serif;">here.</span></a> Cuervo said he can also be contacted directly at Mauricio.cuervo@intel.com and will gladly route inquiries to the appropriate parties.</p>
<p>* All names and brands are the property of their respective owners.</p>
<p>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­</p>
<hr size="2" /><em>Lisa Morgan is an independent high tech management and marketing consultant who creates content and provides commentary to print and broadcast media.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/12/01/mobile-device-thieving-soon-wont-pay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Moblin SDK和Anjuta搭建Moblin V2开发环境 (2)</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/11/30/moblin-sdkanjutamoblin-v2-2/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/11/30/moblin-sdkanjutamoblin-v2-2/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 11:20:13 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[移动技术]]></category>
		<category><![CDATA[development environment]]></category>
		<category><![CDATA[Moblin V2]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/11/30/moblin-sdkanjutamoblin-v2-2/</guid>
		<description><![CDATA[Moblin.org上有一篇教程叫"Hello Moblin"，讲的是如何使用Moblin工具与开发环境来开发、调试应用程序。具体内容大家可以到http://moblin.org/documentation/moblin-sdk/hello-moblin上阅读。在此，我讲一下大致的流程。 1. 使用Linux Project Generator(LPG)生成项目。通过LPG图形化的界面，用户可以设置项目类型(终端或图形)，开发语言(C/C++/python)，项目路径，License以及编译参数等内容。当生成项目时，LPG帮助用户生成项目框架，其中包括了代码框架，文档框架以及项目编译时所需的autogen框架文件。 2. 使用Anjuta导入生成的项目。进入Anjuta，通过菜单选择File-&#62;New-&#62;Project From Existing Source，就能轻松的将项目导入。 3. Coding &#38; Coding 4. 编译。如果是第一次编译(Makefile还未生成)，通过菜单选择Build-&#62;Configure project...来检查依赖关系与生成Makefile。如果已经生成了Makefile，通过菜单选择Build-&#62;Build project进行编译。 5.远程调试。假设上网本上openssh server, rsync和gdb server都安装好了，那么首先将需要调试的程序部署到上网本上，通过菜单选择Tools-&#62;Deploy轻松搞定，通过deploy记录我们可以看到可执行文件被部署的具体位置。接下来我们要远程运行xhost +和gdbserver了，这可以通过Anjuta菜单中Tools-&#62;Run Remote来实现。等到gdb server起来后，通过菜单中Run-&#62;Debug Remote Target...使用TCP/IP连接到上网本，就能像调试本地程序一样来调试远程的程序了。 6.调试成功后，到了软件发布的时间。使用Moblin Package Creator对应用进行打包，它可以打rpm和deb包。]]></description>
			<content:encoded><![CDATA[<p>Moblin.org上有一篇教程叫"Hello Moblin"，讲的是如何使用Moblin工具与开发环境来开发、调试应用程序。具体内容大家可以到<a href="http://moblin.org/documentation/moblin-sdk/hello-moblin">http://moblin.org/documentation/moblin-sdk/hello-moblin</a>上阅读。在此，我讲一下大致的流程。</p>
<p>1. 使用Linux Project Generator(LPG)生成项目。通过LPG图形化的界面，用户可以设置项目类型(终端或图形)，开发语言(C/C++/python)，项目路径，License以及编译参数等内容。当生成项目时，LPG帮助用户生成项目框架，其中包括了代码框架，文档框架以及项目编译时所需的autogen框架文件。</p>
<p>2. 使用Anjuta导入生成的项目。进入Anjuta，通过菜单选择File-&gt;New-&gt;Project From Existing Source，就能轻松的将项目导入。</p>
<p>3. Coding &amp; Coding <img src='http://software.intel.com/zh-cn/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>4. 编译。如果是第一次编译(Makefile还未生成)，通过菜单选择Build-&gt;Configure project...来检查依赖关系与生成Makefile。如果已经生成了Makefile，通过菜单选择Build-&gt;Build project进行编译。</p>
<p>5.远程调试。假设上网本上openssh server, rsync和gdb server都安装好了，那么首先将需要调试的程序部署到上网本上，通过菜单选择Tools-&gt;Deploy轻松搞定，通过deploy记录我们可以看到可执行文件被部署的具体位置。接下来我们要远程运行xhost +和gdbserver了，这可以通过Anjuta菜单中Tools-&gt;Run Remote来实现。等到gdb server起来后，通过菜单中Run-&gt;Debug Remote Target...使用TCP/IP连接到上网本，就能像调试本地程序一样来调试远程的程序了。</p>
<p>6.调试成功后，到了软件发布的时间。使用Moblin Package Creator对应用进行打包，它可以打rpm和deb包。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/11/30/moblin-sdkanjutamoblin-v2-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Moblin SDK和Anjuta搭建Moblin V2开发环境 (1)</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/11/30/moblin-sdkanjutamoblin-v2-1/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/11/30/moblin-sdkanjutamoblin-v2-1/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 09:51:50 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[移动技术]]></category>
		<category><![CDATA[development environment]]></category>
		<category><![CDATA[Moblin V2]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/11/30/moblin-sdkanjutamoblin-v2-1/</guid>
		<description><![CDATA[之前曾经讲过如何搭建Moblin 1.0的开发环境。不知不觉间，Moblin V2出了SDK。利用Moblin SDK和Anjuta——一个Linux上知名的IDE，可以方便的搭建出Moblin V2应用程序的开发调试环境。 首先要做一点准备工作： 1. Linux台式机一台，作为开发机，使用Fedora和Ubuntu均可。 2. 安装有Moblin V2镜像的上网本一台，用来调试程序。如果没有，也没有关系。 清单就到此为止，挺简单的吧，呵呵。准备完毕后，我们就要开始搭环境了。 第一步，下载安装Moblin SDK到开发机。下载地址是 http://moblin.org/sites/all/files/moblin-sdk-0.8.tar.bz2。下载完成后找个目录把压缩包解开，编辑目录中的envsetup.sh，将$MOBLIN_TOOLCHAIN的值设成Moblin工具链的实际路径。假如Moblin SDK是在~下解开的，并且解压目录是moblin-sdk-0.8，则需要 export MOBLIN_TOOLCHAIN=~/moblin-sdk-0.8/moblin-cross-toolchain 第二步，下载安装Anjuta。用户直接通过yum或者apt下载安装即可。不过依照本人的使用经历，下载之前要注意下Anjuta的版本，不能太旧，要高于2.4，也不能太新，我一开始装了最新的2.28，结果在安装Moblin的Anjuta插件时报某符号找不到，死活装不上，卸载后安装Anjuta 2.26就天下太平了。 第三步，安装Moblin的Anjuta插件。在http://moblin.org/projects/moblin-anjuta-plug-in上可以下载到预先编译好的安装包，rpm和deb都有，当然也有源码包，可以根据自身需要下载安装。这个插件为Anjuta IDE提供了以下一些功能： 1. 交叉编译使用Autotool的项目。对于使用Linux Project Generator(另一个Moblin.org上的项目)生成的项目有着非常好的支持。 2. 可以将编译好的程序部署到远程的上网本中(通过网络连接)。 3. 可以远程运行上网本中的程序。 4. 可以远程调试上网本中的程序。 插件安装完后重新启动Anjuta，我们要启用Moblin插件并进行设置。选择菜单栏上的”Edit”-&#62;”Preferences”，打开Anjuta Preferences对话框。点击右上Installed Plugins标签，在插件列表中选择Moblin SDK，此时在对话框左边就会出现 Moblin SDK，点击Moblin SDK，出现Moblin插件的设置界面。在这里我们要设置两项内容：IDE所使用的工具链和目标机位置。 交叉编译：选择“Use an external toolchain”。之前下载的Moblin SDK中包含了整套工具链，所以只需将SDK root设成SDK安装目录下的moblin-cross-toolchain目录即可。Toolchain triplet设为i586-moblin-linux. 目标机位置：因为手边有上网本，所以选择”Use an external device”，并输入上网本的ip地址。 花开两朵，各表一枝。开发机上的环境差不多搭好了，第四步就该设置上网本了。上网本上已经安装了Moblin V2，为了让开发机可以远程访问和调试，我们需要安装openssh-server, rsync和gdbserver。通过以下命令可以完成上述软件包的安装： sudo yum [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="21pt;"><span style="宋体;"> 之前曾经讲过如何搭建</span><span lang="EN-US">Moblin 1.0</span><span style="宋体;">的开发环境。不知不觉间，</span><span lang="EN-US">Moblin V2</span><span style="宋体;">出了</span><span lang="EN-US">SDK</span><span style="宋体;">。利用</span><span lang="EN-US">Moblin SDK</span><span style="宋体;">和</span><span lang="EN-US">Anjuta</span><span style="宋体;">——一个</span><span lang="EN-US">Linux</span><span style="宋体;">上知名的</span><span lang="EN-US">IDE</span><span style="宋体;">，可以方便的搭建出</span><span lang="EN-US">Moblin V2</span><span style="宋体;">应用程序的开发调试环境。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">首先要做一点准备工作：</span></p>
<p class="MsoListParagraph" style="-18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>1.<span style="none;"> </span></span></span><!--[endif]--><span lang="EN-US">Linux</span><span style="宋体;">台式机一台，作为开发机，使用</span><span lang="EN-US">Fedora</span><span style="宋体;">和</span><span lang="EN-US">Ubuntu</span><span style="宋体;">均可。</span></p>
<p class="MsoListParagraph" style="-18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>2.<span style="none;"> </span></span></span><!--[endif]--><span style="宋体;">安装有</span><span lang="EN-US">Moblin V2</span><span style="宋体;">镜像的上网本一台，用来调试程序。如果没有，也没有关系。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">清单就到此为止，挺简单的吧，呵呵。准备完毕后，我们就要开始搭环境了。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">第一步，下载安装</span><span lang="EN-US">Moblin SDK</span><span style="宋体;">到开发机。下载地址是</span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://moblin.org/sites/all/files/moblin-sdk-0.8.tar.bz2">http://moblin.org/sites/all/files/moblin-sdk-0.8.tar.bz2</a></span><span style="宋体;">。下载完成后找个目录把压缩包解开，编辑目录中的</span><span lang="EN-US">envsetup.sh</span><span style="宋体;">，将</span><span lang="EN-US">$MOBLIN_TOOLCHAIN</span><span style="宋体;">的值设成</span><span lang="EN-US">Moblin</span><span style="宋体;">工具链的实际路径。假如</span><span lang="EN-US">Moblin SDK</span><span style="宋体;">是在</span><span lang="EN-US">~</span><span style="宋体;">下解开的，并且解压目录是</span><span lang="EN-US">moblin-sdk-0.8</span><span style="宋体;">，则需要</span></p>
<p class="MsoNormal" style="21pt;"><strong><span style="&quot;Microsoft Sans Serif&quot;,&quot;sans-serif&quot;;" lang="EN-US">export MOBLIN_TOOLCHAIN=~/moblin-sdk-0.8/moblin-cross-toolchain</span></strong></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">第二步，下载安装</span><span lang="EN-US">Anjuta</span><span style="宋体;">。用户直接通过</span><span lang="EN-US">yum</span><span style="宋体;">或者</span><span lang="EN-US">apt</span><span style="宋体;">下载安装即可。不过依照本人的使用经历，下载之前要注意下</span><span lang="EN-US">Anjuta</span><span style="宋体;">的版本，不能太旧，要高于</span><span lang="EN-US">2.4</span><span style="宋体;">，也不能太新，我一开始装了最新的</span><span lang="EN-US">2.28</span><span style="宋体;">，结果在安装</span><span lang="EN-US">Moblin</span><span style="宋体;">的</span><span lang="EN-US">Anjuta</span><span style="宋体;">插件时报某符号找不到，死活装不上，卸载后安装</span><span lang="EN-US">Anjuta 2.26</span><span style="宋体;">就天下太平了。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">第三步，安装</span><span lang="EN-US">Moblin</span><span style="宋体;">的</span><span lang="EN-US">Anjuta</span><span style="宋体;">插件。在</span><span lang="EN-US"><a href="http://moblin.org/projects/moblin-anjuta-plug-in">http://moblin.org/projects/moblin-anjuta-plug-in</a></span><span style="宋体;">上可以下载到预先编译好的安装包，</span><span lang="EN-US">rpm</span><span style="宋体;">和</span><span lang="EN-US">deb</span><span style="宋体;">都有，当然也有源码包，可以根据自身需要下载安装。这个插件为</span><span lang="EN-US">Anjuta IDE</span><span style="宋体;">提供了以下一些功能：</span></p>
<p class="MsoListParagraph" style="-18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>1.<span style="none;"> </span></span></span><!--[endif]--><span style="宋体;">交叉编译使用</span><span lang="EN-US">Autotool</span><span style="宋体;">的项目。对于使用</span><span lang="EN-US">Linux Project Generator(</span><span style="宋体;">另一个</span><span lang="EN-US">Moblin.org</span><span style="宋体;">上的项目</span><span lang="EN-US">)</span><span style="宋体;">生成的项目有着非常好的支持。</span></p>
<p class="MsoListParagraph" style="-18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>2.<span style="none;"> </span></span></span><!--[endif]--><span style="宋体;">可以将编译好的程序部署到远程的上网本中</span><span lang="EN-US">(</span><span style="宋体;">通过网络连接</span><span lang="EN-US">)</span><span style="宋体;">。</span></p>
<p class="MsoListParagraph" style="-18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>3.<span style="none;"> </span></span></span><!--[endif]--><span style="宋体;">可以远程运行上网本中的程序。</span></p>
<p class="MsoListParagraph" style="-18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>4.<span style="none;"> </span></span></span><!--[endif]--><span style="宋体;">可以远程调试上网本中的程序。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">插件安装完后重新启动</span><span lang="EN-US">Anjuta</span><span style="宋体;">，我们要启用</span><span lang="EN-US">Moblin</span><span style="宋体;">插件并进行设置。选择菜单栏上的</span><span lang="EN-US">”Edit”-&gt;”Preferences”</span><span style="宋体;">，打开</span><span lang="EN-US">Anjuta Preferences</span><span style="宋体;">对话框。点击右上</span><span lang="EN-US">Installed Plugins</span><span style="宋体;">标签，在插件列表中选择</span><span lang="EN-US">Moblin SDK</span><span style="宋体;">，此时在对话框左边就会出现</span><span lang="EN-US"> Moblin SDK</span><span style="宋体;">，点击</span><span lang="EN-US">Moblin SDK</span><span style="宋体;">，出现</span><span lang="EN-US">Moblin</span><span style="宋体;">插件的设置界面。在这里我们要设置两项内容：</span><span lang="EN-US">IDE</span><span style="宋体;">所使用的工具链和目标机位置。</span></p>
<p class="MsoNormal" style="21pt;"><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2009/11/anjuta_moblin_sdk_preferences_0.png"><img class="aligncenter size-medium wp-image-400002818" src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2009/11/anjuta_moblin_sdk_preferences_0-300x202.png" alt="" width="300" height="202" /></a></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">交叉编译：选择“</span><span lang="EN-US">Use an external toolchain</span><span style="宋体;">”。之前下载的</span><span lang="EN-US">Moblin SDK</span><span style="宋体;">中包含了整套工具链，所以只需将</span><span lang="EN-US">SDK root</span><span style="宋体;">设成</span><span lang="EN-US">SDK</span><span style="宋体;">安装目录下的</span><span lang="EN-US">moblin-cross-toolchain</span><span style="宋体;">目录即可。</span><span lang="EN-US">Toolchain triplet</span><span style="宋体;">设为</span><span lang="EN-US">i586-moblin-linux.</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">目标机位置：因为手边有上网本，所以选择</span><span lang="EN-US">”Use an external device”</span><span style="宋体;">，并输入上网本的</span><span lang="EN-US">ip</span><span style="宋体;">地址。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">花开两朵，各表一枝。开发机上的环境差不多搭好了，第四步就该设置上网本了。上网本上已经安装了</span><span lang="EN-US">Moblin V2</span><span style="宋体;">，为了让开发机可以远程访问和调试，我们需要安装</span><span lang="EN-US">openssh-server, rsync</span><span style="宋体;">和</span><span lang="EN-US">gdbserver</span><span style="宋体;">。通过以下命令可以完成上述软件包的安装：</span></p>
<p class="MsoNormal" style="21pt;"><strong><span style="&quot;Microsoft Sans Serif&quot;,&quot;sans-serif&quot;;" lang="EN-US">sudo yum install openssh-server rsync gdb-gdbserver</span></strong></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">安装完成后，在终端上输入</span><strong><span style="&quot;Microsoft Sans Serif&quot;,&quot;sans-serif&quot;;" lang="EN-US">xhost +</span></strong><span style="宋体;">，使其他用户可以访问</span><span style="&quot;Microsoft Sans Serif&quot;,&quot;sans-serif&quot;;" lang="EN-US">X server</span><span style="宋体;">。</span></p>
<p class="MsoNormal" style="21pt;"><span style="宋体;">至此，交叉编译与调试环境就搭好了。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/11/30/moblin-sdkanjutamoblin-v2-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moblin软件加油站登场</title>
		<link>http://software.intel.com/zh-cn/blogs/2009/09/25/moblin-3/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2009/09/25/moblin-3/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 09:19:42 +0000</pubDate>
		<dc:creator>方亮 (Intel)</dc:creator>
				<category><![CDATA[移动技术]]></category>
		<category><![CDATA[Application Installer]]></category>
		<category><![CDATA[Garage]]></category>
		<category><![CDATA[Moblin]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2009/09/25/moblin-3/</guid>
		<description><![CDATA[Moblin软件加油站是一个包含免费开源应用程序与免费闭源应用程序的在线应用程序目录。目录中提供的应用程序通过Moblin Application Installer安装到本地。Moblin Application Installer是一个本地应用，可以从Moblin Myzone面板中启动，为用户提供了Moblin软件加油站的目录，用户可以从中选择软件来安装。简而言之，就是另一个apt或yum，呵呵。 目前Moblin软件加油站和Moblin Application Installer还处于开发阶段，仅供测试。 想知道更多内容，可以访问http://garage.moblin.org/welcome-moblin-garage-catalog]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="20pt;" align="left"><span style="Arial;" lang="EN-US">Moblin</span><span style="宋体;">软件加油站是一个包含免费开源应用程序与免费闭源应用程序的在线应用程序目录。目录中提供的应用程序通过</span><span style="Arial;" lang="EN-US">Moblin Application Installer</span><span style="宋体;">安装到本地。</span><span style="Arial;" lang="EN-US">Moblin Application Installer</span><span style="宋体;">是一个本地应用，可以从</span><span style="Arial;" lang="EN-US">Moblin Myzone</span><span style="宋体;">面板中启动，为用户提供了</span><span style="Arial;" lang="EN-US">Moblin</span><span style="宋体;">软件加油站的目录，用户可以从中选择软件来安装。简而言之，就是另一个</span><span style="Arial;" lang="EN-US">apt</span><span style="宋体;">或</span><span style="Arial;" lang="EN-US">yum</span><span style="宋体;">，呵呵。</span></p>
<p class="MsoNormal" style="20pt;" align="left"><span style="宋体;">目前</span><span style="Arial;" lang="EN-US">Moblin</span><span style="宋体;">软件加油站和</span><span style="Arial;" lang="EN-US">Moblin Application Installer</span><span style="宋体;">还处于开发阶段，仅供测试。</span></p>
<p><span style="宋体;">想知道更多内容，可以访问</span><span style="Arial;" lang="EN-US"><a href="http://garage.moblin.org/welcome-moblin-garage-catalog">http://garage.moblin.org/welcome-moblin-garage-catalog</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2009/09/25/moblin-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

