Как сделать свою мобильную ОС

Как Порт CyanogenMod Android на свой ​​собственный устройства

Содержание

Некоторые советы по портированию CyanogenMod на ваш устройства

Таким образом, вы можете натолкнуться на телефон или планшет, или то, что это вовсе не имели в распоряжении СМ.
Вы ранее построенный CyanogenMod на вашем компьютере для другого устройства или два, и вы чувствуете себя комфортно в этом процессе. На самом деле, у вас еще есть исходный код, стоящий на и готовы решать большой проект.
Похоже, это ваша возможность блистать!
Заметка:
Для целей этого урока, все ссылки на каталоги будут считать, что вы находитесь в корне исходного кода (т.е., где вы сделали в repo init ), и имена папок будут относительно есть. Если вы следовали инструкции сборки, корень исходного кода находится в ~/android/system

Предпосылки

Портирование CyanogenMod на новое устройство может быть смешного легко или смехотворно трудно, в зависимости от самого устройства, в настоящее время ли он работает последняя версия Android или нет, и, конечно, свои навыки в качестве разработчика дело тоже.
Это было бы довольно трудно сделать порт, не имея встроенного CyanogenMod (и восстановление) ранее для другого устройства. Так что если вы еще не сделали сборку или два , дать ему шанс.
Полезный совет
Если вы обнаружили на этой странице кроме через Учебный центр CyanogenMod, над головой развития для гораздо больше информации.

Кроме того, вы должны ознакомиться с исходным CyanogenMod кода. Вы должны ожидать, что, если не произойдет некоторые редкие исключения, почти все, что нужно сделать, будет в /device/[vendor]/[codename] , /vendor/[vendor]/[codename] , и /kernel/[vendor]/[codename] каталоги.
Полезный совет
Для более-детальный обзор того, что там в исходных папок CyanogenMod, см здесь . На самом деле, вы действительно должны прочитать это, если вы планируете делать порт.

Сбор информации об устройстве

Перед тем, как начать свой порт, вам нужно будет собрать как можно больше информации о вашем устройстве, как вы можете. Перейти к википедии и определить название продукта, кодовое название, архитектура, размер памяти, внутренний размер для хранения и платформы архитектуры. Положите эту информацию в файл для облегчения поиска. Постарайтесь узнать как много об устройстве, включая любые сходства он может иметь для других устройств.
Полезный совет
Многие устройства архитектурно похож на других устройствах, которые уже есть на рынке и имеют существующие порты CM. Когда новое устройство выходит, посмотреть, если вы можете узнать, если это может быть идентична другим устройством, только с другим размером экрана или больше памяти или какой-либо другой небольшой разницей. Если вы нашли "предка" или "брат" вашего устройства, большая часть работы уже может быть сделано для Вас!
Большая часть информации, необходимой могут быть доступны в Интернете, но при условии, что устройство уже работает без CyanogenMod версию Android, вы можете также получить некоторые из этой информации от самого устройства. Для просмотра файлов, содержащих эту информацию, устройство, возможно, потребуется корнями. Тем не менее, иногда вы можете найти пакет обновления запасов прошивки на сайте, и могут просматривать файлы из .zip файла архива.

Посмотрите на текущей устройства /system/build.prop

