鸟人的Android揭秘(3)——Android 编译环境搭建

一、主机环境要求

        要顺利编译 Android 源代码,硬件环境和操作系统都必须满足一定的条件。官方推荐的硬件环境配置是:

  • 编译 Gingerbread(2.3.x)及后续版本必须使用64位系统
  • 需至少留出100G 的磁盘空间用于迁出(checkout)Android 源代码,如编译单个版本,需至少留出150G 的磁盘空间,如编译多个版本,则需留出至少200G 的磁盘空间。如果启用了 ccache(complier cache,编译器高速缓存工具),所需的磁盘空间就必须更大。
  • 如使用 Linux 系统,RAM/swap 加起来必须不小于16G

        由上可见,编译 Android 源代码所需的硬件环境要求还是比较高的,但笔者使用 Mac 系统,在克隆出一块100G 的空间后,迁出并编译完 Android 源代码,仍然留有10几 G 的剩余空间,可见官方推荐配置只是建议,并非强制要求。

        对于操作系统,Android 可以在 GNU/Linux 或 Mac 操作系统上编译,但编译不同的 Android 版本对操作系统的要求也不同,具体要求如下:

GNU/Linux:

  • Android 6.0 (Marshmallow) - AOSP master:Ubuntu 14.04 (Trusty)[1]
  • Android 2.3.x (Gingerbread) - Android 5.x (Lollipop):Ubuntu 12.04 (Precise)
  • Android 1.5 (Cupcake) - Android 2.2.x (Froyo):Ubuntu 10.04 (Lucid)

Mac OS (Intel/x86):

  • Android 6.0 (Marshmallow) – AOSP master:Mac OS v10.10 (Yosemite)及后续版本,Xcode 4.5.2,Command Line Tools(Xcode 中的一款工具,可以在命令行中运行C程序)
  • Android 5.x (Lollipop):Mac OS v10.8 (Mountain Lion),Xcode 4.5.2,Command Line Tools
  • Android 4.1.x-4.3.x (Jelly Bean) - Android 4.4.x (KitKat):Mac OS v10.6 (Snow Leopard) 或者 Mac OS X v10.7 (Lion),Xcode 4.2
  • Android 1.5 (Cupcake) - Android 4.0.x (Ice Cream Sandwich):Mac OS v10.5 (Leopard)或者Mac OS X v10.6 (Snow Leopard),Mac OS X v10.5 SDK

二、安装 VirtualBox

        编译 Android 源代码要求必须使用 GNU/Linux 操作系统,对于条件允许的读者来说,最方便的方式莫过于直接基于 Ubuntu/Mac系统进行操作。如果是使用 Windows 操作系统的读者,我们也有办法解决,可以先在 Windows 操作系统上安装虚拟机软件,然后再基于此虚拟机软件上安装 Ubuntu 操作系统。

        VirtualBox 是由 Oracle(甲骨文)公司提供的一款开源、免费的虚拟机软件,与其它虚拟机软件相比更轻巧、更新速度快、运行速度更快,有 Windows、OS X、Linux、Solaris等版本。读者可以从以下网址直接下载:https://www.virtualbox.org/wiki/Downloads,安装界面如下图所示[2],安装过程按照软件界面提示操作即可。

        成功安装 VirtualBox 后,运行它,点击界面左上角的“新建(N)”按钮,即可新建虚拟机。在“虚拟电脑名称和系统类型”界面中,选择类型为 Linux,版本为 Ubuntu (64-bit),如下图所示。在创建虚拟机时,内存和硬盘尽量选择大一些,此处笔者设置内存为2G,而硬盘空间设置为100G[3]


