针对 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 和命令行工具
  • Android 5.x:Mac OS X v10.8 (Mountain Lion),具有 Xcode 4.5.2 和命令行工具

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 开发者工具)
  • 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 无法构建的 bug。您可以按照以下步骤使用 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) 附带预构建版本的 OpenJDK(位于 prebuilts/jdk/ 中),因此无需另行安装。

早期版本的 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