Если предположить, что устройство уже установлена ​​версия Android, там должен быть файл, /system/build.prop , на устройстве, которое может содержать полезную информацию, которая вступит в игру, как вы делаете свой ​​порт. Этот файл содержит определения для различных параметров и настроек, используемых Android.
Так что, если у вас уже установлен ADB на компьютер, вы можете использовать следующую команду, чтобы вытащить этот файл на свой ​​компьютер:
adb pull /system/build.prop
Если вы получили сообщение об ошибке, относящуюся к разрешениях, устройство, возможно, потребуется корнями , чтобы получить доступ к этому файлу. Тем не менее, есть и другие способы, чтобы найти этот файл. Например, он может быть включен в любой акции прошивки "обновления" пакет онлайн.
Если у вас есть файл ...
  • Запишите значение ro.product.manufacturer параметра. Это будет ваше имя поставщика. [Продавец] это имя производителя / поставщика устройства. CM установил соглашения об именах для большинства крупных производителей, таких как samsung , htc , lge , и т.д. Обратите внимание, что в этих именах каталогов, продавец всегда в нижнем регистре и не содержит пробелов.
  • Запишите значение ro.product.device параметра. Это будет ваш кодовое устройство. [Кодовое] соответствует кодовым названием проекта самого устройства. Это почтиникогда не название устройства продаж. Если вы построили CM до (и снова, вам лучше иметь!), Вы должны быть знакомы с концепцией кодовым названием для каждого устройства. Как имя поставщика, кодовое всегда в нижнем регистре и не содержит пробелов.
Заметка:
Иногда устройство идентифицируется в других параметров, таких как ro.product.board
Держите build.prop файл удобно, так как вы можете обратиться к нему позже.

Изучите boot.img и recovery.img

Как уже говорилось, при выполнении вашего порта, вы можете использовать существующий предварительно построенный ядро, который ранее печатался вместо строительства одного из исходного кода. В зависимости от устройства, вам может понадобиться, чтобы извлечь этот файл ядра из устройства. Ядро может существовать в виде отдельного файла (как это делает на многих OMAP устройств) или может быть завернутый вместе с электронного диска в загрузочном разделе или восстановления.
Точно так же, содержимое фондовом псевдодиска может быть чрезвычайно полезным и часто могут быть извлечены и рассмотрены. Это может быть так, что устройство требует определенных файлов из фондового псевдодиска для того, чтобы правильно загрузить, загрузить модуль и т.д. В большинстве случаев вы можете просматривать файлы в виртуальный диск из самого устройства, но это вы можете предпочесть, чтобы посмотреть на полный каталог.
Заметка:
Электронный диск является крошечной группы файлов и каталогов, которые загружаются в память вместе с ядром. Затем ядро запускает один из файлов в электронный диск под названием init , который затем запускает скрипт ( init.rc , init.[codename].rc и т.д.), что в свою очередь загружает оставшуюся часть Android.Электронный диск и ядро могут быть упакованы вместе в ряде различных способов, используя инструменты с такими именами, как mkbootimg , mkimage , и другими методами.
Вы можете часто извлекать загрузочные и восстановления изображения (в файл, имя которого вы boot.img и recovery.img ) на корни Android устройства с помощью дд . Или, если у вас есть доступ к обновленной .zip файл от поставщика, часто можно найти эти файлы внутри.

Соберите любой доступный существующий исходный код

Производитель или продавец любого устройства с помощью Android будет минимально необходимо сделать исходный код доступен для всех GPL компонентов по запросу, в том числе (и особенно) в ядре. Вы наверняка хотите, чтобы запросить копию исходного кода ядра и держать его под рукой.

Определить схему секционирования

