Android — Как работает порт SDK?

#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:

Вероятный рабочий процесс:

  1. Получите SDK, установите его и убедитесь, что он способен компилировать программы
  2. Перенос означает «переписывание системных модулей для обеспечения работы всей системы в новой plataform». В хорошо спроектированной системе существует четкое разделение того, что является системно-зависимым модулем (например, для записи байтов в массовое хранилище), а что является модулем более высокого уровня (например, для записи в файл). Уровень разделения и абстракции, который должна обеспечивать базовая система, определяется потребностями операционной системы (в данном случае Android).
  3. Само ПЗУ, вероятно, представляет собой двоичный образ, который загружается в ОЗУ загрузчиком (и именно поэтому загрузчик зависит от аппаратного обеспечения). Затем загрузчик передает управление образу ОЗУ, который компилируется и создается SDK таким образом, чтобы он содержал двоичный код, понятный конкретному процессору Nexus One.