Понимание базовой схемы именования репозитория исходного кода Android
Я только что загрузил полное хранилище исходного кода Android 4.0.1_r1 в соответствии с официальными инструкциями. Может ли кто-нибудь помочь мне понять базовую схему именования репозитория?
Например, в корневом каталоге хранилища, что такое каталог "frameworks"? Чем это отличается от каталога "packages"?
1 ответ
В последние несколько лет я потратил довольно много времени на поиск исходного кода для Android, поэтому позвольте мне попытаться объяснить различные папки в корневом каталоге. Это примерно (немного зависит от версии Android):
бионический
- Стандартная библиотека c, используемая и разработанная специально для Android.
загрузочный
- Содержит загрузчик (который обычно предоставляется производителем устройства) и приложение восстановления, которое выполняется, когда телефон загружается в режим восстановления.
строить
- Android имеет очень уникальную модульную систему сборки, которая сама по себе построена поверх обычных make-файлов. Например в
build/target/products
вы найдете все общие цели сборки, которые видите при запускеlunch
,
- Android имеет очень уникальную модульную систему сборки, которая сама по себе построена поверх обычных make-файлов. Например в
каратов
- Тест на совместимость. Когда производитель устройства хочет сертифицировать свое устройство (и, таким образом, получить Google Play и другие проприетарные приложения), ему необходимо пройти CTS. Источник CTS содержится в этом каталоге.
Dalvik
- Виртуальная машина Dalvik. Android использует Java как для лучшей части фреймворка, так и для всех приложений. Поскольку каждое приложение запускается как собственный процесс под своим собственным uid, на своей виртуальной машине виртуальная машина должна иметь довольно небольшой объем памяти, поэтому Android выбрал использование собственной виртуальной машины для Java под названием dalvik. Источник Dalvik находится здесь.
развитие
- Я действительно не использовал этот репозиторий, но, похоже, здесь есть вспомогательные материалы для разработки приложений для Android.
устройство
- Каждый поставщик устройств размещает здесь все, что определяет их конкретные устройства. Например, вы можете предоставить
devices/{yourname}/products/{yourdevice}.mk
точно определить, какие приложения должны быть собраны для вашего устройства (а также несколько других вещей). Это добавляет запись в меню обеда под названием{yourdevice}
что вы можете построить.
- Каждый поставщик устройств размещает здесь все, что определяет их конкретные устройства. Например, вы можете предоставить
документы
- Насколько я понимаю, это на самом деле источник
http://source.android.com
,
- Насколько я понимаю, это на самом деле источник
внешний
- Здесь находятся почти все сторонние проекты, которые использует Android и которые составляют базовую ОС Android Linux. Они поддерживаются в своих собственных репозиториях git, что позволяет легко получать новые версии из апстрима. Вы видите такие вещи, как
bzip2
,dbus
,ping
,tcpdump
и многие другие проекты здесь.
- Здесь находятся почти все сторонние проекты, которые использует Android и которые составляют базовую ОС Android Linux. Они поддерживаются в своих собственных репозиториях git, что позволяет легко получать новые версии из апстрима. Вы видите такие вещи, как
рамки
- Это источник платформы Android. Все, что вы используете при создании приложения для Android. Я думаю, что это где-то около 50% Java-кода и 50% C++ (а иногда и C), которые связаны друг с другом с помощью jni. Когда вы, например, воспроизводите звук в приложении, вы, вероятно,
AudioManager
, ИсточникAudioManager
а также все внутренние источники поддержки AndroidAudioManager
находится подframeworks/base/media
, Вы найдете большую часть Android SDK, реализованного где-то подframeworks/base/
,
- Это источник платформы Android. Все, что вы используете при создании приложения для Android. Я думаю, что это где-то около 50% Java-кода и 50% C++ (а иногда и C), которые связаны друг с другом с помощью jni. Когда вы, например, воспроизводите звук в приложении, вы, вероятно,
аппаратные средства
- Android общается с набором библиотек, которые затем управляют оборудованием (например, вибратором, лампами, датчиком приближения, GPS, аудио и т. Д.). Эти библиотеки в совокупности называются HAL (Уровень аппаратной абстракции). Некоторые реализации по умолчанию содержатся в
hardware
папки, однако производители реализуют свои собственные библиотеки и помещают их вhardware/{manufcaturename}
(или вdevice/{manufacture}
).
- Android общается с набором библиотек, которые затем управляют оборудованием (например, вибратором, лампами, датчиком приближения, GPS, аудио и т. Д.). Эти библиотеки в совокупности называются HAL (Уровень аппаратной абстракции). Некоторые реализации по умолчанию содержатся в
libcore
- Я не знаю об этом.
NDK
- Встроенный комплект разработки, который позволяет разработчикам приложений кодировать некоторые (или все) свои приложения как собственный код (обычно на c и C++). По сути, это набор инструментов для кросс-компиляции с различными архитектурами процессоров, на которых работает Android.
из
- Все артефакты сборки Android находятся здесь. Так что удаление
out
папка полностью очистит источники.out
разделен на разные папки, основными из которых являютсяhost
а такжеtarget
где вещи, скомпилированные для хост-машины (например, ADB) и для целевого устройства (большая часть системы Android) разделены. Ниже приведены дополнительные подразделения, и в целомout
Папка довольно хорошо отсортирована, так что вы должны просто немного ее изучить.
- Все артефакты сборки Android находятся здесь. Так что удаление
пакеты
- Они содержат все стандартные приложения, провайдеры, методы ввода и т. Д., Которые создаются вместе с Android. Приложение телефона, контакты, календарь, калькулятор, программная клавиатура по умолчанию и т. Д. Размещены здесь. Они не являются сторонними приложениями, они являются внутренними приложениями, многие из которых созданы на основе закрытых Android-приложений. Таким образом, большинство приложений здесь не могут быть построены на основе общедоступного Android SDK (например, в eclipse), но должны быть собраны как часть полного процесса сборки Android.
прекомпилированное
- Материал, который распространяется вместе с Android в виде двоичных файлов. Здесь находятся кросс-компиляторы для сборки Android для ARM (а теперь и x86). Они подготовлены так, что вам не нужно создавать кросс-компиляторы самостоятельно. (Это может занять очень много времени, если вам помимо Android также пришлось скомпилировать кросс-компиляторы.)
SDK
- Все инструменты, входящие в состав Android SDK, такие как ddms, эмулятор, sdkmanager и т. Д.
система
- Основные системные процессы работают на андроид устройстве. Это нативные (c или C++) программы. Медиасервис является примером такой системной службы.
Это все из моего опыта работы с источником Android, у меня нет (других) ссылок. Я надеюсь, что это поможет вам получить представление о структуре папок.