Основная длительного хранения часть вашего мобильного device-- обычно "EMMC" (E mbedded М конечном м Edia с АРД ) - это так же, как жесткий диск компьютера в том, что она готовится особым образом, чтобы идентифицировать и изолировать различные области данных. Эти уникальные места называют разделов , и они могут иметь любой тип данных, хранящихся там. Некоторые разделы содержат сырую data-- прошивки, ядра, RAMдиск, и т.д. Чаще всего, раздел отформатирован для использования конкретного файловую систему , что ядро будет распознавать таким образом, чтобы отдельные файлы и каталоги могут быть считаны и записаны там.
Прежде чем вы сможете заменить фондовый операционную систему с CyanogenMod, поэтому важно выяснить схему разбиения устройства. Восстановление изображения вы строите понадобится эта информация, чтобы знать, где найти различные каталоги для Android. В частности, вы хотите знать, какие разделы присвоены /system , /data , /cache , и /sdcard .
Вы хотите знать, какие существуют перегородки, на каком устройстве, как они установлены, а также от размера разделов. Эта информация может быть передана позже кBoardConfig.mk файла в /vendor каталога.
Если вам повезет, recovery.fstab файл может быть расположен в recovery.img файл, ускоряя процесс выяснить, что происходит где. Кроме того, init.[codename].rc файл в виртуальный диск может иметь информацию. Ищите линий вблизи верхней, где разделы mount ред.
Кроме того, команда:
$ cat /proc/partitions
от работы устройство может также помочь вам определить разделы. Также см /proc/emmc , /proc/mounts или /proc/mtd . Вы также можете получить некоторую информацию от команды mount (запускать с правами администратора).
Также проверьте /cache/recovery.log или /tmp/recovery.log .
Наконец, если у вас есть исходный код загрузчика (например, U-Boot , используемого многими OMAP на базе устройств), вы, вероятно, найдете информацию там.
Заметка:
Знайте, что в некоторых редких случаях, таких как HP Touchpad , отведенной виртуальная файловая система используется.

Настройте три новых каталогов

Теперь, когда вы собрали информацию об устройстве, пора произвести папки для конфигурации устройства, расположенного в следующих каталогах, относительно исходного каталога код.
  • device/[vendor]/[codename]/ - это где установка файлы специфичные для вашего устройства будет идти. device/ каталог содержит 99-100% от его настройки и другой код для конкретных устройств. Вы узнаете этот каталог очень хорошо. Как уже упоминалось, при запуске папку для этого устройства, это может быть хорошей идеей, чтобы адаптировать каталог для существующего устройства, которое архитектурно похож на тот, который вы хотите порту. Посмотрите на устройстве, которое основано на той же платформе, например.
  • vendor/[vendor]/[codename]/ - vendor/ каталог содержит собственный, бинарные "капли", что резервная копия с оригинального устройства (или предоставляемые поставщиками, например, в случае Nexus устройств Google и некоторых TI графика BLOB).
  • kernel/[vendor]/[codename]/ - источник ядра идет здесь. При первом запуске портирование, вы можете упростить вещи, используя предварительно построенную ядро ​​(например, тот, который пришел с фондового установки), а не строить ядро ​​с нуля. Хитрость, которая будет извлекать ядро ​​из фондового системы от формата в котором они могут быть в, а затем повторно упаковки его, вместе с новым псевдодиска, в форме, что устройство можно использовать. Это может варьироваться от устройства к устройству, так это снова может быть полезно взглянуть на аналогичные устройства с вашим, которые используют подобную архитектуру. Сборка ядра из исходников не является строго необходимым для каждого устройства, но в духе открытого источника, он является предпочтительным практика для CyanogenMod. Смотрите здесь для более подробной информацией о том, как CyanogenMod строит исходный код ядра с нуля.
Есть по крайней мере три способа, чтобы генерировать эти каталоги:

Метод 1: Использование mkvendor.sh генерировать скелетные файлы

Используйте mkvendor.sh сценарий в build/tools/device/ автоматически генерировать каталоги.
Заметка:
mkvendor скрипт работает только с устройствами, которые используют стандартный boot.img файл, используя стандартные для Android конвенций и заголовки. Это не будет работать для устройств, которые отличаются от этого стандарта (Nook Color, Touchpad, и т.д.).
Этот сценарий принимает три параметра: поставщика, кодовое имя, и boot.img файл.
Пример использования:
$ ./build/tools/device/mkvendor.sh samsung i9300 ~/Desktop/i9300boot.img 
В приведенном выше примере, samsung представляет поставщику, i9300 представляет собой название, что последний параметр это путь к boot.img файл, который был извлечен из загрузочного раздела с dd или предоставляются поставщиком в обновлении .zip, как описано выше.
Команда выше должны создать /device/samsung/i9300/ папку в вашем CyanogenMod структуре источник репо. И внутри папки, файлы AndroidBoard.mk ,AndroidProducts.mk , BoardConfig.mk , cm.mk , device_[codename].mk , kernel (двоичный), recovery.fstab и т.д.
Это не будет строить kernel/ каталог. Вам нужно будет сделать это позже, когда вы будете готовы, чтобы собрать ядро.
Заметка:
Если она возвращает сообщение "unpackbootimg не найден. Ваша андроид окружение сборки созданы и принимающие инструменты были построены?" пожалуйста, не забудьте, что вы выполните следующую команду во время настройки среды для разработчиков:
$ make -j4 otatools

