Android source code для orange pi

Содержание
  1. Android source code для orange pi
  2. Contents
  3. Initializing a Build Environment
  4. Install JDK on PC
  5. Install Essential Packages
  6. Attention
  7. Download Android SDK
  8. Build lichee packages
  9. Build Android
  10. Burn the Android image
  11. Useful files for customize your Android system
  12. Русские Блоги
  13. Компиляция исходного кода Android для Orange Pi PC
  14. Компиляция исходного кода Android для Orange Pi PC
  15. Создайте среду компиляции
  16. Установить JDK
  17. Установите make-3.81
  18. Установите необходимые пакеты(Ubuntu 16.04)
  19. Используйте сетевой adb для отладки
  20. Скомпилировать код lichee (ядро)
  21. Команда компиляции исходного кода Android
  22. Импортировать исходный код Android в Android Studio
  23. Создание файлов конфигурации (* .ipr), необходимых для импорта AS
  24. Решить проблему прыжков ошибок в исходном коде
  25. Исходный код DEBUG
  26. Интеллектуальная рекомендация
  27. Многослойная презентацияViewController Jap
  28. Распечатать список с конца до головы
  29. Типы данных и переменные
  30. Python Daily Practice (4) -идиомы заполняют музыку
  31. Android 10 с открытым кодом на Orange Pi: возможна ли стабильная работа
  32. Зачем нам Orange Pi
  33. С чего начинали
  34. 1. Выбрали операционную систему.
  35. 2. Исследовали рынок одноплатных компьютеров.
  36. 3. Формирование требований и постановка задачи:
  37. Шаг 1. Выбор платы
  38. Шаг 2. Критерии и постулаты разработки
  39. Шаг 3. Процесс
  40. Что получилось в итоге
  41. А что со стабильностью
  42. Итоги

Android source code для orange pi

6.1. Загрузка исходного кода Android SDK

6.2. Сборка среды компиляции Android

6.3. Компиляция образа Android

6.3.1. Компиляция ядра Android

6.3.2. Компиляция исходного кода Android

Компиляция Android SDK выполняется на ПК с установленным Ubuntu 14.04, другие версии ОС Ubuntu могут иметь некоторые отличия.

