Настройка для разработки 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. Также возможна сборка Android в виртуальной машине на неподдерживаемых системах, таких как Mac OS X.

Google рекомендует сборку в GNU Linux. Система сборки Android обычно запускает ART на сборочной машине для предварительной компиляции системных DEX-файлов. ART работает только в Linux, поэтому система сборки пропускает этот этап предварительной компиляции в операционных системах, отличных от Linux, что приводит к снижению производительности сборки Android.

GNU Linux

  • Android 6.0 - Android 8.0: Ubuntu 14.04 (надежный)
  • 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. Также возможна сборка Android в виртуальной машине на неподдерживаемых системах, таких как Windows.

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 версии 10.8 или ниже установите Xcode с сайта разработчиков Apple . Если вы ещё не зарегистрированы как разработчик 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. Вы можете установить версию 3.81 с помощью MacPorts, выполнив следующие действия:

  1. Отредактируйте /opt/local/etc/macports/sources.conf и добавьте file:///Users/Shared/dports над строкой rsync .

  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

JDK для Linux

Android Open Source Project (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

Поддерживаемых пакетов OpenJDK 8 для Ubuntu 14.04 нет. Пакеты OpenJDK 8 из Ubuntu 15.04 успешно используются в Ubuntu 14.04. Пакеты более поздних версий (например, для 15.10, 16.04) не работают в 14.04 при использовании следующих инструкций.

  1. Загрузите пакеты .deb для 64-битной архитектуры с сайта old-releases.ubuntu.com

    • 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. При желании проверьте контрольные суммы загруженных файлов, сверив их со строкой SHA256, указанной для каждого пакета из шага 1. Например, с помощью инструмента sha256sum :

    sha256sum {downloaded.deb file}
    
  3. Установите пакеты:

    sudo apt-get update
    
  4. Запустите dpkg для каждого из загруженных вами файлов .deb . Возможны ошибки из-за отсутствия зависимостей:

    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