Способ 2: Вилка репозиторий аналогичное устройство в

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

Метод 3: создание директории и файлы вручную

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

Настройте файлы

Есть много файлов в device/ папок. Мы начнем с упором на четырех файлов BoardConfig.mk , device_[codename].mk , cm.mk , recovery.fstab , и kernel , чтобы получить восстановление работы для вашего устройства.
Полезный Чаевые Начать с восстановления!
Первый крупный шаг, чтобы получить рабочую образ восстановления для вашего устройства, так что тестирование последующие update.zips легко и так, что вы можете сделать резервное копирование в случае необходимости. Поэтому эти следующие несколько шагов будут обращать больше внимания на получение рабочей восстановление, чем получать CM сам работать. После восстановления построен и работает благополучно, работа, которую вы сделали за это будет обратиться непосредственно в части УК.
Позволяет изучить каждый из этих файлов: 

BoardConfig.mk

Этот файл содержит важную архитектурные и строить информацию об архитектуре вашего устройства материнской платы, процессора и других аппаратных средств. Получение этого файла правой важно.
Чтобы получить основную загрузку восстановления, несколько параметров должны быть установлены в этом файле.
Следующие параметры должны быть установлены правильно в BoardConfig составить рабочий образ восстановления:
  • TARGET_ARCH: это архитектура устройства это, как правило, что-то вроде руки или OMAP3.
  • BOARD_KERNEL_CMDLINE: не все устройства проходят параметры загрузки, однако если ваше устройство делает это должны быть заполнены правильно, чтобы загрузить успешно. Вы можете найти эту информацию в ramdisk.img .
  • BOARD_KERNEL_PAGESIZE: размер_страницы фондового boot.img и должен быть установлен должным образом для того, чтобы загрузить. Типичные значения для этого являются 2048 и 4096, и эта информация может быть извлечена из поставляемом ядре.
  • BOARD_BOOTIMAGE_PARTITION_SIZE: количество байтов, выделенных для раздела образа ядра.
  • BOARD_RECOVERYIMAGE_PARTITION_SIZE: количество байтов, выделенных для раздела восстановления изображения.
  • BOARD_SYSTEMIMAGE_PARTITION_SIZE: число байт, выделенных на Android система файловой системы раздела.
  • BOARD_USERDATAIMAGE_PARTITION_SIZE: число байт, выделенных на Android файловой данных раздела.
Заметка:
Приведенная выше информация может быть получена путем умножения размера от /proc/partitions или /proc/mtd по размеру блока, обычно 1024.
  • BOARD_HAS_NO_SELECT_BUTTON: (необязательно), использовать это, если ваше устройство должно использовать свою кнопку питания для подтверждения выбора в восстановлении.
  • BOARD_FORCE_RAMDISK_ADDRESS / BOARD_MKBOOTIMG_ARGS: (опционально), использовать их, чтобы заставить конкретного адреса для виртуального диска. Это, как правило, необходимы на больших разделов для того, чтобы электронный диск должен быть загружен правильно, где он ожидал существовать. Это значение может быть получено из поставляемом ядре. Бывший исключается в Android 4.2.x и последний теперь будет использоваться в 4.2.x и за ее пределами.

device_[codename].mk

