Permalink
Switch branches/tags
Nothing to show
Find file Copy path
82ebe94 Aug 11, 2017
1 contributor

Users who have contributed to this file

261 lines (231 sloc) 11 KB

OPENTHOS系统开发入门

  • 作者:陈威 萧络元
  • 参考文档:AOSP官方文档

本文旨在帮助新加入到OPENTHOS开发中来的开发者快速了解OPENTHOS开发的流程。

开发环境设置

主机要求

下载和编译 OPENTHOS 源代码之前,请先确保您的系统符合以下要求。然后,请参阅构建编译环境,查看适用于相应操作系统的安装说明。

硬件要求

您的开发工作站必须达到或超出以下硬件要求:

  • 开发OPENTHOS,需要使用 64 位环境。
  • 如果是进行校验,至少需要 100GB 可用磁盘空间;
  • 如果是进行单次编译,至少需要 150GB 可用磁盘空间;
  • 如果是进行多次编译,至少需要 200GB 或更多可用磁盘空间。
  • 如果您使用 ccache,则需要更多空间。
  • 如果您在虚拟机中运行 Linux,则至少需要 16GB 的 RAM/交换空间。

软件要求

开源的OPENTHOS历来是在 Ubuntu Long Term Support (LTS) 版本或是OPENTHOS开发者版本中进行开发和测试,但您也可以使用其他 Ubuntu 分发版本。要查看建议使用的版本,请参阅下面的列表。

您的工作站必须具有下面列出的软件。要查看所需的其他程序包以及用于安装这些程序包的命令,请参阅构建编译环境。

【操作系统】 Openthos 通常是在 GNU/Linux 操作系统中进行编译。您也可以使用虚拟机在不支持的系统(例如 Windows)中编译 Android。

  • OPENTHOS 1.x.x(基于AOSP5.1.1) - OPENTHOS multiwindow:Ubuntu 14.04 (Trusty)
  • OPENTHOS 2.x.x(基于AOSP7.x)- OPENTHOS multiwindow-nougat: Ubuntu 16.04 (Xenial)

【Java 开发套件 (JDK)】 请注意,由于没有适用于 Ubuntu 14.04 的受支持 OpenJDK 8 程序包,因此您必须手动安装 Ubuntu 15.04 程序包。要查看具体说明,请参阅适用于 Ubuntu LTS 14.04 的 JDK。

  • OPENTHOS 1.x.x(基于AOSP5.1.1) - OPENTHOS multiwindow:Ubuntu - OpenJDK 7
  • OPENTHOS 2.x.x(基于AOSP7.x)- OPENTHOS multiwindow-nougat:Ubuntu - OpenJDK 8

搭建环境设置

本部分介绍了如何设置本地工作环境来编译 OPENTHOS 源文件。您需要使用 Linux 、OPENTHOS开发者版本或是 Mac OS。目前不支持在 Windows 环境下进行编译。

要使用Mac OS来编译OPENTHOS,您可以参考AOSP 5.1.1的环境设置来搭建OPENTHOS 1.x.x的开发环境;或是参考AOSP 7.0的环境设置来搭建OPENTHOS 2.x.x的开发环境。

选择分支

针对编译环境的某些要求是由您打算编译的源代码的版本决定的。要查看您可以选择的分支的完整列表,请参阅版本号。您还可以选择下载并编译最新的源代码。如果您选择这么做,请在初始化存储库时直接忽略分支规范。

选择分支后,请按照下面的相应说明来设置编译环境。

设置 Linux 编译环境

由于所有的OPENTHOS版本均需要使用64位系统来进行编译,在继续下一步之前,表确保您所安装的系统为64位Linux系统。如有可能请尽量使用我们建议的Ubuntu LTS版本,其他的Linux版本可能适用,但我们未进行过有效地测试。

【安装JDK7】 OPENTHOS 1.x.x,即multiwindow分支需要使用OpenJDK 7。

如果Ubuntu>=14.04且<=15.10 请运行如下命令

$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk

如果Ubuntu>=16.04且<=16.10

从16.04开始,Ubuntu取消了官方对openjdk-7的支持,因此需要按以下方式引入新的软件源并安装openjdk7。

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk

如果Ubuntu>16.10,我们不建议使用任何17.04及其更新的版本来开发OPENTHOS 1.x.x。

【安装JDK8】 OPENTHOS 2.x.x,即multiwindow-nougat分支需要使用OpenJDK 8。

如果 Ubuntu >= 15.04

请运行以下命令:

$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

如果是 Ubuntu LTS 14.04

目前没有适用于 Ubuntu 14.04 的受支持 OpenJDK 8 程序包。Ubuntu 15.04 OpenJDK 8 程序包能够在 Ubuntu 14.04 中成功使用。我们发现,按照以下说明操作时,更高的程序包版本(例如适合 15.10、16.04 的版本)在 Ubuntu 14.04 中无法正常工作。

从 archive.ubuntu.com 下载适合 64 位架构的 .deb 程序包:

openjdk-8-jre-headless_8u45-b14-1_amd64.deb (SHA256:0f5aba8db39088283b51e00054813063173a4d8809f70033976f83e214ab56c0)
openjdk-8-jre_8u45-b14-1_amd64.deb (SHA256:9ef76c4562d39432b69baf6c18f199707c5c56a5b4566847df908b7d74e15849)
openjdk-8-jdk_8u45-b14-1_amd64.deb (SHA256:6e47215cf6205aa829e6a0a64985075bd29d1f428a4006a80c9db371c2fc3c4c)

