Портирование программного обеспечения
Портирование прошивок с утройства на устройство с процессором MT657x
Внимание! Инструкция понятная и рабочая(сам ей пользуюсь).Нужна для телефонов с процессором MT657x, как правило китайских.
Для одних смартов есть кастом, а для других только сток и это не справедливо, но если делать всё по инструкции, то кастом будет у всех.Хорошая инструкция нужна для «красных»телефонов.Инструкцию нашёл чудом.
Отдельная благодарность Bobs’у, что разрешил разместить это.
Портирование прошивок для устройств с процессором MT657x
Нельзя портировать прошивки, например с MT6575 на MT6577. И базовая, и стоковая прошивка должны быть для одного процессора.
Обе прошивки должны быть одной версии ОС
Инструкцию написал пользователь back37 с форума forum.china-iphone.ru.
Предварительно прочитайте полностью.
Берем рабочую прошивку для своего устройства (БАЗА);
Берем портируемую прошивку для CWM (ПОРТ).
В ПОРТ c заменой скидываем папки из БАЗЫ :
Идем в META-INF/com/google/android ПОРТА, открываем updater-script.
Если есть строки:
дописываем их в конец скрипта.
Прошивка получится в папке ПОРТА. Теперь все это нужно запаковать с обычным сжатием в zip (Если вы распаковывали). И обязательно подписать signscript’ом(скачать под топиком).
Прошиваем. Если висит на лого больше 10 минут, уже не загрузится. Надо править boot.img, а именно распаковать оба бута и скинуть папку rmdisk из ПОРТА в БАЗУ с заменой. Распаковать/Запаковать boot.img можно этой программой. Получившийся бут (если название new_image.img, переименуйте на boot.img) засунуть в архив с прошивкой и опять подписать.
Если в вашей прошивке после портирования что-то не работает, не факт, что после манипуляций, приведенных ниже, это будет работать. Но попробовать стоит .
Здесь написано, какие файлики отвечают за работу разных модулей(GPS, Bluetooth, Wi-Fi, радио и т.д.) Попробуйте позаменять их тоже.
Не работает GSM, 3G — меняем папку /system/etc/firmware;
Не работает Wi-Fi — меняем файлы /system/bin/p2p_supplicant; /system/bin/wpa_supplicant.
Не работает камера — меняем /system/lib/libcameracustom.so
Проблемы со звуком — меняем /system/lib/libaudiosetting.so
Не работает радио — заменяем system/lib/libaudiosetting.so и libfmcust.so
Слышны хрипы/звуковые артефакты заменяем system/lib/soundfx
Не работают аппаратные клавиши меняем папку system/usr/keylayout
Также, кто умеет собиратьразбирать ядра пишите в комменты, либо название прог по разборкесборке ядер.
ОСНОВНЫЕ ПРИНЦИПЫ ПОРТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
магистрант 1 курса, кафедра систем управления и компьютерных систем БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова,
канд. технических наук, доцент, доцент кафедры систем управления и компьютерных систем БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова,
Под портированием понимают адаптацию некоторой программы или её частей, другими словами перенос из одной среды в другую, с максимальным сохранением пользовательских свойств. Проблема переносимости программных продуктов между различными программно-аппаратными платформами, появилась достаточно давно. Первые предпосылки были в начале семидесятых годов, когда возник вопрос о переносимости ОС UNIX на новые аппаратные платформы. Время шло и вместе с ним росла сложность программных продуктов, а, следовательно, усложнялся процесс их переноса. А ведь для многих компаний это был ключевой вопрос, так как возможность быстрого портирования предоставляла шанс закрепиться на мировом рынке. Однако не все производители уделяют этому столь большое внимание. Причиной может являться небольшая аудитория пользователей, недостаток средств или финансирования и т.д. Помимо этого, переносимое программное обеспечение имеет свои недостатки, например, потеря производительности работы программы на новой аппаратной платформе, большой объём работ, жесткая привязка к аппаратуре при более сложной организации целевой платформы.
Но если перед нами станет вопрос о переносимости того или иного программного обеспечения, то с чего необходимо начать и в какую сторону двигаться? Самым главным аспектом являются знания аппаратного обеспечения, как исходного, так и целевого. Имея необходимый запас знаний, необходимо провести анализ препятствий, которые могут возникнуть в ходе процесса портирования, например, различия в аппаратуре, организации памяти, сигналах, библиотеках, структуре файловых систем и т.д. При этом необходимо помнить, что результатом процесса портирования является точно такое же поведение программного продукта. Процесс портирования можно разбить на несколько абстрактных этапов:
- Изучение особенностей строения, работы аппаратного обеспечения и операционных систем.
- Выбор средств реализации.
- Выбор метода переноса программного продукта.
Как уже упоминалось выше, первое с чего необходимо начать процесс портирования (после определения целей и ответа на главный вопрос, имеет ли это смысл?) это изучение соответствующей литературы, для более детального понимания строения и особенностей той или иной операционной системы и аппаратной платформы. Следует отметить, что большое количество “подводных камней”, кроется именно в операционных системах. Ведь в общем случае, необходимо учитывать общие свойства ОС, такие как: коллизии между включаемыми файлами, разные форматы объектных файлов, различие в обработке сигналов (при условии, что семантика сигналов одинакова). Так же необходимо учесть, что могут быть различны соглашения об именах файлов и, возможно, самое главное – это корректность написанной документации (или вовсе ее отсутствие). При возникновении коллизии между включаемыми файлами, можно попробовать обойти эту проблему, путем написания собственных библиотек, соответствующих стандарту целевой операционной системы, с соблюдением корректности работы всех исходных алгоритмов. При различных форматах объектных файлов, необходимо подобрать такую программу-компоновщик, которая создаст “корректные” объектные файлы для целевой операционной системы. Из-за использования иной программы-компоновщика, могут возникать различные ошибки, связанные с несовместимостью, требующие изменения исходных текстов или входных параметров. При различиях в алгоритмах обработки сигналов (при условии одинаковой семантической составляющей) необходимо воспользоваться средствами конечной операционной системы и внести соответствующие изменения в алгоритмы работы программы, после получения сигнала, так как в противных случаях, могут возникать различные ошибки, в дальнейшей работе.
При использовании языков высокого уровня С/С++, в качестве основных языков, для осуществления процесса портирования, необходимо отдать должное внимание генерации кода, осуществляемое компилятором. К этому моменту необходимо подходить с особым вниманием и стараться обходить такие ситуации. Часто для решения таких проблем используют макроподстановки. Очень важным свойством в различных операционных системах, является количество символов, которые распознаются в именах внешних объектов и функций. Нельзя забывать, что корректная переносимость должна включать в себя, уникальность первых 6 (8) символов имен функций или объектов. При этом не стоит забывать, что имена должны быть корректны – иметь некий смысл. При этом могут возникать ситуации, когда конечные системы будут использовать большее или меньшее количество первых символов уникальности имён. Именно с помощью макроподстановок, можно решить данную проблему, то есть отображать истинные имена объектов и функций в сокращенном виде, которые будут уменьшаться в требуемую длину символов. Так же нельзя забывать о разном представлении чисел, в различных операционных системах, так как диапазон целого числа типа int в стандартах не указан (сказано про то, что он должен быть от -32767 до 32767), аналогично имеет смысл производить замену float на double (при этом округление чисел с плавающей точкой на разных системах происходит по-разному).
При необходимости переноса программного обеспечения, важно иметь нацеленность на конечный результат и уделять большое внимание промежуточным тестированиям.
Так какими же способами можно переносить программное обеспечение? Выбор метода напрямую зависит от систем, с которыми пользователь имеет дело.
- Повторное использование бинарных файлов. Упростить процесс портирования можно если старая и новая версии системы будут схожи на бинарном уровне, иными слова новая система поддерживает двоичный интерфейс приложений (ABI). Следовательно, появляется возможность использовать двоичные файлы старой системы. Но и тут имеются “подводные камни”. Форматы файлов на старой и новой системе могут существенно отличаться (т.к. формат файла связан непосредственно с аппаратной частью). Тоже самое можно сказать про наборы библиотек и функций. Полного различия быть не может, но частые разнообразные пересечения и конфликты имеют место быть. Очень часто, данные упрощения применимы если у старой и новой системы один производитель.
- Переиспользование исходных текстов на языках высокого уровня. Альтернативной заменой способа, описанного выше, является повторное использование исходных текстов, то есть применение одного и того же исходного текста для сборки приложений. Для корректного осуществления данного метода, необходимо использовать трансляторы с одинаковым набором библиотек, но трансляторы для различных систем, разрабатываются различными производителями и могут иметь существенные отличия, которые, естественно, необходимо учитывать. Часть этой проблемы облегчается следованием международным стандартам, но не все трансляторы, по той или иной причине, в полной мере поддерживают эти стандарты.
- Виртуализация. Возможность запускать приложения на виртуальной машине (виртуальная машина – программная и/или аппаратная система, имитирующая некоторое аппаратное обеспечение, некоторой платформы) в основном зависит от возможностей самой машины. Но и тут имеются свои трудности. Например, программы, работающие с аппаратурой напрямую, могут не иметь доступа к устройствам виртуальной машины. Вторым недостатком является ресурсоемкость. Это связано с тем, что по мимо виртуальной машины, так же следует предоставить необходимый набор ресурсов для программного продукта.
- Эмуляция. В ряде определенных случаев операционная система может обеспечить бинарную совместимость с другой системой, за счет дополнительных средств. В наше время существуют специальные программы (эмуляторы), позволяющие загружать файлы операционных систем, при помощи использования транслятора. Транслятор загружает файлы необходимого формата и преобразует вызовы функций, осуществляемые внутри файла в соответствующие вызовы текущей операционной системы. К недостаткам, данного способа, можно отнести неполноту реализации. Например, если программное обеспечение использует недокументированные возможности программного продукта, то при попытке запуска, скорее всего возникнут ошибки. Вторым недостатком является невысокая производительность. Эта проблема решается путём низкоуровневого взаимодействия с системой. Но из этого могут вытекать ошибки, связанные с жёсткой привязкой к аппаратуре.
В конечном итоге, при необходимости переноса программного продукта, стоит внимательно отнестись ко способам, которыми предстоит пользоваться и большое внимание уделять отладке, после каждого, пусть и незначительного “переноса” из старой системы в новую, ведь даже малейшая пропущенная ошибка может вызвать некорректную работу на последующих шагах, а ее поиск и устранение, в конечном итоге растянется на довольно длительное время.
Как портировать прошивки на Андроид?
Портирование прошивок интересует многих продвинутых пользователей, которые хотят адаптировать свое устройство для другой среды с сохранением её полезных свойств. Обычно основная цель этого процесса — сделать прошивку на своём гаджете «интереснее» и расширить её функционал. Давайте рассмотрим, как всё это происходит на технике Android с платформой ARM.
Каждый из пользователей хотел бы добавить в свой гаджет что-то оригинальное
Что нужно для портирования прошивок?
Для осуществления этого процесса требуются следующие составляющие:
- Приложение Notepad или другой текстовый редактор (впрочем, эта программа считается наиболее удобной и продуманной среди остальных).
- Архиватор WinRar.
- Компьютер, через который осуществляется весь процесс.
- Два ROM`а с одинаковыми ядрами — один является источником для передачи данных прошивки, на другом мы будем собирать их для программного обеспечения.
Как происходит портирование прошивки?
Прежде всего, мы создаём backup папку на компьютере, копируя с директории system/app на ПК такие файлы с расширением .apk:
Затем, на устройстве, где мы будем собирать прошивку (его другое название — BROM) мы удаляем эти файлы, а вместо них копируем из источника, который ещё называется PROM следующие директории:
Ещё на базовый ROM мы копируем в папку /system/lib библиотеку libandroid_runtime.so. Теперь мы снова перемещаем в BROM прежде удалённые файлы из первого действия.
В последующем мы делаем копию таких библиотек из базового ROM’а в PROM, как:
Обратите внимание, что копирование производится с заменой существующих на другом оборудовании данных, а не в качестве их дополнения. Теперь мы удаляем три эти директории на BROM и на их место копируем всё из PROM`а.
Переходим к работе с редактором Notepad и выполняем следующие действия:
- Открываем на каждом ROM`е файл build.prop и размещаем оба окна друг напротив друга.
- Сверяем, чтобы запись ro.build.description= совпадала на обеих устройствах, иначе не удастся выполнить прошивку. Если нужно, редактируем строку так, чтобы записи в PROM и BROM были идентичны.
- Переходим по пути /META-INF/com/google/android и теперь открываем для сверки файлы под названием updater-script. Если они не идентичны, то корректировать их необходимо так, чтобы в BROM`е совпадало значение, которое указано в портируемом ROM`е.
Примечание. Вы можете редактировать или добавлять такие параметры, как ядро или permissions, asserts, ui_prints, run_programs, но ни в коем случае не меняйте значение symlinks.
Последнее, что необходимо сделать — проверить в скрипте updater параметр Format values на базовом ROM`е (указанные данные должны подходить для вашего оборудования). Если у двух ядер разные производители, обязательно распакуйте ядро и скопируйте из портируемого ROM`a данные BOOTCLASSPATH на BROM по адресу init.rc.
После всех выполненных действий прошивка окажется в базовом ROM`е, а вы сможете дополнить её по своему усмотрению. Как видите, весь процесс занимает немного времени и не требует особых знаний. Поэтому вы вполне можете справиться с портированием прошивок самостоятельно.
Принципы переноса ранее разработанных приложений на смартфон
Общие принципы портирования приложений
Презентацию к лекции Вы можете скачать здесь.
Портирование приложений
Портирование – адаптация некоторой программы или её части, чтобы она работала в другой среде, отличающейся от той среды, под которую она была изначально написана с максимальным сохранением её пользовательских свойств.
Процесс портирования также называют портированием или переносом, а результат — портом. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с программой. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.
Необходимость в портировании возникает обычно из-за различий в системе команд процессора, различий между способами взаимодействия операционной системы и программ (API — Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.
Международные стандарты значительно упрощают портирование. Они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1), сводится к перекомпиляции программы на новой платформе. Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как GCC, предоставляющий неизменный язык программирования на различных платформах.
Некоторые языки программирования высокого уровня достигают портируемости путем трансляции исходного кода в промежуточный язык, имеющий компиляторы для многих процессоров и операционных систем.
Термин портирование часто применяется к компьютерным играм, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (персонального компьютера, игровой приставки или мобильного устройства) на другую платформу.
На рис. 7.1 представлен пример портированной программы.
Технические особенности смартфонов, влияющие на работу приложений
При портировании десктопных приложений на смартфон следует учитывать возможности мобильного устройства, отличные от возможностей персонального компьютера. Они оказывают существенное влияние на работоспособность приложений, но при этом у разработчиков появляются новые способы взаимодействия с пользователем.
К особенностям смартфонов, требующим особого внимания при разработке приложений, относятся:
- Ограниченный доступный объем памяти, как оперативной, так и используемой для хранения пользовательских приложений.
- Сравнительно невысокая скорость обработки информации.
- Слабый графический процессор.
- Ограниченный срок работы устройства от батареи.
- Небольшой экран.
С другой стороны, смартфоны обладают возможностями, отличными от традиционных для обычных компьютеров:
- Сенсорный экран. Здесь отличие только от традиционных ноутбуков, десктопов и нетбуков, т.к. планшеты и ультрабуки тоже обладают возможностями сенсорного ввода.
- Наличие датчиков gps, гироскопа, акселерометра и других, позволяющих использовать изменение положения устройства в пространстве.
- Небольшой размер позволяет легко переключаться между горизонтальным и вертикальным расположением экрана в отличие от устройств с физической клавиатурой.
Особенности портирования приложений на мобильные платформы
С одной стороны, основные принципы проектирования для мобильных устройств являются общими для всех платформ. С другой стороны, при разработке приложения под конкретную систему и Android в том числе необходимо учитывать ее особенности.
Разработка мобильного приложения “с нуля” состоит из нескольких важных этапов:
- Постановка задачи.
- Создание прототипа (бумажного или приложения-заглушки).
- Определение системных требований и выбор инструмента.
- Работа над графикой и дизайном приложения и разработка приложения (эти процессы обычно выполняются разными людьми и идут параллельно).
- Тестирование и оптимизация.
- Подготовка и публикация приложения в магазине.
- Сбор аналитики и получение обратной связи.
- Исправление недочетов и выпуск обновлений.
При портировании приложения на Android есть некоторые отличия от описанного процесса. Задача уже поставлена, есть работающий код, который хотелось бы использовать с минимальными изменениями. Готовое приложение нужно будет готовить к публикации и т.д. абсолютно таким же образом. Но на остальных этапах есть значительные отличия:
- Интерфейс, графические элементы и дизайн необходимо продумать на этапе прототипирования и переделать подходящим образом.
- Необходимо выбрать наиболее удобный инструмент разработки.
- При разработке нужно будет подключить работающий код портируемого приложения.
- В процессе тестирования и оптимизации возможны значительные изменения в коде исходного приложения (например, при работе с графикой), к этому надо быть готовым.
При выборе платформы разработки приложения необходимо сначала определиться с ее типом. Существуют три варианта: родная (нативная), Web и гибридная.
Родные (нативные) платформы позволяют создавать приложения, которые замечательно выглядят и воспринимаются, а также обеспечивают сравнительно высокую производительность. Оборотная сторона разработки родных приложений ? для каждой платформы нужно писать свой код. Портирование нативных приложений наиболее сложное.
Мобильные Web-приложения обычно пишут на HTML5, CSS и JavaScript. Их можно написать один раз и запускать на разных платформах, но такие приложения могут уступать родным по внешнему виду, восприятию и производительности. Портирование не представляет особых сложностей.
Гибридные инструменты и среды ликвидируют этот разрыв, сочетая в себе простоту программирования и универсальность Web-приложений с блеском родных приложений. Портирование гибридных приложений зависит от многих факторов, которые могут как упрощать, так и усложнять процесс перехода на другую платформу.
Перед портированием необходимо произвести разделение платформенно-зависимых и платформенно-независимых частей программы. Если при проектировании исходного приложения соблюдался принцип отделения интерфейса от реализации, переделать его под другую платформу будет гораздо проще.
Портирование программного обеспечения
- Порти́рование (англ. porting) — в программировании под порти́рованием понимают адаптацию некоторой программы или её части, с тем чтобы она работала в другой среде, отличающейся от той среды, под которую она была изначально написана с максимальным сохранением её пользовательских свойств. В этом основное отличие понятий порт и форк — в первом случае все пользовательские свойства пакета стараются сохранить, а во втором — это базирующаяся на общей основе самостоятельная разработка с новыми полезными свойствами.
Процесс портирования также называют портированием или переносом, а результат — портом. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с пакетом и его свойств. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.
Портируемость (переносимость, англ. portability) обычно относится к одной из двух вещей:
Портируемость — как возможность единожды откомпилировав код (обычно в некоторый промежуточный код, который затем интерпретируется или компилируется во время исполнения, «на лету», англ. Just-In-Time), затем запускать его на множестве платформ без каких-либо изменений.
Портируемость — как свойство программного обеспечения, описывающее, насколько легко это ПО может быть портировано. По мере развития операционных систем, языков и техники программирования, становится всё проще портировать программы между различными платформами. Одной из изначальных целей создания языка Си и стандартной библиотеки этого языка — была возможность простого портирования программ между несовместимыми аппаратными платформами. Дополнительные преимущества в плане портируемости могут иметь программы, удовлетворяющие специальным стандартам и правилам написания (см., например: Smart Package Manager).Необходимость в выполнении портирования возникает обычно из-за различий в системе команд процессора, различий между способами взаимодействия операционной системы и программ (API — Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.
Международные стандарты (в частности, продвигаемые ISO) значительно упрощают портирование, благодаря тому что они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1) сводятся к перекомпиляции программы на новой платформе.
Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как GCC, предоставляющий неизменный язык программирования на различных платформах.
Некоторые языки программирования высокого уровня (Eiffel, Esterel) достигают портируемости путём трансляции исходного кода в промежуточный язык, имеющий компиляторы для многих процессоров и операционных систем.
Термин портирование часто применяется к компьютерным играм, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (персонального компьютера или игровой приставки) на другую платформу. Ранние порты видеоигр, по сути, были результатом значительного или полного переписывания программы, но всё больше современных игр разрабатывается с использованием программного обеспечения, позволяющего генерировать код как для компьютеров, так и для одной или нескольких игровых приставок.
Применительно к видеоиграм, портом также может называться улучшенный осовремененный движок, заменяющий исполняемые файлы игры и требующий для своей работы оригинальные файлы с ресурсами игры. Такие порты не обязательно делаются для программной и аппаратной совместимости — часто целью является расширение возможностей игры, сдерживаемых устаревшим примитивным движком.
В зависимости от того, для чего первоначально разрабатывалось то или иное программное обеспечение, его называют родным или портированным. Родное (англ. native) ПО разрабатывается сразу для той платформы (аппаратного обеспечения и/или операционной системы), о которой идёт речь. Портированное (англ. ported) ПО разрабатывается для одних платформ, после чего переносится для работы на других платформах.
Связанные понятия
Кросс-платформенность или межплатформенность — способность программного обеспечения работать с двумя и более аппаратными платформами и (или) операционными системами. Обеспечивается благодаря использованию высокоуровневых языков программирования, сред разработки и выполнения, поддерживающих условную компиляцию, компоновку и выполнение кода для различных платформ. Типичным примером является программное обеспечение, предназначенное для работы в операционных системах Linux и Windows одновременно.
Моби́льная игра́ — игровая программа для мобильных устройств, например сотовых телефонов, смартфонов, коммуникаторов, КПК и прочих (за исключением ноутбуков).
Свободные ядра, библиотеки, среды рабочего стола и другие компоненты используются как в свободных операционных системах, так и во включающих несвободное ПО, или состоящих из него почти полностью.
Фанатские игры — компьютерные игры, сделанные поклонниками одной или нескольких существующих игр или игровых серий. Многие фан-игры создаются как в качестве попытки клонирования или создания ремейка оригинального дизайна, геймплея и персонажей. Однако в большинстве случаев, фанаты создают уникальную игру, используя вдохновившую игру в качестве прообраза. Хотя качество фан-игр всегда варьировалось, но при текущем уровне развития технологий существует огромное число инструментов, упрощающих создание.
Портирование прошивок с утройства на устройство с процессором MT657x
Внимание! Инструкция понятная и рабочая(сам ей пользуюсь).Нужна для телефонов с процессором MT657x, как правило китайских.
Для одних смартов есть кастом, а для других только сток и это не справедливо, но если делать всё по инструкции, то кастом будет у всех.Хорошая инструкция нужна для «красных»телефонов.Инструкцию нашёл чудом.
Отдельная благодарность Bobs’у, что разрешил разместить это.
Портирование прошивок для устройств с процессором MT657x
Нельзя портировать прошивки, например с MT6575 на MT6577. И базовая, и стоковая прошивка должны быть для одного процессора.
Обе прошивки должны быть одной версии ОС
Инструкцию написал пользователь back37 с форума forum.china-iphone.ru.
Предварительно прочитайте полностью.
Берем рабочую прошивку для своего устройства (БАЗА);
Берем портируемую прошивку для CWM (ПОРТ).
В ПОРТ c заменой скидываем папки из БАЗЫ :
Идем в META-INF/com/google/android ПОРТА, открываем updater-script.
Если есть строки:
дописываем их в конец скрипта.
Прошивка получится в папке ПОРТА. Теперь все это нужно запаковать с обычным сжатием в zip (Если вы распаковывали). И обязательно подписать signscript’ом(скачать под топиком).
Прошиваем. Если висит на лого больше 10 минут, уже не загрузится. Надо править boot.img, а именно распаковать оба бута и скинуть папку rmdisk из ПОРТА в БАЗУ с заменой. Распаковать/Запаковать boot.img можно этой программой. Получившийся бут (если название new_image.img, переименуйте на boot.img) засунуть в архив с прошивкой и опять подписать.
Если в вашей прошивке после портирования что-то не работает, не факт, что после манипуляций, приведенных ниже, это будет работать. Но попробовать стоит .
Здесь написано, какие файлики отвечают за работу разных модулей(GPS, Bluetooth, Wi-Fi, радио и т.д.) Попробуйте позаменять их тоже.
Не работает GSM, 3G — меняем папку /system/etc/firmware;
Не работает Wi-Fi — меняем файлы /system/bin/p2p_supplicant; /system/bin/wpa_supplicant.
Не работает камера — меняем /system/lib/libcameracustom.so
Проблемы со звуком — меняем /system/lib/libaudiosetting.so
Не работает радио — заменяем system/lib/libaudiosetting.so и libfmcust.so
Слышны хрипы/звуковые артефакты заменяем system/lib/soundfx
Не работают аппаратные клавиши меняем папку system/usr/keylayout
Также, кто умеет собиратьразбирать ядра пишите в комменты, либо название прог по разборкесборке ядер.