device_codename.mk Makefile содержит инструкции о том, какие Android Пакеты строить и где, чтобы скопировать определенные файлы и пакеты или специфические свойства для установки во время компиляции.
Этот файл можно использовать для копирования важных файлов в электронный диск во время компиляции.
  • PRODUCT_COPY_FILES: используются для копирования файлов во время компиляции в виртуальный диск, который будет расположен в $OUT/recovery/root .
Пример:
$(LOCAL_PATH)/sbin/offmode_charging:recovery/root/sbin/offmode_charging \ 
Это будет скопировать файл offmode_charging бинарник в sbin папку в виртуальный диск.
  • О продукте / PRODUCT_DEVICE: используется для установки значения вашего кодовым именем. Это имя устройства, загрузить с обеда .

kernel

Это просто двоичные образ ядра или ядра вы построили сами использовать для загрузки устройства. Формат ядра может быть в zImage или uImage, в зависимости от требований архитектуры устройства. 

cm.mk

Вам нужно сделать несколько изменений в этом файле интегрировать с lunch , brunch , и breakfast команд, так что устройство появляется в списке и строит правильно. Вы также установить некоторые переменные (см другие устройства), чтобы указать, какой размер всплеск анимация должна использоваться, является ли это таблетка или телефон и т.д.
Некоторые из этих параметров не используются для строительства только восстановления, но вы можете также установить их сейчас, потому что, как только восстановление делается и работает, настройки здесь будет важно.
Опять же, посмотрите на аналогичное устройство к твоей, чтобы получить представление о том, какие настройки здесь должно быть. Это довольно интуитивно.

recovery.fstab

recovery.fstab определяет файловая система точку монтирования, тип файловой системы, а блочное устройство для каждого из разделов в памяти устройства. Она работает почти так же, как /etc/fstab в стандартной операционной системе Linux.
Пример:
/system ext4 /dev/block/mmcblk0p32 
Это устанавливает блочное устройство на mmcblk0p32 для монтажа на /system в качестве файловой системы ext4
Все точки монтирования должна существовать в этом файле и важно эта информация будет правильно, иначе очень плохие вещи могут случиться, например, восстановление флэш письменной форме в неправильном месте.
Заметка:
Тип файловой системы datamedia могут быть использованы для внутренних sdcards, а также установка блочного устройства к /dev/null .

vendorsetup.sh

vendorsetup.sh называется, когда setupenv.sh запускается. Он используется, чтобы добавить нестандартные lunch комбо на lunch меню.
Чтобы добавить устройство к меню обеда:
add_lunch_combo cm_<codename>-userdebug 

Тогда построить восстановления тест изображение

Чтобы построить только восстановление, настроить lunch как с обычным сборки, и сказать, make recoveryimage
Если что-то сломать (и они сломают), взгляните на эти советы для работы с ошибками сборки .
Полезный совет
Если вы быстрой загрузки , вы можете попробовать его, чтобы установить образ восстановления в раздел восстановления. Есть и другие методы для установки восстановления, такие как использование dd от корневой системы мигать его на место.
Не так много нужно сказать здесь, но убедитесь, что восстановление работы, прежде чем двигаться дальше, чтобы получить CyanogenMod работает. 100% -Рабочая и надежный режим восстановления является абсолютно необходимым, прежде чем начать тестирование экспериментальной Android строит.

Отрегулируйте recovery_ui.cpp при необходимости

Вы можете обнаружить, что хотя образ для восстановления работает, некоторые из аппаратных кнопок, таких как кнопки регулировки громкости и кнопки питания, которые, как правило, используются для прокрутки опций, не работают.
Возможно, вам придется скорректировать GPIO значения, чтобы получить кнопки, чтобы быть признанным. Точно так же, вы можете включить / исключить варианты или изменить другие элементы пользовательского интерфейса.
Чтобы сделать это, вы можете создавать и редактировать /device/[vendor]/[codename]/recovery/recovery_ui.cpp . Вы можете найти множество примеров этого файла, связанного с ним recovery/Android.mk файл, который строит его, и как она используется.
Полезный совет
Значения GPIO для вашего устройства можно найти в исходных текстах ядра.

