Tuesday, January 18, 2011

Загрузка исходников Android под Windows или как я познакомился Git

Для контроля версий исходного кода Android используется Git. В общих чертах Git - это распределённая система контроля версий, где каждая локальная копия является обособленным репозиторием. Такая архитектура позволяет контролировать локальные изменения, даже если нет связи с удалённым центральным репозиторием.

Сразу оговорюсь что это моё первое знакомство с Git. До этого я работал только с TFS, CVS и преимущественно с SVN.

Что мне больше всего нравится в Android, это то что его код открыт и доступен каждому в сети. Исходный код, рекомендации по работе с ним а также множество связанной информации находится на сайте http://source.android.com. Для ознакомления непосредственно с кодом существует Web-интерфейс, который называется GitWeb. Чтобы его увидеть нужно перейти по ссылке http://android.git.kernel.org. При этом на страничке появится длинный список из репозиториев. Для каждого подпроекта создан отельный репозиторий, поэтому их так много. Такая организация обусловлена тем, что Git умеет работать только со всем репозиторием целиком, но никак не с отдельным его подкаталогами, как это делает SVN. И если бы исходный код Android, а он занимает порядка 2 Gb, хранился в одном репозитории, то даже если нужен только код одного небольшого приложения потребовалось скачать полностью все 2 Gb исходников.

Итак, перейдя по ссылкам в разные репозитории можно увидеть историю изменений, файловую структуру, а также посмотреть содержимое каждого файла. Этот интерфейс вполне подходит если нужно что-то глянуть, но вот если доступа к сети нет или хочется поэксперементировать с исходниками, то просто необходимо иметь их копию у себя на машине.

На моём рабочем ноутбуке стоит Windows, поэтому чтобы скачать исходники мне понадобилось установить msysgit (Git клиент для Windows) и затем по-порядку:


  1.  Запустить Git Bash из меню Пуск или меню проводника
  2. mkdir c:/android - создать папку для загружаемого проекта
  3. cd c:/android - перейти в эту папку
  4. git clone http://android.googlesource.com/platform/packages/apps/DeskClock - клонирование репозитория с приложением DeskClock

Теперь исходный код приложения DeskClock находится в папке c:/android/DeskClock и я могу работать с ним локально.

Как альтернатива работе с msysgit клентом через командную строку есть возможность использовать GUI и команды контекстного меню из проводника, но мне они показались скудноватыми и не очень интуитивно-понятными. Поэтому я усатновил альтернативную оболочку TortoiseGit, которая очень похож на старый добрый TortoiseSVN и жизнь по-тихоньку начала налаживаться :) Чуть не забыл TortoiseGit обязательно необходимо наличие msysgit, иначе он будет выдавать ошибку что тот не найден.

И напоследок, поскольку репозиториев много, порядка 260, то чтобы скачать весь исходный код Android не очень удобно будет выкачивать их по-одному. Чтобы упростить задачу можно воспользоваться скриптом repo о котором упоминается здесь, но поскольку он написан на Python, то потребуется ещё устанавливать MinGW или что-то в этом духе. Как альтернатива есть обычный batch скрипт, который можно позаимствовать отсюда, однако со временем он может устареть, поскольку содержит захардкоженые адреса репозиториев.

EDIT 16/04/2012: Со времени написания статьи онлайн браузер исходников http://source.android.com перестал поддерживаться проектом Android. Есть по крайней мере три альтернативы быстро посмотреть код:
  1. GrepCode - очень удобный просмотровик кода. Простое переключение по веткам и тегам. Отображение Outline классов, как в Eclipse. Хорошо гуглится. Достаточно вбить GrepCode + <имя класса> в гугл.
  2. Сode Aurora - старый gitweb интерфейс, который хостится Code Aurora mobile open source community
  3. Также можно воспользоваться старым добрым GitHub, где хранится зеркало основных репозиториев

Для скачивания исходников целиком рекомендуется использовать утилиту repo. Как это сделать подробно описано здесь.

6 comments:

  1. Спасибо=) Скачал исходники MINIX, теперь не знаю как компилить=(

    ReplyDelete
  2. Я поставил себе андроид на нетбук, но загружается только винда, поможет ли мне эта прога? Если нет, то ты возможно знаешь как загрузить андроид или сделать возможным выбор при загрузке? Заранее спасибо

    ReplyDelete
  3. Нет этот скрипт тебе не поможет, он служит только для скачивания исходного кода андроида.

    Тебе нужно установить Grub или другой загрузкчик и настроить загрузочные разделы. Вот неплохая статья, тут описано как это можно сделать с помощью Grub http://www.android-x86.org/documents/installhowto

    Успехов

    ReplyDelete
  4. Спасибо.
    А как скачать DeskClock.git для Android 2.3.3 ?

    ReplyDelete
  5. git clone http://android.googlesource.com/platform/packages/apps/DeskClock

    git checkout android-2.3.3_r1

    ReplyDelete
  6. Добавка.
    Версию DeskClock для android-2.3.3_r1 можно получить:

    git clone http://android.googlesource.com/platform/packages/apps/DeskClock
    cd DeskClock
    git archive -o android-2.3.3_r1.zip --format zip -v android-2.3.3_r1

    список версий:
    git tag

    ReplyDelete