找回密码
 立即注册
收起左侧

Qt Ubuntu Touch教程(1): 从这里开始

67
回复
49387
查看
[复制链接]

尚未签到

来源: Android 2014-2-24 23:33:09 显示全部楼层 |阅读模式
该文章原创于Qter开源社区(www.qter.org),作者Joey_Chan,转载请注明出处!


本系列教程主要讲述与Ubuntu Touch Qt的相关内容,如平台特性、功能限制、特定用户体验和内容发布等,其余与Qt自身非平台相关的内容不会作详细讲述,笔者默认童鞋们已经有一定的Qt功底。
另:最好有Nexus机子一台,没有的话用模拟器也行,当然也可以直接在Ubuntu桌面系统上跑。

第一篇: 从这里开始一个不寻常的用户体验

Ubuntu Touch由Canonical公司于2013年初宣布,旨在将Ubuntu系统移植到以移动设备为主的移动平台,同时尽量保持与Ubuntu桌面系统的一致性,在未来不久Ubuntu Touch还将具备自转换成桌面系统的能力。


这里作者作为Ubuntu社区的开发者,带着大家走进这个不寻常用户体验的移动操作系统。

1. 准备工作

    1.1 准备好一台装了Ubuntu系统的电脑,12.04,13.10,皆可,推荐14.04(虽然当前尚在beta阶段,但已足够稳定)
    1.2 用浏览器打开 http://developer.ubuntu.com/apps/sdk/  这里正是官方教程的入口(全英文)
    1.3 打开终端,输入: sudo add-apt-repository ppa:ubuntu-sdk-team/ppa && sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get install ubuntu-sdk
        14.04的用户则直接 sudo apt-get update && sudo apt-get install ubuntu-sdk  即可
    1.4 安装完毕后即可在系统程序菜单里面看到一个“Ubuntu SDK”的快捷方式,点击打开后其实就是一个Qt Creator(作者的笔记本分辨率小,左边的图标都被挤没了  T_T)


    *** 以下为移动设备的准备,没有移动设备的童鞋可跳过
    1.5 Nexus设备推荐用Nexus 4和Nexus 7(2013)和Nexus 10,其中Nexus 4为手机模式,后两者为平板模式
    1.6 添加源 ppa:phablet-team/tools
    1.7 安装android-tools,里面包含和安卓一样的adb连接器
    1.8 !!请注意,使用Nexus设备的童鞋会遇到和安卓一样的问题:Ubuntu sdk自带的adb(/usr/bin/adb)可能没有连接设备的权限,请把这个adb用chmod u+s特殊授权,再增加普通用户访问权限(777)
    1.9 简单刷机教程在文章下半部分,也可参照官方英文教程: https://wiki.ubuntu.com/Touch/Install

2. 开始动手

    2.1 启动Ubuntu SDK,新手直接点击中间的“Create a new project”,等同于文件-新建

    2.2 在弹出的新建对话框中,会发现左边专门多了一栏“Ubuntu”,里面的模板都是适用于Ubuntu系统的Qt程序模板,这里我先选“simple UI”
    2.3 现在看到的是模板自带的qml主文件,细心的童鞋可能会发现,模板里面并没有任何c++代码,至于为什么没有,后面会讲解

    2.4 现在逐一讲解这里的代码和一般的qml代码有什么区别
  1. import Ubuntu.Components 0.1