Положите вашу папку устройства в GitHub, и использовать локальную манифест на автоматическую синхронизацию его с репо синхронизации

После того, как вы начали свою папку устройства, создать свой ​​собственный GitHub счет и настроить папки в качестве общественного хранилища GitHub . Это отличная возможность узнать о мерзавца , а также ваш источник может быть доступным для тех, кто может сотрудничать с вами.
При именовании репозиторий, используйте формат android_device_VENDOR_CODENAME, где ПОСТАВЩИК и Codename использовать значения нового устройства. Так, скажем, название вашей GitHub счет "жир-шина" и ваш кодовое устройство " на бис ", изготовленный Барнс и благородных. Вы должны обратить ваше хранилище android_device_bn_encore.Это будет доступна на https://github.com/fat-tire/android_device_bn_encore . Точно так же, хранилище ядро будет называться android_kernel_bn_encore. Это будет доступна наhttps://github.com/fat-tire/android_kernel_bn_encore .
Последнее, что нужно сделать, это создать локальную манифест для других людей, чтобы использовать для автоматической загрузки и их держать руку на курсе изменений. Вот пример, с использованием вышеуказанного сценария:
 <?xml version="1.0" encoding="UTF-8"?> <manifest> <project name="fat-tire/android_device_bn_encore" path="device/bn/encore" remote="github" revision="cm-10.1" /> <project name="fat-tire/android_kernel_bn_encore" path="kernel/bn/encore" remote="github" revision="cm-10.1" /> </manifest>
<?xml version="1.0" encoding="UTF-8"?> <manifest> <project name="fat-tire/android_device_bn_encore" path="device/bn/encore" remote="github" revision="cm-10.1" /> <project name="fat-tire/android_kernel_bn_encore" path="kernel/bn/encore" remote="github" revision="cm-10.1" /> </manifest> 
Заметка:
Атрибут пересмотр не является обязательным. Если он опущен, repo sync будет использовать пересмотр, указанный <default ... /> тега в манифесте умолчанию .
После того, как вы тестировали, что местные проявляется файл работает, вы можете передать его на других, которые затем могут опробовать свою работу. В этот момент вы можете продолжать толкать изменения в GitHub, и даже дать другим пользователям доступ для фиксации, так что вы можете работать на устройстве вместе.
Полезный Чаевые Использование других репозиториев
Если вы обнаружите, что по какой-то причине вам нужно заменить или дополнить другие репозитории, предоставляемые CyanogenMod, вы можете добавить дополнительные репозитории, используя местную манифест . Как только вы получили все работает, вы можете использовать Герритом представить материал, найденный в этих хранилищах назад вверх по течению к CyanogenMod.

Добавьте капли на vendor/ каталог

После того, как у вас есть рабочая восстановление, то теперь пришла пора, чтобы получить здание CyanogenMod и работу.
Первое, что нужно сделать, это получить все имущественные, двоичные капли в vendor/ папки, наряду с .mk файла, который будет включать их в финальной версии.
Это требует трех шагов:
  1. Создать extract-files.sh и setup-makefiles.sh скрипты тянуть эти BLOB файлы с устройства, используя adb и положить их в правильном /vendor/ каталога. Есть много примеров, доступных для других устройств.
  2. Создайте .mk Makefile для копирования этих файлов на $OUT папке в процессе сборки и поместить их в нужное место. Опять же, использовать другие устройства в качестве руководства для того, что это Makefile должен выглядеть. Пример файла может быть BoardConfigVendor.mk
  3. Убедитесь, что Makefile вы только что создали входит от вашей основной BoardConfig.mk через команды, такие как -include vendor/[vendor]/[codename]/BoardConfigVendor.mk . Опять же, существующие устройства могут показать, как это делается.

Теперь пересмотреть device/ каталог