三、安装 Ubuntu

        Ubuntu(乌班图)是一个以桌面应用为主的免费开源的 Linux 操作系统,应用非常广泛,有32位和64位两种版本,读者从以下网址可以下载:https://www.ubuntu.com/download/desktop

        使用虚拟机的好处是可以直接从下载好的 ISO 映像文件安装 Ubuntu 系统。在 VirtualBox 中选择创建好的虚拟机,点击“设置(S)”按钮,在弹出的设置窗口中,切换到存储标签页,再在 IDE 控制器属性的虚拟光驱中,选择下载的 Ubuntu 映像文件[4],如下图所示。设置完成后,单击“启动(T)”按钮,即可在虚拟机中安装 Ubuntu。

        Ubuntu(乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 基于Debian发行版和GNOME桌面环境,而从11.04版起,Ubuntu 发行版放弃了 Gnome 桌面环境,改为Unity,与Debian的不同在于它每6个月会发布一个新版本。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu 具有庞大的社区力量,用户可以方便地从社区获得帮助。2013年1月3日,Ubuntu 正式发布面向智能手机的移动操作系统。                               

四、搭建 Android 编译环境

        前面我们讲解了 VirtualBox 虚拟机的安装,以及如何在虚拟机上安装 Ubuntu 操作系统的相关知识。下面我们将讲解编译 Android 平台所需的工具和具体的编译方法。

4.1 编译环境搭建

       在 Ubuntu 中编译 Android 平台,首先需要安装配置如下工具[5]

  • 安装 JDK 1.8,在 Ubuntu 上使用 OpenJDK 即可
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
  • 配置 JDK 的版本,如系统存在多个版本,则切换为 JDK1.8
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
  • 安装必需的工具包
$ 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 python-networkx
  • 配置 USB
$ wget -S -O - http://source.android.com/source/51-android.rules | sed       "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo             udevadm control --reload-rules

        通过以上步骤,我们即完成了对 Ubuntu 操作系统上 Android 编译环境的搭建,下面继续讲解 Mac 系统的环境搭建。

        由于 Mac 操作系统默认大小写不敏感,而 Android 源代码所使用的版本管理工具 git 要求工作在大小写敏感的环境里,基于此,如果读者如想在 Mac 系统上编译 Android 源代码,需做如下设置:

  • 创建一个大小写敏感、大小为100G 的磁盘映像,借助 Mac 系统提供的磁盘工具可以很容易做到
# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 100g ~/android.dmg

        后续如需修改该磁盘映像的大小,可通过以下命令完成

# hdiutil resize -size <新的磁盘大小>g ~/android.dmg.sparseimage
  • 挂载磁盘

        上述步骤创建的磁盘映像必须挂载后才能访问,编辑 ~/bash_profile脚本,在文件的最后添加如下工具函数

# 挂载android 磁盘映像
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
# 卸载 android 磁盘映像
function umountAndroid() { hdiutil detach /Volumes/android; }

        这样,每次系统重启后,只需在终端窗口执行 mountAndroid 即可挂载上述步骤创建的磁盘映像,执行 umountAndroid 即可卸载磁盘映像。如果不想每次都这么麻烦地输入这些命令,也可以在 ~/.bash_profile 脚本的最后再加上 mountAndroid,如下图所示。

  • 安装 Xcode Command Line Tools
$ xcode-select --install
  • 安装 MacPorts 工具

        从以下网址下载相应的版本安装:https://www.macports.org/install.php

        安装完成后,确保在环境变量 PATH 中,/opt/local/bin 必须出现在/usr/bin 之前(/opt/local/bin 为 MacPorts 的安装路径),添加以下脚本到 ~/.bash_profile 中

export PATH=/opt/local/bin:$PATH
  • 通过 MacPorts 安装make、git、GPG 等工具包
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
  • 回退 gmake 版本

        Mac 系统默认的 gmake 版本是3.82,但此版本中有 bug,会导致编译 Android 源代码失败,所以我们必须先将 gmake 版本回退到3.81

        编辑 /opt/local/etc/macports/sources.conf 文件,在 rsync 一行上边添加如下代码

file:///Users/Shared/dports

        接着在终端窗口中执行以下命令创建目录

$ mkdir /Users/Shared/dports

        然后按顺序执行以下命令完成 gmake 的安装

$ svn co --revision 50980  http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
$ portindex /Users/Shared/dports
$ sudo port install gmake @3.81
  • 调整文件描述符的大小限制

        Mac 操作系统上默认允许同时打开的文件描述符数限制较低,而 Android 源代码编译时会启动大量线程进行并行编译,其打开的文件描述符可能超过此限制导致编译失败,编辑 ~/.bash_profile 加入如下命令可解决此问题

# 设置允许同时打开的文件数量为1024
ulimit -S -n 1024

        至此,我们就完成了对 Mac 系统上 Android 平台编译环境的搭建,接下来我们将讲解源代码下载和编译。

 

[1] 笔者写此书时最新的 Android 版本为7.1,最新 Ubuntu 版本为16.04.1,后续如无特殊说明,均以这两个版本为例。

[2] 笔者使用的是 Mac 操作系统演示安装过程,其它操作系统上安装 VirtalBox 的过程与此类似。

[3]虚拟机创建后,内存仍可以再调整,但硬盘空间无法再设置,在宿主机允许的情况下尽量设置大一些。读者也无需担心空间浪费,虚拟机的磁盘空间是动态分配的,实际使用多少就是多少,最大不超过此处设置。

[4] 本书中使用 ubuntu-16.04.1-desktop-amd64.iso

[5] 此处仅讲解编译 Android 7.1所需的环境,读者如想编译其它版本,可自行参考http://source.android.com/source/initializing.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值