首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu Touch环境搭建

Ubuntu Touch环境搭建

作者头像
sickworm
发布2019-02-27 17:13:41
1.4K0
发布2019-02-27 17:13:41
举报
文章被收录于专栏:sickwormsickworm

最近搞了一下Nexus 5的MultiRom Manger,体验了一把Ubuntu Touch和Android L,总体感觉还不错,不过Android L的NFC驱动还有问题,Ubuntu Touch优化还不足,画面有点卡,而且无法关背光。于是萌生了参与Ubuntu Touch驱动开发的念头,也算是把工作当成一种兴趣吧。

Ubuntu Touch for Nexus 5是非官方的,官方的只有Nexus 4,7,10。我们从MultiRom Manager可以直接下载到for Nexus 5的最新版本。

鉴于中文博客中并没有相关教程,只能参照 Ubuntu Touch 环境搭建的官方文档:

https://wiki.ubuntu.com/Touch/Building

以下记录我搭建Ubuntu Touch的过程(跟着上面的wiki走)。

Building Ubuntu Touch Android pieces from source Whether you want to build Ubuntu Touch for the currently supported Nexus devices or want to port it to a new target, you need to set up your working environment to build Android from source. This setup is more or less the same whether you are building AOSP or a project based on it such as CyanogenMod, SEAndroid or Ubuntu Touch. If you are new to building Android sources you may want to check out this document and others in the Getting Started section on the Google documentation site, as it covers the basics and terminology of AOSP building. While Ubuntu Touch uses some helper scripts as detailed below, if will nonetheless be helpful to understand what is going on under the hood especially if you want to work on this part of the project. http://source.android.com/source/initializing.html For Ubuntu Touch, you can find all the needed Android git repositories at https://code-review.phablet.ubuntu.com/#/admin/projects/. This is basically a mirror of AOSP 4.4.2_r1, but containing only the needed low level services used by Android (e.g. no Dalvik at all). For any Android related project on our git server, you’ll find a branch named phablet-4.4.2_r1. This branch contains a static known git HEAD and the required changes needed for Ubuntu, including our custom Android manifest.

从源码编译Ubuntu Touch的Android部分

无论你想编译现在已经支持的Nexus设备,还是想为一个新设备移植Ubuntu Touch,你都需要的搭建编译环境来编译Android源码。该教程大致和你编译AOSP(Android Open Source Project)或者基于AOSP的项目是一样的,如CyanogenMod,SeAndroid或者Ubuntu Touch。

如果你是第一次编译Android源码,你可能需要下面这个文档,和Google文档网站Getting Started章节上的其他相关文档,文档讲解了AOSP编译的基础和一些术语。在下面的环节中Ubuntu Touch会使用一些辅助脚本。如果你打算在项目上做相关开发,通过浏览这些文档你会更明白接下来的每一步是在做什么。

http://source.android.com/source/initializing.html

你可以在https://code-review.phablet.ubuntu.com/#/admin/projects/找到所有搭建Ubuntu Touch需要的Android git repositories(repo是一个多git项目管理工具,这个东西在天朝不稳定的网络中显得非常难用)。这是一个基于AOSP 4.4.2_r1的镜像,但只包含了低层Android运行所需要的服务(例如没有Dalvik)。

在我们的git服务器上任意一个Android相关的项目,你都会找到一个叫phablet-4.4.2_r1的分支,这个分支包含了一个git HEAD和包括custom Android manifest(Ubuntu Touch的repo的Manifest,包含了所有Ubuntu Touch的基础git项目)等对于Ubuntu需要修改的代码。(这段不太明白想说什么)

该段只是介绍,没有需要执行的部分。