Поскольку у вас есть рабочая восстановление, вернуться назад и начать изменения файлов в device/ папки. Как всегда, используют другие подобные устройства в качестве эталона.
Теперь у вас есть легкий способ сделать резервные копии и проверить свои строит. Так начать настройку папку само устройство, и посмотреть, если вы получите его в придачу ... Как только вы это сделаете, оттуда его дело здания и поддержки различных частей и периферийных устройств, один-на-один.

Получение справки от производителей & поставщиков

Многие из производителей (производителей оригинального оборудования), которые делают основную платформу, используемую устройством часто предоставляют вики, документацию и примеры кода, которые могут помочь вам в подготовке вашего порта. Вы увидите, что некоторые компании более дружественным для сообщества разработчиков, чем другие. Вот некоторые из наиболее распространенных производителей и поставщиков, а также веб-сайты и хранилищ, которые могут помочь.
(Этот список неполон. Пожалуйста, помогите добавить к нему)
OEMПлатформаХранилища / Ресурсы
GoogleразличныйGoogle в Git репозиторий , Nexus бинарные капли
HTCразличныйDev Center
LenovoразличныйLenovo Смартфоны (Поиск устройства)
LGразличныйLG Open Source Code распространения
MotorolaразличныйMotorola Источник центр Open
NvidiaTegraGitWeb Tegra в
QualcommМСМ / QSDКод Аврора Форум
SamsungразличныйSamsung Источник Центр открытого выпуска
Texas InstrumentsOMAPwww.omapzoom.com , Omappedia
Иногда, если у вас есть вопросы, вы можете даже обратиться к разработчикам по электронной почте или форумах поддержки.

Добавление XML наложений

Это весьма вероятно, в вашей device_[codename].mk файла, есть линия, которая выглядит следующим образом:
  DEVICE_PACKAGE_OVERLAYS: = \
     Устройство / [продавец] / [кодовое] / накладка
Что это делает это установить overlay/ папку, чтобы позволить вам переопределить любой XML файл, используемый для Android рамок или приложений, только для этого устройства.Чтобы сделать это, создайте структуру каталогов, которая отражает путь, ведущий к XML-файла, начиная с корневой папке. Затем замените файл, который нужно наложить.
Пример: Допустим, вы хотите, чтобы переопределить некоторые стандартные настройки Android. Посмотрите файл в frameworks/base/core/res/res/values/config.xml . Затем скопируйте его в device/[vendor]/[codename]/overlay/frameworks/base/core/res/res/values/config.xml . Теперь ваша версия будет использоваться вместо другого. Вам нужно всего лишь включить настройки, которые вы хотите override-- не все из них, так что вы можете срезать файл для тех немногих, что изменения от дефолта.
Можно наложить любой XML файл, затрагивая макеты, настройки предпочтений, переводы и многое другое.

Сделать ядро и модули ядра построить из источника

Если вы ранее использовали предварительно построенный ядро, вы можете в какой-то момент хотят терять ядро ​​с нуля.
Смотрите инструкцию о том, как изменить BoardConfig.mk файл, чтобы сделать CyanogenMod построить ядро и все необходимые модули ядра автоматически .

Вывод

Там нет образом одна страница Вики расскажет вам все, что вам нужно знать, чтобы сделать порт от начала до конца. Тем не менее, мы надеемся, теперь у вас есть понимание того, как вещи созданы и действия, которые необходимо предпринять. Вы всегда обратиться за помощью на форумах или на IRC . Другие с той же устройства могут прыгать на помощь тоже.
Надеюсь, вы найдете процесс полезным и познавательным. И это принесу тебе улицы креди также.
Когда вы все сделали, и ваш порт работает лучше, чем наличие ... когда она стабильна и блестящими и чудесный и замечательный ...
Вы можете внести свой ​​вклад вашу работу вверх по течению. Вот инструкции для того, как сделать это.
Удачи!

Смотрите также