Загрузка и сборка AOSP
Решил поделиться своей инструкцией как собрать AOSP (Android Open Source Project). Эта инструкция будет полезна тем кто хочет посмотреть что-же внутри Android и возможно заняться системной разработкой. В любом случаи эти знания полезны для понимания самого Android, как раз для этого и решил собрать AOSP.
Проект собираю на elementary 5.1 OS Ubuntu 18.04 LTS (bionic), пытался на MacOS собрать, но так и не удалось. Для исходников и сборки нужно 200 Гб на жестком диске (лучше SSD, на обычном производительность сильно проседает). Так же много времени, я потратил чтобы скачать и собрать около 20 часов, частично виновата «слабая» конфигурация моего компьютера. У меня установлено всего 8 Гб оперативной памяти, но увеличил размер swap-а до 16 Гб.
Загружаем AOSP
Установить требуемые пакеты для загрузки и сборки :
Создаем папку и качаем repo утилиту для загрузки исходного кода
Исходники AOSP состоят из отдельных проектов с собственными git-репозиториями, repo позволяет упросить всю загрузку всех проектов и разложить по нужным папкам.
- -u — урл git-репозитория с манифестом
- -b — ветка (самая последняя на текущий момент)
- —depth — скачивать только одну ветку (если не использовать, то для каждого репозитория скачается весь индекс, что увеличит время загрузки и место на диске)
Выбрал самую последнюю версию Android 10. Не использую develop или master, так как там устаревший манифест и проект скорее не соберется.
Теперь можно запустить загрузку исходников AOSP
- -c — скачивать только текущую ветку манифеста (как указал выше — android-10.0.0_r45)
- -j — количество потоков, обычно указывается столько доступно процессоров
- —no-tags — не скачивать тэги с репозитариев
- —no-clone-bundle — не пытаться качать clone.bundle (упакованная репа, которая уменьшить время на загрузку, но не у всех сервер формирует этот bundle),
—no-clone-bundle можно попробовать убрать, что в теории ускорит скачивание, но у меня заваливается с 404 ошибкой
Скачивание может занять минуты и часы, теперь с repo закончили, если нужно почитать больше то ищите в официальной документации: https://source.android.com/setup/develop/repo
Сборка
Настраиваем среду разработчика:
x86_64 — указывается под какой девайс собирать, в данном случае Generic x86_64 подходит для эмуляторов, если будете запускать на Nexus девайсах, то ищите детали в документации https://source.android.com/setup/build/building#choose-a-target
eng — тип сборки (сокращение от engineering), с максимальными логами и дополнительными утилитами для отладки. Другие тип сборки думаю не особо интересны
Для сборки java файлов увеличиваем Heap size, если этого не сделать, то сборка всего завалится с StackOverflow ошибкой:
Так же можно добавить в .bashrc чтобы постоянно не повторять команду
Все, теперь готовы к сборке:
Можно не использовать CCACHE, что уменьшит количество занимаемого места на диске, но увеличит время повторной сборки. На моем «слабом» компьютере сборка заняла где-то 16 часов.
После окончания сборки, запускаем эмулятор:
-show-kernel — выводить уведомления в консоль
Если нажать Enter, то попадем в консоль эмулятора
Если эмулятор не запустился, нужно будет проверить что включена виртуализация
Готовим IDE для отладки
Для начала необходимо сгенериовать проект для IDE, проект генерируется для IDEA. Собираем модули для генератора:
Чтобы весь AOSP затолкать в проект, то просто запускаем генератор
Но сгенерированный IDEA проект будет очень «тяжелым». Одно открытие и индексация занимает достаточно много времени. Лучше генерировать IDEA проект для каждого отдельного проекта, например для Android фреймворка
Весь список доступных проектов можно посмотреть в
Открываем сгенерированный base.iml (находится в папке frameworks/base) в IDEA. Дальше нужно настроить Java, только нужно подключать java без библиотек, так как у AOSP-а свои реализации.
Запускаем отладку
Для начала необходимо запустить monitor
возможно потребуется дополнительно поставить jre
sudo apt install openjdk-8-jre-headless
Выбираем процесс, который будем отлаживать. В monitor-е выбираем процесс и справа от порта процесса появится /8700, это как раз порт отладчика, к нему можно подключаться через IDEA.
Все системные штуки находятся в system_process. Его мы и будем отлаживать.
monitor один самых полезных инструментов при отладке и исследования работы AOSP
В проекте добавляем новую Remote конфигурацию, только указываем 8700 порт. Именно к этому порту и будем подключаться
Запускаем Debug (Run → Debug)
Чтобы удостоверится, что все подключилось поставьте брейкпоинт в frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java файле на метод:
и запустить любое приложение на эмуляторе (например, Settings).
Источник
Android 10 aosp скриншоты
В теме нет куратора. По вопросам наполнения шапки, обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Сообщение отредактировал M6R1ARTY — 20.06.21, 17:48
Scorp125, эт не первый :blush:
Первым кастомом можно считать прошивку AOSP (благодаря Project Treble)
Сейчас буду потихоньку наполнять тему постами с прошивками
empathy, там для 9+, а у нас обычный тут..
Сообщение отредактировал bullik01 — 18.03.18, 17:42
Сообщение отредактировал MrMAP — 20.03.18, 08:04
Не подскажите рутованые ядра уже есть?)
Главное перешел с айфона на с9, вроде бы флагман, поставил Модерн комбат версус, а она идет на низкий настройках, что за бред?) нужно бы это поправить рутом
Сообщение отредактировал vlads1992 — 19.03.18, 00:57
Дело не в гарантии я б сказал а в малом количестве кастомов))) смысла пока нет. Да и вообщн если честно мне кажется надо было брать note8, почти все разрабы на нем сидят(((
Сообщение отредактировал qwertyfozl — 31.03.18, 07:22
FlashKernel for SM-G960F/FD/N
Features of this Kernel:
— Build with latest 4.9 google toolchain
— Build with ARC5 kernel source code
— Latest Linux version 4.9.88, is always up to date
— Performance and Batterylife improved
— Choose between different CPU governors: performance, powersave, userspace, ondemand, interactiv, conservative, schedutil (default)
— Includes latest ARC5 ramdisk
— I/O schedulers: CFQ (Default), No-op, Deadline
— TCP (Network) control: Bic (default), Reno, cdg, cubic, dctcp, Westwood, Highspeed, Hybla, HTCP, Vegas, Veno, Scalable, LP, Yeah, Illinois, Lia, Olia, Wvegas, balia
— Selinux is set to permissive (settings will show enforcing to fake apps)
— All samsung security related configs disabled (as knox, tima, restrict rooting)
— More to come soon
Supports touchwiz basedroms only
IF YOU FOLLOW MY STEPS BELOW, YOU WILL LOSE YOUR WARRANTY, KNOX WILL DISPLAY0x1! I’M NOT RESPONSIBLE FOR ANY DAMAGEDDEVICE!
Bugs/Problems:
— Samsung Pay, Secure folder won’t work anymore after tripping knox!
— Let me know
Instructions:
0. Have a working recovery (this includes OEM unlock enabled) and encryption removed! (to install TWRP visit this thread)
1. Download kernel and copy it to your sd card
2. Boot into twrp recovery mode (press bixby + volume up + power)
3. Flash kernel
4. Flash any other file which affects the ramdisk (Magisk or SuperSU)
5. Reboot
Kernel Special Features:
Version Information
Status: Stable
Current Stable Version: 1.0.0
Stable Release Date: 2018-03-20
Created 2018-03-20
Last Updated 2018-03-23
Сообщение отредактировал MrMAP — 03.04.18, 11:33
- Версия Android: Android 8.0
- Прошивка одексирована
- Вшит SuperSU
- Вырезан кнокс
- Статус устройства: официальный
- Удалены Защищеная папка и Samsung Pass
- Вшит RMM ByPass
- Выбор региона CSC в установщике
- Выбор шрифта в установшике
- Функция переназначения кнопки Bixby
Всегда свежая версия здесь | Тема на XDA
Сообщение отредактировал snekt — 03.04.18, 13:46
Основные возможности ядра:
—Разгон процессора
—Увеличение производительности
—Улучшение работы большого кластера процессора
—Настройка цветопередачи экрана (RGB)
—Функция Sweep2wake
—Функция вкючения по двойному касанию на экран
—Функция Sweep2sleep
—Планировщики: CFQ, noop, deadline, BFQ, FIOPS, SIO, maple и zen
—Функция для отключения fsync
—Остановка вейклоков
—поддержка WireGuard
—состояние Selinux: Enforsing
—и многое другое в будущих обновлениях
Программа для тонкой настройки ядра: в Google Play | на нашем форуме 4
Компания Samsung по умолчанию установила значения 2314 МГц для одного ядра, 2314 МГц для двух других и 1794 для последних трех. При осуществлении разгона в арома эти значения стираются.
Разгон позволяет увеличить большое ядро до 2886 МГц и маленькое ядро до 2002 МГц и плюс дает прирост в мультиядерной производительности. Не используйте другие приложения, кроме приложения автора, для контроля над ядром.
Настройку цветопередачи можно сделать в приложении EX Kernel Manager (ссылка выше).
Сообщение отредактировал snekt — 03.04.18, 13:46
Также Александр сделал свою прошивку под Galaxy S9.
Добавлено 03.04.2018, 13:24:
vlads1992, ставьте элементал и включите разгон. Должно помочь
vadimittkin,
Сам пока не ставил, так как жду трубку с ОАЭ 7 дней появление пункта oem разблокировки, но
в чейнжлоге кастома от alexndr
.
— Call Recording (added «Record» button)
.
Сообщение отредактировал Castor Troy — 11.04.18, 20:06
vadimittkin, можно самому настроить other.xml и добавить кнопку записи разгавора.
Источник
Что такое AOSP и почему его часто путают с Android? Разбираемся
Одна из самых сильных и одновременно слабых сторон Android — это широкий выбор вариантов программного обеспечения. Samsung, Huawei, Sony и даже Google предлагают свой собственный взгляд на возможности Android, представляя свои собственные уникальные функции и идеи по улучшению базового программного обеспечения. Все это стало возможным благодаря общей базовой операционной системе, обеспечивающей основные функции. Все известные и любимые вами варианты ОС Android основаны на AOSP — Android Open Source Project.
AOSP — это проект операционной системы с открытым исходным кодом, поддерживаемый Google. Поскольку исходный код открыт, любой желающий может свободно просматривать и вносить код и исправления в репозиторий проекта, хотя Google курирует его общее направление и основную часть разработки. AOSP регулярно обновляется и включает в себя последние исправления ошибок и патчи безопасности для Android. Google также ежегодно представляет основные новые функции ОС на конференции I/O. Android 11 является последней версией, а Android 12 выйдет позже в 2021 году.
Проект с открытым исходным кодом Android не только позволяет сторонним разработчикам вносить изменения, но и может быть использован бесплатно по специальной лицензии. Такие производители, как Amazon и Samsung, могут свободно редактировать проект для своих собственных целей и разработывать свои собственные продукты, такие как Fire OS и Tizen. Это оказалось важным фактором в продолжении разработки Huawei EMUI и Harmony OS после торговых санкций США и потери доступа к приложениям Google.
Также важно отметить, что большинство производителей смартфонов получают версии AOSP от поставщиков SoC (систем на кристалле), например Qualcomm. Это связано с тем, что Android должен быть адаптирован к низкоуровневому оборудованию с помощью драйверов, о которых мы поговорим позже. Исторически это было причиной задержки обновлений Android. В конечном итоге Google доволен таким положением, поскольку оно побуждает разработчиков использовать Android для широкого спектра гаджетов, подключенных к Интернету. В свою очередь, множество компаний вносят исправления и улучшения в ОС. Это беспроигрышный вариант.
AOSP — сложная многоуровневая структура
Я уверен, что в представлении многих операционные системы — будто сложные живые организмы. AOSP представляет из себя многоуровневую систему и предоставляет множество инструментов как для разработчиков оборудования, так и для разработчиков программного обеспечения.
На «нижних» уровнях производители устройств модифицируют ОС для работы со своим оборудованием. Ядро Linux, например, является основой, которая управляет ресурсами процессора, системной памяти, сети и так далее, чтобы всё работало правильно.
Слои более «высокого» уровня используются разработчиками приложений. Native Libraries (встроенные библиотеки) позволяют разработчикам создавать контент с помощью широко поддерживаемых низкоуровневых библиотек, таких как OpenGL ES, Webkit и других. Кроме того, Android Frameworks предоставляет разработчикам приложений подключаемые модули для общих функций ОС, которые мы все используем каждый день. Они варьируются от данных о местоположении и push-уведомлений до телефонных звонков. Также есть Android Runtime — это посредник, преобразующий код приложения в такой код, который поймёт процессор и прочее оборудование.
В совокупности проект Android Open Source Project представляет собой законченное решение для разработчиков оборудования и программного обеспечения Android.
Однако AOSP — это не просто постоянно растущая кодовая база. Google также предоставляет инструменты для проектирования и разработки в рамках проектов, начиная от документации по совместимости и заканчивая передовыми методами обеспечения безопасности и принципами разработки приложений. Google также предлагает наборы тестов, чтобы помочь разработчикам убедиться, что их устройства правильно реализуют API и функции.
AOSP против Android: это не одно и то же
Android Open Source Project часто путают со стандартным Android, хотя на самом деле AOSP является лишь его основой.
AOSP содержит все, что нужно разработчикам для создания Android, но не включает все необходимое для готового смартфона. Во-первых, Google и AOSP не могут предоставить драйверы ядра для каждой конфигурации оборудования. Под драйвером устройства мы подразумеваем прошивку, необходимую для аппаратного обеспечения телефона, такого как процессор или камеры. Производители смартфонов и систем на кристалле, такие как Qualcomm и Samsung, должны включать эти драйверы в свою сборку Android. Отчасти поэтому обновлениям требуется время.
AOSP также не поставляется с набором приложений Google, таких как браузер Chrome, YouTube и даже Google Play Store. Он также не включает ряд скрытых технологий и API-интерфейсов Google, которые обеспечивают такие функции, как мобильные платежи, голосовые команды и облачное хранилище. Они лицензируются отдельно как Google Mobile Services.
Когда Huawei потеряла доступ к американским технологиям, она больше не могла лицензировать GMS, но могла продолжать использовать AOSP. Таким образом, Huawei начала заменять функции GMS своей собственной Huawei Mobile Services. Однако это означает, что приложения, которые полагаются на GMS, должны быть перестроены с использованием HMS для правильной работы.
Любой производитель, желающий установить GMS поверх Android, должен получить лицензию GMS и Соглашение о распространении мобильных приложений (MADA) для своего устройства, а затем пройти несколько тестов: на совместимость с Android (CTS) для проверки программных и аппаратных компонентов и API, затем наборы тестов Google Mobile Services (GTS) и Vendor (VTS) для тестирования мультимедийных возможностей, ядра ОС и возможностей HAL. Еще одним условием получения лицензии GMS является предварительная загрузка ряда приложений Google на новое устройство.
Различие между AOSP и GMS стало играть большую роль после торгового спора между США и Китаем.
Будущее AOSP: грядёт новая операционная система
Android Open Source Project продолжает оставаться основой успеха Android благодаря бесчисленным часам участия разработчиков со всего мира. Хотя устройства на Android в ближайшее время никуда не денутся, Google уже ищет операционную систему будущего.
Google Fuchsia впервые появилась на GitHub в августе 2016 года, но с тех пор мы мало о ней слышали. Мы все еще мало знаем о Fuchsia и о том, появится ли она для потребителей и когда это произойдет. Похоже, Fuchsia разработана для еще более широкого круга устройств, чем Android. Она также имеет собственное ядро Google, отличное от Linux, под названием Zircon, и поддерживает язык сценариев Google Dart. На данный момент Fuchsia — это бесплатное программное обеспечение с открытым исходным кодом, как и Android. Будем надеяться, что планы Google на будущее останутся неизменными.
Источник