#android #sdk #reverse-engineering #porting #rom
#Android #sdk #реверс-инжиниринг #перенос #пзу
Вопрос:
Только что увидел, что они перенесли Ice Cream Sandwich на Nexus One.
«Они» сделали это, используя SDK для создания ПЗУ.
Может ли кто-нибудь дать общее представление о том, как это работает? (Как вы используете SDK для создания ПЗУ)
Почему это позволяет некоторым частям работать, но тогда другие части (например, Wi-Fi) не работают?
Комментарии:
1. Я не хочу этого делать, так что не нуждаюсь в деталях. Просто хочу понять концепцию.
Ответ №1:
SDK включает файл system.img, который содержит основную часть прошивки телефона. Помимо этого, важными частями прошивки являются загрузчик (который зависит от аппаратного обеспечения, а не от версии Android) и ядро (которое настроено для аппаратного обеспечения, хотя в нем могут быть некоторые особенности версии Android).
Скорее всего, они просто взяли куски из system.img и смогли получить приемлемую загрузку. Обычно это приводит к тому, что некоторые части (например, Wi-Fi, как вы упомянули) не работают из-за различий в требованиях между более старым ядром и более новым системным образом.
Ответ №2:
Вероятный рабочий процесс:
- Получите SDK, установите его и убедитесь, что он способен компилировать программы
- Перенос означает «переписывание системных модулей для обеспечения работы всей системы в новой plataform». В хорошо спроектированной системе существует четкое разделение того, что является системно-зависимым модулем (например, для записи байтов в массовое хранилище), а что является модулем более высокого уровня (например, для записи в файл). Уровень разделения и абстракции, который должна обеспечивать базовая система, определяется потребностями операционной системы (в данном случае Android).
- Само ПЗУ, вероятно, представляет собой двоичный образ, который загружается в ОЗУ загрузчиком (и именно поэтому загрузчик зависит от аппаратного обеспечения). Затем загрузчик передает управление образу ОЗУ, который компилируется и создается SDK таким образом, чтобы он содержал двоичный код, понятный конкретному процессору Nexus One.