(可选)对照随以上每个程序包列出的 SHA256 字符串,确认已下载文件的校验和。

例如,使用 sha256sum 工具:

$ sha256sum {downloaded.deb file}

安装程序包:

$ sudo apt-get update

为下载的每个 .deb 文件运行 dpkg。运行过程中可能会因缺少依赖项而出现错误:

$ sudo dpkg -i {downloaded.deb file}

解决缺少依赖项的问题:

$ sudo apt-get -f install

【设置默认的JDK版本】 (可选)对于以上 Ubuntu 版本,您可以通过运行以下命令来更新默认的 Java 版本:

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac

在编译过程中,如果您遇到 Java 版本错误,请按照错误的 Java 版本部分中的说明设置其路径。

【安装所需的程序包】 您将需要 64 位版本的 Ubuntu。建议您使用 Ubuntu 14.04。

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
  lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
  libgl1-mesa-dev libxml2-utils xsltproc unzip

注意:要使用 SELinux 工具进行政策分析,您还需要安装 python-networkx 程序包。

注意:如果您使用 LDAP 并且希望运行 ART 主机测试,则还需要安装 libnss-sss:i386 程序包。

【配置 USB 使用权限】

在 GNU/Linux 系统中,尤其是在 Ubuntu 系统中,默认情况下普通用户无法直接使用 USB 设备。您需要对系统进行配置以允许使用此类设备。

建议您以 root 用户的身份在 /etc/udev/rules.d/51-android.rules 下创建一个文件。

为此,请运行以下命令来下载本网站附带的 51-android.txt 文件,对其进行修改以包含您的用户名,然后将其放到正确位置:

$ wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

这些新规则会在下次插入设备时生效。因此,您可能需要先拔下设备,然后再将其插到计算机上。

目标设备要求

  • Intel X86_64 平台
  • 2GB以上的内存
  • 16GB以上的硬盘空间(仅安装OPENTHOS)或是更大的硬盘存储空间(同时安装其他操作系统)。建议使用500GB以上的硬盘。
  • 基于UEFI环境

源码下载

OPENTHOS 1.x.x (multiwindow)

外部开发者 下载 repo 工具:

$ PATH=~/bin:$PATH
$ curl https://github.com/openthos/OTO/raw/master/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

建立工作目录:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

初始化仓库, 并选择multiwindow Android-x86 版本:

$ repo init -u https://github.com/openthos/OTO.git -b multiwindow
$ repo sync

建立multiwindow开发分支:

$ repo start multiwindow --all

全职开发者 下载 repo 工具:

$ PATH=~/bin:$PATH
$ curl http://192.168.0.185/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

建立工作目录:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

初始化仓库, 并选择multiwindow版本:

$ repo init -u git://192.168.0.185/lollipop-x86/manifest.git -b multiwindow
$ repo sync

建立multiwindow开发分支:

$ repo start multiwindow --all

设置代码提交的远程仓库别名为“devorg”:

$ repo forall -c 'git remote add devorg git://192.168.0.185/lollipop-x86/$REPO_PROJECT.git $@'

OPENTHOS 2.x.x (multiwindow-nougat)

外部开发者 暂未对外部开发者开放 全职开发者 下载 repo 工具:

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://192.168.0.185/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

建立工作目录:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

初始化仓库, 并选择multiwindow-nougat版本:

$ repo init -u git://192.168.0.185/nougat-x86/manifest.git -b multiwindow-nougat
$ repo sync

建立multiwindow-nougat开发分支:

$ repo start multiwindow-nougat --all

设置代码提交的远程仓库别名为“devorg”:

$ repo forall -c 'git remote add devorg git://192.168.0.185/nougat-x86/$REPO_PROJECT.git $@'

编译

以下编译方法同时适用于OPENTHOS 1.x.x及OPENTHOS 2.x.x。

$ cd WORKING_DIRECTORY
$ source build/envsetup.sh
$ lunch android_x86_64-eng #或android_x86_64
$ make efi_img  #此为生成用于机器的.img文件

生成安装U盘

$ sudo dd if=out/target/product/x86_64/android_x86_64_oto.img of=/dev/sdx #需要根据主机上的硬盘确定,对于只有一块硬盘的主机而言通常是/dev/sdb

运行

  1. 将刚生成的U盘插入到目标计算机上,并按下目标计算机的电源以启动目标计算机
  2. 设置目标电脑为UEFI模式启动,在启动时按F10/F12(根据具体的机器而言,通常是F10或是F12,但也有可能是其他按键)进入到启动引导项选择界面。选择从U盘启动,并回车。
  3. 在新出现的图形选单上,按左右键选择OPENTHOS,回车便可以以liveusb方式启动OPENTHOS,如需要其他方式,请在按回车前按F2键。
    现在您可以尽情感受OPENTHOS带来的极致体验了。

代码提交

OPENTHOS 1.x.x (multiwindow)

外部开发者
在对某个project的代码进行更改前,请确保当前是multiwindow分支;单个project提交,在该project目录下:

$ git commit -a -m "xxx commit"
git push github multiwindow:multiwindow

全职开发者
在对某个project的代码进行更改前,请确保当前是multiwindow分支; 单个project提交,在该project目录下:

git commit -a -m "xxx commit info"
git push devorg multiwindow:refs/heads/multiwindow

OPENTHOS 2.x.x (multiwindow-nougat)

外部开发者
全职开发者
在对某个project的代码进行更改前,请确保当前是multiwindow-nougat分支; 单个project提交,在该project目录下:

git commit -a -m "xxx commit info"
git push devorg multiwindow-nougat:refs/heads/multiwindow-nougat