Set up your development environment At this moment we’re using the Android code base provided by Android AOSP. Everything we take from Android is just C/C++, so you’ll notice that your Android build environment will be way smaller than when comparing to the traditional Android builds. For development you can run any 64-bit Desktop version of Ubuntu between 12.04 LTS and 13.04. It’s not strictly necessary, but it’s helpful to install ccache. (http://source.android.com/source/initializing.html#ccache in the general Android Setup guide should help with this.) Additional packages which are used to build the host tools:

  • <span id="line-1" class="anchor">$ sudo apt-get install git gnupg flex bison gperf build-essential <span id="line-2" class="anchor"> zip bzr curl libc6-dev libncurses5-dev:i386 x11proto-core-dev <span id="line-3" class="anchor"> libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 <span id="line-4" class="anchor"> libgl1-mesa-dev g++-multilib mingw32 tofrodos <span id="line-5" class="anchor"> python-markdown libxml2-utils xsltproc zlib1g-dev:i386 schedtool</span></span></span></span></span> 1 <span id="line-1" class="anchor">$ sudo apt-get install git gnupg flex bison gperf build-essential <span id="line-2" class="anchor"> zip bzr curl libc6-dev libncurses5-dev:i386 x11proto-core-dev <span id="line-3" class="anchor"> libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 <span id="line-4" class="anchor"> libgl1-mesa-dev g++-multilib mingw32 tofrodos <span id="line-5" class="anchor"> python-markdown libxml2-utils xsltproc zlib1g-dev:i386 schedtool</span></span></span></span></span>

On Utopic (and maybe other) the 4.8 version of g++ is needed:

  • <span id="line-1-1" class="anchor">$ sudo apt-get install g++-4.8-multilib</span> 1 <span id="line-1-1" class="anchor">$ sudo apt-get install g++-4.8-multilib</span>

Before 14.04 Trusty you’ll also need to set up the tools PPA. Then you need to install phablet-tools:

  • <span id="line-1-2" class="anchor">$ sudo apt-get install phablet-tools</span> 1 <span id="line-1-2" class="anchor">$ sudo apt-get install phablet-tools</span>

This will also install the repo tool, used to sync the Android repositories. Learn more about the repo tool. If you already have a repo tool in your $PATH from previous android development, be sure to remove it or make sure it’s after the system repo command in the path. To check that the right repo command is used, you can issue $ which repo. This should return /usr/bin/repo. You can check out the source code using the repo and git tools already familiar to Android ROM developers, as described here https://wiki.ubuntu.com/Touch/AndroidDevel Alternately, all the Android code can be downloaded using the phablet-dev-bootstrap tool provided by the phablet-tools package installed in the previous step. This tool is a Python wrapper around repo and used to also check out bzr repositories before all code was managed by repo and git. For the purposes of getting the source code for development it is no longer needed. To get the code setup run:

  • <span id="line-1-3" class="anchor">phablet-dev-bootstrap [target_directory]</span> 1 <span id="line-1-3" class="anchor">phablet-dev-bootstrap [target_directory]</span>

If for some reason the sync ends midway, you can continue the sync with the -c switch, so the command would be:

  • <span id="line-1-4" class="anchor">phablet-dev-bootstrap -c [target_directory]</span> 1 <span id="line-1-4" class="anchor">phablet-dev-bootstrap -c [target_directory]</span>

Alternatively, if you are just building an image for an already supported device, you can specify the -v switch:

  • <span id="line-1-5" class="anchor">phablet-dev-bootstrap -v [device codenames] [target_directory]</span> 1 <span id="line-1-5" class="anchor">phablet-dev-bootstrap -v [device codenames] [target_directory]</span>

The phablet-dev-bootstrap command will automatically use the repo tool with the Ubuntu Touch Preview custom manifest to download all the git repositories and needed data. Be aware that this step takes a long time and requires at least 15GB (plus 2-3GB for the binary output).

搭建你的编译环境

我们将使用Android基础组件(基于Android AOSP)来编译。

我们只会用到Android中的C/C++代码,所以你会发现你的编译环境会比传统的Android编译环境要小。

你可以使用Ubuntu 12.04LTS到13.04的64位桌面版来开发Ubuntu Touch。(博主使用Mint 14.04,基于Ubuntu 14.04)

我们可以安装ccache(ccache会加快Android编译速度),但不是必需的。(http://source.android.com/source/initializing.html#ccache Android配置向导会指导你如何安装)

我们还需要这些安装包来编译主机上的编译工具:

$ <span style="color: #0000ff;">sudo</span> apt-get <span style="color: #0000ff;">install</span> git gnupg flex bison gperf build-<span style="color: #000000;">essential </span><span style="color: #0000ff;">zip</span> bzr curl libc6-dev libncurses5-dev:i386 x11proto-core-<span style="color: #000000;">dev libx11</span>-dev:i386 libreadline6-dev:i386 libgl1-mesa-<span style="color: #000000;">glx:i386 libgl1</span>-mesa-dev g++-<span style="color: #000000;">multilib mingw32 tofrodos python</span>-markdown libxml2-utils xsltproc zlib1g-dev:i386 schedtool

1

$ <span style="color: #0000ff;">sudo</span> apt-get <span style="color: #0000ff;">install</span> git gnupg flex bison gperf build-<span style="color: #000000;">essential  </span><span style="color: #0000ff;">zip</span> bzr curl libc6-dev libncurses5-dev:i386 x11proto-core-<span style="color: #000000;">dev  libx11</span>-dev:i386 libreadline6-dev:i386 libgl1-mesa-<span style="color: #000000;">glx:i386  libgl1</span>-mesa-dev g++-<span style="color: #000000;">multilib mingw32 tofrodos  python</span>-markdown libxml2-utils xsltproc zlib1g-dev:i386 schedtool

在Utopic(Ubuntu 14.10)(或者其他)中,还需要安装g—4.8

$ <span style="color: #0000ff;">sudo</span> apt-get <span style="color: #0000ff;">install</span> g++-<span style="color: #800080;">4.8</span>-multilib

1

$ <span style="color: #0000ff;">sudo</span> apt-get <span style="color: #0000ff;">install</span> g++-<span style="color: #800080;">4.8</span>-multilib

在Ubuntu 14.04稳定前你还需要安装PPA工具。(只需要把“Add PPAs (pre Trusty only)”那一步执行就ok了。)

然后安装phablet-tools:

$ <span style="color: #0000ff;">sudo</span> apt-get <span style="color: #0000ff;">install</span> phablet-tools

1

$ <span style="color: #0000ff;">sudo</span> apt-get <span style="color: #0000ff;">install</span> phablet-tools

这会安装repo工具,repo用于同步Android的repositories。 点击了解repo工具。如果你已经有了repo工具且已经在之前的Android开发中把执行路径加入到$PATH中了,请把repo删除,或保证在$PATH中repo的路径在系统的repo command的路径(如/bin/repo)之后。你可以使用$ which repo验证repo路径是否正确。如果正确,会返回/usr/bin/repo。

(这段还没弄清楚什么意思,因为我还没编译过,应该保证是/usr/bin/repo就可以了。到时候回来补充)

然后使用repo和git(只需要安装git,不需要实际执行,repo会调用git工具),从以下网址获取Android源码。这一步对于Android Rom开发者应该很熟悉。

https://wiki.ubuntu.com/Touch/AndroidDevel

(此链接会另写一篇文章,下载源码的工作都在这个链接中)

使用之前步骤已经安装了的phablet-dev-bootstrap,就可以一个个项目地下载所有的Android代码(大概可有640多个)。这个工具使用Python将repo封装了起来。在所有的代码被repo和git管理之前,这个工具也可以用于下载bzr repositories(和repo相似的一个管理工具)的工程。不过只用于获取开发用的源码的话,已经不需要这个功能了。

接下来让代码跑起来:

phablet-dev-bootstrap [target_directory]

1

phablet-dev-bootstrap [target_directory]

如果发生某些错误导致sync中途停止了,你可以使用-c参数继续同步:

phablet-dev-bootstrap -c [target_directory]

1

phablet-dev-bootstrap -c [target_directory]

如果你只是编译一个已经被支持的设备的烧录文件,你可以使用-v参数:

phablet-dev-bootstrap -v [device codenames] [target_directory]

1

phablet-dev-bootstrap -v [device codenames] [target_directory]

phablet-dev-bootstrap命令会使用repo工具自动下载manifest(项目列表)然后下载所有的git项目和需要的数据。注意这个步骤要很长的时间,而且需要至少15GB(加上2-3GB的二进制文件输出)的空间。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年2月1日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从源码编译Ubuntu Touch的Android部分
    • 搭建你的编译环境
    相关产品与服务
    项目管理
    CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档