AOSP 开发设置 (2.3 - 8.0)

本页面介绍如何设置 Android 8.0 或更低版本的开发环境。要了解如何构建 Android 9.0 及更高版本,请参阅AOSP 开发设置

AOSP 开发设置 (5.0 - 8.0)

对于 Android 5.0 到 8.0,请考虑使用随附的 Dockerfile 以简化所有必需软件包的安装。

操作系统

Android 通常使用 GNU Linux 构建。也可以在不受支持的系统(例如 Mac OS X)上的虚拟机中构建 Android。

Google 建议在 GNU Linux 上进行构建。Android 构建系统通常在构建计算机上运行 ART,以预编译系统 DEX 文件。ART 只能在 Linux 上运行,因此构建系统会在非 Linux 操作系统上跳过此预编译步骤,从而导致 Android 构建性能降低。

GNU Linux

  • Android 6.0 - Android 8.0:Ubuntu 14.04 (Trusty)
  • Android 5.x:Ubuntu 12.0

Mac OS X (Intel/x86)

  • Android 6.0 - AOSP 8.0:Mac OS X v10.10 (Yosemite) 或更高版本,搭载 Xcode 4.5.2 和 Command Line Tools
  • Android 5.x:Mac OS X v10.8 (Mountain Lion),搭载 Xcode 4.5.2 和 Command Line Tools

JDK

AOSP 开发设置 (2.3 - 4.4)

本部分提供有关如何设置 Android 2.3 到 Android 4.4 的一些指导。

操作系统

Android 通常使用 GNU Linux 构建。也可以在不受支持的系统(例如 Windows)上的虚拟机中构建 Android。

Google 建议在 GNU Linux 上进行构建。Android 构建系统通常在构建计算机上运行 ART,以预编译系统 DEX 文件。ART 只能在 Linux 上运行,因此构建系统会在非 Linux 操作系统上跳过此预编译步骤,从而导致 Android 构建性能降低。

GNU Linux

  • Android 2.3.x - Android 4.4:Ubuntu 12.04 (Precise)

Mac OS X (Intel/x86)

  • Android 4.1.x - Android 4.4.x:Mac OS X v10.6 (Snow Leopard) 或 Mac OS X v10.7 (Lion) 以及 Xcode 4.2 (Apple Developer Tools)
  • Android 2.3 - Android 4.0.x:Mac OS X v10.5 (Leopard) 或 Mac OS X v10.6 (Snow Leopard) 以及 Mac OS X v10.5 SDK

GNU make

对于 Android 4.1.x 到 4.4,请使用 GNU make (gmake) 3.82。对于 Android 2.3 到 4.0.x,请从 gmake 3.82 恢复以避免构建错误。

Xcode 和其他软件包

对于 Mac OS X v10.8 或更低版本,请从 Apple 开发者网站安装 Xcode。如果您尚未注册成为 Apple 开发者,则必须创建 Apple ID 才能下载。

如果使用 Mac OS X v10.4,则还需要安装 Bison

POSIXLY_CORRECT=1 sudo port install bison

对于 MacPorts,请发出

POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

对于 Homebrew,请发出

brew install gmake libsdl git gnupg2

从 gmake 3.82 恢复

在 Android 4.0.x 及更低版本中,gmake 3.82 存在一个错误,会阻止 Android 构建。您可以使用 MacPorts 通过以下步骤安装 3.81 版本

  1. 编辑 /opt/local/etc/macports/sources.conf 并在 rsync 行上方添加 file:///Users/Shared/dports

  2. 创建 dports 目录

    mkdir /Users/Shared/dports
    
  3. 在新 dports 目录中,运行

    svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
    
  4. 为新的本地代码库创建端口索引

    portindex /Users/Shared/dports
    
  5. 安装较低版本的 gmake

    sudo port install gmake @3.81
    

JDK

Linux 版 JDK

Android 开源项目 (AOSP) 附带了 prebuilts/jdk/ 中的 OpenJDK 预构建版本,因此无需额外安装。

早期版本的 Android 需要单独安装 JDK。在 Ubuntu 上,请使用 OpenJDK

对于 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 的软件包)无法通过以下说明在 14.04 上运行。

  1. old-releases.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
  2. (可选)根据步骤 1 中每个软件包列出的 SHA256 字符串确认下载文件的校验和。例如,使用 sha256sum 工具

    sha256sum {downloaded.deb file}
    
  3. 安装软件包

    sudo apt-get update
    
  4. 对您下载的每个 .deb 文件运行 dpkg。由于缺少依赖项,它可能会产生错误

    sudo dpkg -i {downloaded.deb file}
    
  5. 要修复缺少依赖项的问题

    sudo apt-get -f install
    

(可选)更新默认 Java 版本

(可选)对于前面提到的 Ubuntu 版本,通过运行以下命令更新默认 Java 版本

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

安装 Ubuntu 14.04 所需的软件包

运行以下命令以安装 Ubuntu 14.04 所需的软件包

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

安装 Ubuntu 12.04 所需的软件包

运行以下命令以安装 Ubuntu 12.04 所需的软件包

$ sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so