复制代码
这个是几乎所有Ubuntu程序都必须添加的qml头文件,导入Ubuntu专门为qml制作的插件即可使用所有Ubuntu特色的UI组件
  1. MainView {
  2.         // objectName for functional testing purposes (autopilot-qt5)
  3.         objectName: "mainView"

  4.         // Note! applicationName needs to match the "name" field of the click manifest
  5.         applicationName: "com.ubuntu.developer.qqworini.tutorial"
复制代码
MainView类型是Ubuntu程序的主窗口类型,地位相当于c语言中的main函数,没有这个类型程序将可能无法被系统正确识别
  1. width: units.gu(100)
  2.         height: units.gu(75)
复制代码
这里看到的是Ubuntu的一个特色数字,Ubuntu Touch立项之初就为了能运行在各种大大小小的设备上,所以采用了一种相对值以保证在分辨率不同的设备达到与设备匹配的大小,这个相对值会在程序运行时自动转换成与ppi成正比的像素值。
  1. Page {
  2.         title: i18n.tr("Simple")
复制代码
Page类型是一种UI容器类型,作用类似QtQuick Control的page。i18n.tr()函数用于多语言自动翻译,类似qt自带的qstr。
  1. Column {
  2.             spacing: units.gu(1)
  3.             anchors {
  4.                 margins: units.gu(2)
  5.                 fill: parent
  6.             }
复制代码
这个Column是标准的qml继承组件,包括别的qml基础组件,在Ubuntu程序里面都能100%兼容使用。开发者如果为了保证和别的平台的兼容性,也可以尽量使用qml基础组件而不影响程序的运行。
  1. HelloComponent {
  2.                 id: label
  3.                 objectName: "label"

  4.                 text: i18n.tr("Hello..")
  5.             }

  6.             Button {
  7.                 objectName: "button"
  8.                 width: parent.width

  9.                 text: i18n.tr("Tap me!")

  10.                 onClicked: {
  11.                     label.text = i18n.tr("..world!")
  12.                 }
  13.             }
复制代码
第一个HelloComponent是自定义组件,这个是qml的基础知识,不再作详细阐述。Button类型来自Ubuntu组件,用法与QtQuick Control的Button类似。

    2.5 运行前先查看设置,确认qmake被正确识别
   
    2.6 如果左下角的运行按钮是灰色的,那就先点击“projects”按钮,添加设置里面的“kit”即可
   
    2.7 直接点运行,程序出来了  
   
    2.8 可能有人会问,为什么没有C++代码也能运行。因为Ubuntu的程序默认是使用QML解析器运行的,这样可以保证程序不需要编译即可在不同硬件平台运行。

    2.9 关于Ubuntu组件具体的API,可以在这里找到 http://developer.ubuntu.com/apps/qml/get-started/

    2.10 如果想看更多的Ubuntu组件的示例,可以在自己电脑找到: /usr/lib/ubuntu-ui-toolkit/examples/

3. 在移动设备上使用Ubuntu Touch

    现在开始和设备相关的部分
    3.1 安装Ubuntu到手机上(简单点,刷机),下面以Nexus 4为例子,要备份的请先备份,机子会被完全清空
   
    3.1.1 安装刷机软件
    首先在终端输入 sudo add-apt-repository ppa:phablet-team/tools
    然后sudo apt-get update && sudo apt-get install ubuntu-device-flash  安装Ubuntu Touch专用的刷机工具
   
    3.1.2 解锁手机
    关机状态下,按住电源+音量上+音量下,启动到bootloader
    连接好usb线,电脑终端输入sudo fastboot oem unlock ,一直下一步
    手机屏幕上,点“accept”开始解锁
    重启手机
   
    3.1.3 启用安卓开发者模式
    这里我就不详细说了,网上一搜就有。用adb devices确认
    (别重启,机子连接着电脑就好)
   
    3.1.4 开始刷机
    这时终端输入 ubuntu-device-flash --channel devel --bootstrap
    等待很长一段时间,机子会自己启动到Ubuntu Touch
   
    *3.1.5 安卓与Ubuntu双启动
    这种方式刷机相当复杂,但是成功后会很方便,因为两系统间只需要重启切换,互不影响。有兴趣的童鞋们请看这里: https://wiki.ubuntu.com/Touch/DualBootInstallation
   
    3.2 手机连接SDK
    在Creator里面,点击左边的“Devices”按钮,如果没有连接好就会看到下面的界面:
   
   
    如果连接了手机的话就会看到下面的界面:
   
   
    这时就可以点击如下图所示的“Run Application on device”按钮,程序将自动在手机里面启动:
   

手机截图:
   
   
   
   
这期的Ubuntu Touch将告一段落,尽请期待下一期教程的到来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
参与人数 3人气 +6 收起 理由
cider + 2 很实用!
sangshuduo + 2
xflcx1991 + 2 很详细!

查看全部评分总评分 : 人气 +6

回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2014-2-25 07:43:23 显示全部楼层
很好的教程,支持一下!
回复 支持 反对

使用道具 举报

累计签到:157 天
连续签到:1 天
2014-2-25 09:34:31 显示全部楼层
Done!好程序,得支持,期待更新!
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2014-2-26 23:05:02 显示全部楼层
这是一个全新的世界!
回复 支持 反对

使用道具 举报

尚未签到

2014-2-26 23:16:37 显示全部楼层
yafeilinux 发表于 2014-2-26 23:05
这是一个全新的世界!

回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2014-2-26 23:43:03 显示全部楼层
又来从头学期~~~~~~~~
回复 支持 反对

使用道具 举报

尚未签到

2014-2-26 23:53:57 显示全部楼层
dannyo0o 发表于 2014-2-26 23:43
又来从头学期~~~~~~~~

慢慢来别急
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2014-2-27 21:27:44 显示全部楼层
谢谢楼主的教程!楼主辛苦了!
回复 支持 反对

使用道具 举报

尚未签到

2014-3-1 15:03:41 显示全部楼层
错过了Android,准备Ubuntu touch 要第一时间进入
回复 支持 反对

使用道具 举报

尚未签到

2014-3-1 19:55:43 显示全部楼层
必须第一时间呀  收藏了~~
回复 支持 反对

使用道具 举报

尚未签到

2014-3-3 20:45:38 显示全部楼层
正在create ubuntu touch的emulator,可是下载速度超过24小时,请问有什么办法提速吗?这样的速度实在叫人抓狂啊
回复 支持 反对

使用道具 举报

尚未签到

2014-3-3 21:38:44 显示全部楼层
lihk11 发表于 2014-3-3 20:45
正在create ubuntu touch的emulator,可是下载速度超过24小时,请问有什么办法提速吗?这样的速度实在叫人 ...

有些Ubuntu核心服务器是在美国甚至是英国,你可以试试翻墙去下载。我试过翻墙前是50KB/s,翻墙后基本上超过500KB/s
回复 支持 反对

使用道具 举报

尚未签到

2014-3-3 22:26:05 显示全部楼层
Joey_Chan 发表于 2014-3-3 21:38
有些Ubuntu核心服务器是在美国甚至是英国,你可以试试翻墙去下载。我试过翻墙前是50KB/s,翻墙后基本上超 ...

可是我本人现在在TW啊……(为什么还有30个字符的限制,凑字数~~~)
回复 支持 反对

使用道具 举报

尚未签到

2014-3-3 22:51:07 显示全部楼层
Joey_Chan 发表于 2014-3-3 21:38
有些Ubuntu核心服务器是在美国甚至是英国,你可以试试翻墙去下载。我试过翻墙前是50KB/s,翻墙后基本上超 ...

好吧~~,那我就先等一晚上啦~~谢谢你喽
回复 支持 反对

使用道具 举报

尚未签到

2014-3-3 23:21:08 显示全部楼层
lihk11 发表于 2014-3-3 22:51
好吧~~,那我就先等一晚上啦~~谢谢你喽

TW同胞~~~ 说实话ubuntu这些当然跟翻墙没关系,但是翻墙实际上是建立类似VPN或者就是VPN的专用通道,这样你那里到达Ubuntu服务器的中转就少了,自然也就快了
回复 支持 反对

使用道具 举报

尚未签到

2014-3-5 11:24:06 显示全部楼层
Joey_Chan 发表于 2014-3-3 23:21
TW同胞~~~ 说实话ubuntu这些当然跟翻墙没关系,但是翻墙实际上是建立类似VPN或者就是VPN的专用通道, ...

我又来麻烦你了,现在我的emulator可以启动,但是登入phablet后,模拟器就会down掉,或者一直呈现一个黑屏的状态,不知道怎么解决……我的问题跟http://nerdanswer.com/answer.php?q=475432 是一模一样的
回复 支持 反对

使用道具 举报

尚未签到

2014-3-5 12:25:12 显示全部楼层
lihk11 发表于 2014-3-5 11:24
我又来麻烦你了,现在我的emulator可以启动,但是登入phablet后,模拟器就会down掉,或者一直呈现一个黑 ...

现在模拟器仍然处于不稳定开发状态,出现问题很正常的,建议用14.04版本的系统,里面的东西都是最新的

说实话我还没用过模拟器,有手机
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2014-3-6 20:33:23 显示全部楼层
MX3能寫個刷機教程嗎?
回复 支持 反对

使用道具 举报

尚未签到

2014-3-7 00:33:36 显示全部楼层
jie 发表于 2014-3-6 20:33
MX3能寫個刷機教程嗎?

这个要看魅族,貌似魅族没有解锁bootloader
回复 支持 反对

使用道具 举报

累计签到:39 天
连续签到:1 天
2014-3-13 16:57:56 显示全部楼层
作者什么时候继续写啊   坐等更新啊 !!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了