Android SDK — это оригинальный SDK, выпущенный производителем чипа. Если вы хотите использовать образ Android, скомпилированный Android SDK на плате разработки Orange Pi, вам необходимо адаптироваться к различным платам, чтобы гарантировать нормальное использование всех функций.

  • 1) Исходный код Android H616 содержит следующие 4 файла:
  • a)android.tar.gzxx — исходный код Android
  • b)android.tar.gz.md5sum — файл контрольной суммы MD5 для android.tar.gzxx
  • c)longan.tar.gz — содержит исходный код ядра u-boot, linux (не включает исходный код boot0)
  • d)longan.tar.gz.md5sum — файл контрольной суммы MD5 для longan.tar.gz
  • Сначала определите путь установки java, обычно

    Затем используйте следующую команду для экспорта переменных среды Java

  • 3) Используйте Ubuntu 14.04 для компиляции исходного кода Android 10, вам необходимо убедиться, что Ubuntu 14.04 использует ядро linux 4.4, в противном случае при компиляции будет сообщено об ошибке, если ядро не Linux 4.4, обновите ядро
  • 4) Установите программное обеспечение поддержки платформы

    Источник

    Contents

    Initializing a Build Environment

    The environment setting up has been tested under Ubuntu 12.04 Desktop and Ubuntu 14.04 Sever.

    Install JDK on PC

    Install Essential Packages

    Install some packages:

    Link the libGL library:

    Attention

    1. Sometimes, when we use Ubuntu 12.04 Desktop, we may encounter that the desktop GUI is missing after we set up the Android environment. We need fix this:

    2. Under Ubuntu 14.04 Sever, we may also need to install:

    Download Android SDK

    At current, we can only get Android 4.2 SDK for Orange Pi/mini Pi . Download the Android 4.2 SDK for Orange Pi/mini Pi from the Cloud:
    Baidu Cloud: download link
    Goodle Drive: download link
    Github: Github Page

    Extract the files in the download package:

    We can see two directory in OP_Andoird: android and lichee. The content in the android directory is the source code for android system.
    The content in the lichee directory contains the kernel, u-boot, toolchain and some other tools maybe needed.

    Build lichee packages

    First we need compile the kernel and uboot. They are in lichee directory. Enter the lichee directory:

    And then compile:

    After the first compile, we need upgrade the kernel configuration to open some drivers such as GMAC:

    After this, you can also tweak the kernel as you like:

    and then save it.

    Compile the kernel again to make the added drivers work:

    After all is ready, you will find a directory named out appear under lichee directory. In it, there are files needed by Android system, when we compile the android source code, these files in out directory will be copied into Android.

    Build Android

    Enter the android directory:

    Configure the compile environment:

    Select the right project for Orange Pi/mini Pi. We have a default project called sugar-orangepi:

    it will let you enter a number for the project. The sugar_orangepi-eng is 16 by default.
    And then:

    You can also use make -jN, N represents the core of your host PC. This will take some hours depends on your PC performance.(My ThinkPad T440 takes about 80 minutes, and my Dell sever takes about 50 minutes). After build, you can pack the system to form an Android image file:

    And then, you can find the compiled image file under /lichee/tools/pack called sun7i_android_sugar-orangepi.img .
    When building Android, it also produce a new folder called out under android directory.

    Burn the Android image

    After all compiling process, you can burn the new image created by yourself into SD card with PhoenixCard tool. More information please see: TF_card_installation#Installing_the_Android_OS_image.

    Useful files for customize your Android system

    Under android/devices/softwinner , there are three folders specially related to our Orange Pi/mini Pi android project:

    Читайте также:  Arent grim reapers supposed to be scary android

    We eventually use the files in the sugar-orangepi. sugar-orangepi depends on wing-common, wing-common depends on common.
    The specific files or folders may be useful:

    Источник

    Русские Блоги

    Компиляция исходного кода Android для Orange Pi PC

    Компиляция исходного кода Android для Orange Pi PC

    Компании необходимо использовать компьютер Orange Pi в качестве основной платы торгового автомата, и было обнаружено, что сломанная система этой платы может быть экранирована только по горизонтали, а отладка adb отключена по умолчанию. Пришлось скачать систему компиляции исходного кода, которая наткнулась на яму, к счастью, официальный документ был написан подробно.

    Создайте среду компиляции

    • Место на жестком диске хоста Linux не менее 50 ГБ (удовлетворяет полной компиляции)
    • Хост Linux требует:
      • Python версии 2.7.3;
      • GNU Make версии 3.81-3.82;
      • git версии 1.7 или выше;
      • Версия Java 1.6

    Установить JDK

    1. Изoracle jdk-6u31Загрузите Java JDK.
    2. Нажмите наПринять лицензионное соглашение
    3. Нажмите наjdk-6u31-linux-x64.bin
    4. Войдите на Oracle.com со своей учетной записью Oracle
    5. Загрузите JDK на свой〜/ Downloadsоглавление
    6. После загрузки откройте терминал и введите следующие команды.

    Настройте переменные среды в соответствии с созданным каталогом jdk и выполните команду: vi

    Заставить переменные среды jdk вступить в силу, выполнить source

    Посмотреть версию jdk, выполнить java -version、javac –version

    Установите make-3.81

    1. Загрузите и распакуйте make-3.81.tar.bz2, войдите в каталог make-3.81 и выполните ./configure

    2. После выполнения в каталоге make-3.81 будет дополнительный файл build.sh, выполните ./build.sh Вы можете получить файл make

    3. Убедитесь, что скомпилированный make — это нужная нам версия 3.81. make -v

    4. Замените систему оригинальной марки. (Не забудьте сделать резервную копию исходных файлов.)

    Установите необходимые пакеты(Ubuntu 16.04)

    Вам понадобится 64-битная версия Ubuntu. Рекомендуем Ubuntu 16.04.

    Обнаружен arm-linux-gnueabihf-gcc: ошибка при загрузке общих библиотек: libstdc ++. So.6: невозможно открыть общий объект
    файл: нет такого файла или каталога. Такой вид мошенничества, sudo apt-get install lib32stdc++6 Все нормально

    Используйте сетевой adb для отладки

    Добавьте следующий оператор в android / device / softwinner / dolphin-common / init.sun8i.rc:

    После распаковки исходного кода будет два каталога: android и lichee. Файл ./build.sh в lichee имеет права root, поэтому переключите пользователя root для выполнения скрипта.

    Скомпилировать код lichee (ядро)

    Затем выберите номер плана строительства.

    Команда компиляции исходного кода Android

    Импортировать исходный код Android в Android Studio

    В /development/ide В каталоге eclipse / emacs / intellij есть три файла конфигурации ide. Поскольку существует так много файлов исходного кода, настоятельно рекомендуется увеличить размер памяти jvm.

    Создание файлов конфигурации (* .ipr), необходимых для импорта AS

    Скомпилируйте исходный код (чтобы гарантировать, что создается файл .java, например R.java; если он скомпилирован, нет необходимости компилировать снова)

    Проверьте, есть ли idegen.jar в каталоге out / host / linux-x86 / framework /

    Если idegen.jar не существует, выполните:

    Дождитесь результата, подобного следующему:

    В это время в корневом каталоге исходного кода будут созданы два файла конфигурации IntelliJ IDEA: android.ipr и android.iml (AS разработан на основе версии сообщества IntelliJ IDEA).

    Советы: AS относительно медленен при импорте кода, рекомендуется сначала изменить android.iml, чтобы исключить код, который вы не используете. Вы можете следовать синтаксису фильтрации папки .repo, например:

    Вы также можете удалить все ненужные элементы библиотеки модулей через зависящие от настроек модуля как

    Таким образом, папки abi и art будут пропущены при импорте. Чем больше фильтрации, тем выше будет скорость обработки AS. Наконец, откройте вновь созданный android.ipr в корневом каталоге исходного кода в AS.

    Решить проблему прыжков ошибок в исходном коде

    Чтобы установить правильный SDK и JDK для текущего проекта, требуется Android API 19 Platform, а jdk не имеет значения, поскольку исходный код jdk включен в каталог libcore. Добавьте jdk и затем удалите все элементы в пути к классам, а затем выберите пустой jdk для платформы Android API 19. Как показано ниже

    Щелкните Project

    Щелкните Модули, выберите соответствующие модули кода, такие как платформы, пакеты и другие каталоги исходного кода, и переместите их наверх, чтобы найти их первыми, а не в Android.jar.

    ПРИМЕЧАНИЕ. Пустая библиотека не имеет значения.

    Исходный код DEBUG

    Добавьте «Android Framework» в «Модули», чтобы AS рассматривала его как проект Android, чтобы мы могли легко отлаживать код.

    Добавьте точку останова в код, а затем выберите «Выполнить» -> «Присоединить отладчик к процессу Android» или щелкните значок «Присоединить отладчик» непосредственно на панели инструментов. В появившемся диалоговом окне «Выбор процесса» установите флажок «Показать все процессы», выберите процесс, в котором находится код для DEBUG, и нажмите «ОК».

    Интеллектуальная рекомендация

    Многослойная презентацияViewController Jap

    . Недавно, проект использует многоэтажные прыжки [A presentViewController: B animated: YES] [B presentViewController: C animated: YES] . Проблема в том, где: как это идет прямо к? Я не нашел ме.

    Распечатать список с конца до головы

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

    Типы данных и переменные

    тип данных Компьютерная программа может обрабатывать различные значения. Однако компьютеры могут обрабатывать гораздо больше, чем числовые значения. Они также могут обрабатывать различные данные, таки.

    Python Daily Practice (4) -идиомы заполняют музыку

    оглавление 1. Одно место 2. Случайное расположение 3. Добавьте баллы для оценки 4. Получение файла 5. Установите уровень сложности. 6. Срок завершения 7. Выберите заполнение пропусков. 1. Одно место Н.

    Источник

    Читайте также:  Андроид как усилитель звука

    Android 10 с открытым кодом на Orange Pi: возможна ли стабильная работа

    Меня зовут Марина Сергиенко, я Team Lead, Engineering, Consultant в компании GlobalLogic уже 10 лет, последний год занимаю позицию Team Lead. Сегодня хочу рассказать про один из некоммерческих проектов, над которым работали инженеры из моей команды.

    Данная статья — это систематизация опыта, технических решений и навыков, которые команда получила в ходе портирования актуальной версии open source системы Android на одноплатный компьютер Orange Pi.

    Статья будет полезна инженерам, занимающимся вопросами интеграции и портирования ОС, энтузиастам еmbedded-технологий, специалистам, имеющим дело с микрокомпьютерами типа Raspberry Pi.

    Зачем нам Orange Pi

    Чуть больше года назад, когда в руки попала плата Orange Pi, нас заинтересовала возможность запустить на ней последний Android (тогда это была версия P). Собралась команда из пяти единомышленников (embedded-инженеров), и мы стартовали небольшой проект для проверки концепции.

    Сегодня на рынке нет недорогого решения с современной версией Android и периферией, привычной любому пользователю. Что мы понимаем под «нет платформы»?

    Во-первых, цена. Она определяет доступность. Есть множество производителей, предлагающих решения в разном ценовом диапазоне. И в Android она высокая. Во-вторых, поддержка и актуальность. Часто производители и комьюнити не успевают за тенденциями рынка. А поддержка последней версии Android для многих платформ вообще отсутствует.

    С чего начинали

    1. Выбрали операционную систему.

    Разумеется, определились с интересующей нас операционной системой — Android. На текущий момент это самая популярная ОС для портирования мобильных устройств.

    2. Исследовали рынок одноплатных компьютеров.

    Небольшой ликбез. Одноплатный компьютер — это портативное решение: плата, на которой установлен SOC с графическим процессором, оперативная память и контроллеры периферии. Все это позволяет собрать на рабочем столе маленький полнофункциональный компьютер. К нему можно подключить монитор, запустить браузер.

    На текущий момент индустрия одноплатных компьютеров развивается интенсивно. В таблице ниже мы собрали для наглядности некоторые разработки и модели. Отбирали по принципу: все имеют на борту 2 ГБ оперативной памяти. Особое внимание обратим на колонку Price. Она не отражает полного состояния отрасли, но хорошо иллюстрирует диапазон цен: есть решения от десятков до сотен долларов.

    HW Comparison Table, 2 Gb DDR3

    Boards SoC GPU Price Available Android
    Raspberry Pi 4 Model B Broadcom BCM2711Cortex-A72 Quad core VideoCore VI $52.97 Android 7.1.2
    Banana Pi M2 Ultra Allwinner R40Cortex A7 Quad core Mali-400MP2 $56.99 Android 7.1.2
    ODROID-C2 Amlogic S905Cortex-A53 Quad core Mali-450 $85.40 Android 8.1
    NanoPi K2 Amlogic S905Cortex-A53 Quad core Mali-450MP $53.00 Android 8.1
    PINE A64+ Amlogic S905Cortex A53 Quad-Core Mali-400MP2 $29.00 Android 7.0
    Orange Pi 3 Allwinner H6Cortex-A53 Quad core Mali-720 $34.90 Android 7.0
    HiKey 960 HiSilicon Kirin 9604xCortex-A73, 4xCortex-A53 Mali-G71MP8 $239.00 Android 9.0
    SanCloud BeagleBone Enhanced TI AM3358Cortex-A8 SGX530 $69.00 Custom Android for BBB

    Что это дает? Гибкость. Пользователь с любым бюджетом соберет для себя «умное» устройство. Еще одна графа в таблице показывает версию ОС Android, которую можно запустить на данной платформе. От чего она зависит и откуда берется? Все просто: версия предоставляется либо продавцом/производителем для популяризации своей платформы, либо от open source community.

    К чему были эти теоретические отступления? У нас есть новая версия Android, одноплатный компьютер, и год назад мы решили портировать этот Android на одноплатный компьютер. Мы не первые, кто решил это сделать. Но есть нюанс: наша команда определила новые требования. Чтобы было интереснее!

    3. Формирование требований и постановка задачи:

    1. Использовать только последнюю версию Android, которая актуальна на текущий момент. Что надо, чтобы портировать ее? Настроить аппаратно-зависимые части, bootloader, адаптировать ядро Linux, сконфигурировать уровень HAL, сервисы.
    2. Платформа должна быть дешевой. И, разумеется, содержать ресурсы, достаточные, чтобы Android мог работать. 640 килобайт, конечно, хватит для всех, но не для Android 10.
    3. Использовать только open source проекты из открытых источников. Итоговый проект должен быть открыт и доступен каждому. Плюс важен аспект безопасности. Можно ли доверять данному продукту? Например, когда мы скачиваем Android с официального сайта Orange Pi, получаем только бинарный файл. Содержимое этого файла никому не известно. И всегда остается доля сомнений. Хотелось бы избежать этого: люди должны понимать, что проекту можно доверять.
    4. Проект должен собираться «из коробки». Ни для кого не секрет: чтобы собрать Android, сначала нужно собрать ядро Linux, bootloader, библиотеки и сервисы самого Android. Это все сконфигурировать, адаптировать аппаратно-зависимые части, сложить все в образ и записать на носитель информации. После этого Android заработает. Нетривиальная задача для неподготовленных людей.
    5. Последнее в списке, но не по важности. Получить удовольствие от процесса.

    На этом теоретический этап подошел к концу. Теперь рассмотрим, а как же было на практике? Весь процесс мы разбили на шаги.

    Шаг 1. Выбор платы

    После сравнения вариантов мы остановились на Orange Pi Plus 2E.

    Orange Pi Plus 2E (Shenzhen Xunlong Software)

    • она дешевая;
    • есть активное сообщество, которое может помочь;
    • относительно неплохое «железо» процессор, с частотой 1.6 ГГц, графический процессор Mali-400, 2 ГБ ОЗУ и 16 ГБ MMC, интерфейсы: USB для подключения внешней периферии, Wi-Fi и Ethernet).

    Шаг 2. Критерии и постулаты разработки

    1. Все, что исправляем или добавляем в сторонние репозитории, нужно коммитить в upstream. Если находим ошибку и требуется фикс в ядре — предлагаем в mainline Linux kernel. Если делается фикс в Android Open Source Project от Google — аналогично. В течении разработки, особенно в активной фазе, активно предлагаем наши патчи в upstream.
    2. Создавать форки других проектов только при необходимости — если нужно добавить специфические для платформы вещи.
    3. Держать код чистым. Это понятные структурированные описания изменений. Не всегда получается из-за спешки, но стараемся обращать на это внимание.
    4. Максимально избегать использования проприетарных проектов.
    Читайте также:  Джойстик для смарт приставки андроид

    Шаг 3. Процесс

    Google предлагает нам следующие шаги по кастомизации Android под новую платформу:

    За этими словами скрываются такие действия:

    1. Создать директорию для платформы (она должна располагаться в папке device): с наименованием вендора и названием продукта. Там следует разместить vendor setup файл, в котором будет задаваться название сборки.
    2. Добавить make-файлы для сборки продукта. Они содержат название архитектуры, подключаемые модули и конфигурационные файлы. Кроме того, overlay config file, который настраивает ресурсы стандартных компонентов Android.
    3. Доработать Android-манифест, чтобы обеспечить сборку «из коробки». Включить сборку ядра и bootloaders.

    GloDroid основывается на AOSP от Google и включает репозитории с таблицы ниже. Мы сделали make-файлы для конфигурации Android: какую разновидность хотим собрать (TV, Automotive, для других задач), поддержку каких HAL/сервисов включить (например, Wi-Fi и Bluetooth).

    Что получилось в итоге

    В отдельном репозитории (скачивается в директорию prebuilts) мы храним уже собранные сторонние приложения (файлы APK), которые могут сразу инсталлироваться. Загвоздка в том, что Play Market не входит в AOSP, за него необходимо либо платить, либо проходить сертификацию у Google. Мы нашли выход и использовали F-Droid для установки и тестирования приложений. Также добавили тулчейн, которым собираем ядро, и U-Boot. Инструменты для сборки остальных пакетов входят в состав AOSP.

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

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

    Одна из наших целей — стабильная и «плавная» работа Android на этой плате. UI не должен тормозить. Для этого мы регулярно изучаем, что поддерживается, и оптимизируем графическую обработку. То есть это включает профилирование, кеширование при необходимости. Часть задач мы успешно решили, что-то еще предстоит в будущем.

    Рассмотрим, над какими компонентами нам приходится больше всего работать.

    На схеме выделены цветом структурные элементы программного обеспечения, которые пришлось дорабатывать:

    • DRM-микшер, который отвечает за взаимодействие с вспомогательным процессором. Комьюнити не приняло три нужных нам патча, поэтому храним их в нашем репозитории.
    • Проект Mesa, который реализует OpenGL Stack. Он динамично развивается последние три года. Реализует OpenGL, GL ES, Vulkan и позволяет использовать различные средства аппаратного ускорения. Драйвера от Mesa часто функциональней и лучше, чем оригинальные драйвера от производителей «железа». Практически весь проект сделан с помощью реверс-инжиниринга.
    • Video Engine позволяет выполнять аппаратное кодирование и декодирование видео. Google уже сделал под него базовую поддержку, но не дал всех компонентов, чтобы склеить воедино. На данный момент поддержку видеодекодирования мы не реализовали.
    • Аудио. Получилось поднять звук «из коробки». Мы используем tinyhal — открытый проект на GitHub.

    А что со стабильностью

    Мы работаем над исправлением существующих и новых багов, которые появляются как регрессия из-за некоторых улучшений сторонних репозиториев. Планируем поднять сервер Continuous Іntegration, на котором все изменения будут автоматически собираться. Будут запускаться тесты и генерироваться отчет валидации для любого члена сообщества, который захочет участвовать в проекте. Тем самым планируем немного разгрузить себя и улучшить качество продукта. Для тестирования будем использовать VTS/CTS. Это наборы тестов, которые предоставляет Google.

    Также, разумеется, ручное тестирование. Тут надеемся получить от сообщества помощь. Кстати, мы ее уже получаем — нам пишут люди из разных локаций.

    На самом деле очень многое в проекте — результат работы людей со всего мира, которые занимаются улучшением Linux kernel.

    Итоги

    На этом слайде показано, сколько усилий было потрачено на различные активности.

    Мы написали около 1350 строк make-файлов для конфигурации Android. Примерно 300 строк C/C++ кода для улучшения его работы. Написание кода у нас занимало примерно 1% времени. Make-файлы — около 5% времени. Для наглядности: за месяца активной фазы разработки на кодирование было потрачено 5 дней. Еще 24% времени уходило на сборку и отладку.

    Android OS — живая и постоянно изменяющаяся система. То, что было актуально для версии 8, зачастую неактуально для версии 10. Приходится разбирать исходный код, и на это идет много времени. Поэтому, кроме решения практической задачи портирования, работа над проектом здорово прокачала навык самообразования:

    • глубоко погрузились в официальную документацию Google, поняли ее логику;
    • руками пощупали существующие AOSP-репозитории. Разобрались, как они устроены, поскольку там далеко не все задокументировано.

    Мы выполнили все поставленные цели. Реализовали поддержку Android для платформы Orange Pi Plus 2E, сделали это достоянием сообщества и получили массу удовольствия.

    Итоговый проект доступен на GitHub. Вот его wiki.

    Если стало интересно и хотите приобщиться к нашей команде — мы рады помощи!

    Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

    Источник

  • Оцените статью