Как портировать прошивку с одного телефона на другой с разными процессорами

Обновлено: 06.07.2024

Несколько лет назад, когда я впервые познакомился с Android, я услышал от своего коллеги по работе, что Android предусматривает возможность установки модифицированных или самодельных прошивок. Признаться, тогда я был далек от этого. И даже пол года назад меня едва интересовали подобные вещи. Глубоко в душе, я был уверен: то, что делает производитель, уже предназначено для нормального использования.

Каково же было мое разочарование, когда я приобрел телефон из поднебесной, где заводскими настройками было запрещено использование Google, Skype, Facebook и других приложений. В принципе, на некоторые вещи можно было закрыть глаза, но когда мой телефон не подразумевал использование учетной записи Google — я взял с себя обещания обязательно разобраться во что бы мне это не стало.

Прошло пол года и мои кастомные прошивки с успехом используются по всему миру.

В данной серии статей пойдет речь о том, как делать reverse программирование для Android, реализовывать патчи, твики и моды.

Преамбула

И так! Давайте сперва определимся с понятиями, которые будут использоваться в данной статье. Ваше привычное понимание, при этом, может сильно отличаться.

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

Также хочу заметить, что все примеры будет взяты для телефона HTC, но это не значит, что данная информация не может быть использована на других телефонах.

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

Подготовка среды

Обойдусь без подробных инструкций как пользоваться тем или иным программным обеспечением. Если вам интересна данная статья и вы дочитали до этих строк, то я надеюсь, что вы уже опытный пользователь и имеете опыт использования, ну или хотя бы экспериментирования в данной области. Инструкций, статей и результатов тестирования полно в открытом доступе, впрочем, как и на Хабре. Также обойдусь без описания некоторых терминов, иначе статья получится очень большой и нудной. Будем писать только по делу. Уверен, что среда у вас уже давно стоит. Если нет, то предлагаю скачать и установить.

1. Android SDK. Это среда разработки приложений для Андроид. Для того чтобы делать модификации, нам обязательно придется проверять наш программный код. Среда разработки самое лучшее, что мы можем использовать.
2. Android Kitchen. Данная утилита позволит вам работать с образами системных партиций официальной ну или неофициальной прошивки.
3. JD-GUI. Декомпилятор программного кода языка Java. Сразу отмечу, что это самый лучший декомпилятор в плане удобства использования.
4. DJ Java Decompiler. Еще один декомпилятор, или дизассемблер, как некоторые любят называть, программного кода языка Java. Не удобен в плане использования, но разбирает код, который иногда не понимает JD-GUI.
5. smali. Еще один дизассемблер, но уже dalvik кода. smali нужен для дизассемблирования, а backsmali ассемблирования кода.
6. dex2jar. Утилита для конвертации исполняемых файлов Dalvik кода.

Преобразование прошивки

Разумеется, прошивка, которая стоит у вас на телефон от производителя оптимизирована с целью сокращения энергопотребления. Для того чтобы прошивку можно было изменять, ее необходимо преобразовать в формат, позволяющий изменять код. Для этого используется Android Kitchen. Можно конечно и руками, как я и делал раньше, пока не нашел эту самую «кухню». Как вытаскивать системную область из телефона, устанавливать среду, делать DEODEX прошивки, вы можете прочитать в интернете. Если вам уже ничего не понятно, я думаю стоит повременить со статьей, пока вы не наберете достаточно опыта.

После того, как прошивка из оптимизированного вида (ODEX — оптимизированный dalvik исполняемый код, если мне не изменяет память) стала DEODEX (то бишь НЕ оптимизированной), все исполняемые файлы готовы к модификации.

Непосредственно модификации

Создание патчей

Как я уже и рассказывал, мой телефон изначально имел запрет на использование Google. Ну хоть ты тресни, на Playstore не зайти, учетную запись не настроить, телефонная книга толком не синхронизируется. Зачем нужен такой Android? Долго копаясь в логах (logcat) самого устройства, я нашел записи, которые говорили о том, что использование Google запрещено. Самое не удобное в Android, вы видите лог, но не знаете какое системное приложение его производит. Чтобы отыскать от куда ноги растут, мне пришлось распотрошить все системные приложения до дизассемблированного Java кода. Это заняло достаточно времени, но я до сих пор пользуюсь проделанной работой при анализе и поиске нужного кода. Этапы получения подобного инструментария следующие:
1. Сделать DEODEX всей прошивки
2. Вашу новую DEODEX прошивку надо будет собрать и прошить на телефон. Как это делается — тема другой статьи.
3. Из каждого файла, находящегося в /system/framework вытащить файл classes.dex и переконвертировать в JAR посредством dex2jar.
4. Каждый полученный JAR открыть в JD-GUI и пере-сохранить в исходный код
5. Распаковать исходный код из архива.

В итоге у меня получилось столько папок, сколько было JAR файлов в /system/framework, и каждая папка имела структуру исходных кодов Java.
Путем несложных манипуляций, я быстро отыскал то место, которое генерировало записи в logcat.

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

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

Код находился в файле HTCExtension.jar, а класс, который содержал данную подпрограмму находился в \com\htc\util\contacts\BuildUtils$Customization.java

Распаковка и анализ оригинального файла

1. Сперва нам надо взять оригинальный DEODEX JAR файл, который отвечает за нужную нам часть кода. В нашем случае HTCExtension.jar.
2. Открыть любым архиватором и вытащить от туда classes.dex
3. С помощью конвертера dex2jar преобразовать его в JAR файл. Команда: dex2jar.bat classes.dex
4. Открыть полученный classes_dex2jar.jar файл в JD-GUI.
5. Да, чаще всего JD-GUI декомпилирует код не так как он выглядит в оригинале, оно и понятно, но читать вполне можно. В исходнике мы видим, что подпрограмма проверяет параметры проекта и языковой флаг прошивки. В нашем прискорбном случае возвращается значение TRUE.

6. Чтобы сделать патч, нам надо дизассемблировать сам Dalvik код. Для этого используем baksmali. Удобнее всего создать отдельную папку и положить туда три файла вместе: HTCExtension.jar, smali.jar и baksmali.jar. Даем команду java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

- это API вашей версии Android. Для JB - это 16
- папка, где находятся все фреймворки прошивки.

В моем случае это была команда
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7. В нашей вновь созданной папке появилась папка HTCExtension, а в ней наши файлы с Dalvik кодом.
8. Отыскиваем файл по пути \com\htc\util\contacts\BuildUtils$Customization.java и смотрим код:

9. Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде
происходит присваивание переменной v0 значение 1, то есть TRUE. Далее идут всякие проверки, и если телефон не китайский, то значение переменной изменяется:

10. Самый простой способ спасти отца русской демократии, это изменить код на следующий:
, то есть поменять значение переменной с 1 на 0. То есть что бы ни было, всегда бы возвращалось значение FALSE и в JD-GUI код выглядел бы как
11. Да, метод ,будет работать. Но мы же не ищем легких путей - это раз. Во-вторых не совсем красиво. Хочется кода что-то вроде

12. А как нам получить Dalvik код данного исходного кода? Для новичков мы сделаем небольшой трюк.

Создание Dalvik кода

1. Открываем Android SDK.
2. Создаем новый проект, и в наш единственный тестовый класс пишем следующий код

3. Компилируем наш проект и затем берем собранное приложение из рабочей области.
4. Кладем собранное приложение в папку, где мы с вами потрошили JAR файл.
5. Даем команду
8. Все, код для патчинга готов.

Накатывание патча

1. Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает.
2. Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем \com\htc\util\contacts\BuildUtils$Customization.java файле.

3. Сохраняем файл. Да, забыл сказать, редактор нужен нормальный, например Notepad++ или EditPlus. Кому какой нравится.

Компиляция и сборка патченного JAR файла

1. С помощью backsmali мы распотрошили наш JAR файл, а теперь его надо собрать обратно.
2. Даем команду java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3. В нашей папочке появляется файлик classes.dex
4. Снова открываем HTCExtension.jar файл архиватором и заменяем в нем существующий classes.dex на наш только что созданный.
5. Все, наш HTCExtension.jar содержит модифицированный программный код.

Замена оригинального файла на патченный

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

1. Заменить текущий рабочий файл можно следующими командами, если у вас уже стоит DEODEX прошивка и имеется root доступ:

2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.

Эпилог

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

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

Что нам понадобиться:


  • умение работать с ADB-точнее использовать logcat
  • программа Beyond Compare
  • программа 7Zip

Что такое ADB и с чем его едят?

ADB (Android Debug Bridge)если понимайте английский хоть немного то вы поняли что это мост для отладки андроида
это одна из частей SDK, и для использования ADB нам нужно будет скачать весь SDK скачать его можно скачать по этой ссылке http://developer.android.com/sdk/index.html
итак. вы скачали этот архив, наверное попробовали посмотреть что внутри :) но уву 75% ничего не поняли
давайте теперь разберёмся:
распакуйте содержимое архива(куда вам угодно)
теперь нужно добавить переменную, к этой папке
для начала запустите меню ПУСК-далее сделайте правый клик по "Компьютер"

Прикрепленное изображение


у вас сейчас открылось окошко где вы видите информацию о вашем компьютере, в левой части экрана есть ещё несколько "вкладок" нажмите на "Дополнительные параметры" системы там вы увидите вот такое

Прикрепленное изображение


нажмите там на "Переменные Среды", у нас откроется ещё одно окно

Прикрепленное изображение

находим в этом списке переменную "Path" всплывёт очередное окно :D там через ";"(точку с запятой) добавим путь до папки platform-tools( она должна находиться примерно в таком месте "adt-bundle-windows-x86_64-20131030\sdk\platform-tools")
добавили сохранили и все у вас есть adb для того чтобы проверить так ли это, запустите Меню "Пуск" и введите в поиск CMD нажимаем enter и все у вас открылась командная строка от имени администратора вводим "adb"(без кавычек) если видите много текста то все готово

Если все готово то давайте начнём:


Для того чтобы увидеть Инструкцию авторизуйтесь или зарегистрируйтесь. по данной инструкции Нельзя портировать CyanogenMod !! Но его можно собрать из исходников по Данной Инструкции Данная инструкция это просто адаптация инструкции по Портированию MIUI с целью сделать более универсальной

Если что то не понятно то спрашивайте, не стесняётесь, если не сможете найти сами ошибку в логе то кидайте его сюда попробуем вместе разобрать.

Все предложение по добавлению информации в шапку темы или улучшению шапки пишите в QMS :) буду благодарен VaDiK XD,
если правильно сделать то запуск будет в 90% случаев

Ошибку нашёл, но где искать не пойму

декомпилируйте framework.jar и там по пути com/android найдёте файл PhoneApp.smali фот его правьте
просто из интереса :) не работает дайлер или не запускается прошивка ?

Добавлено 21.04.2014, 22:06:

просто из интереса не работает дайлер или не запускается прошивка ?

Прошивка запустилась, но постоянно высвечивается ошибка и она мешает посмотреть функции
Я разобрал framework.jar прошёл по пути com/android/phone/PhoneApp , но там нету такого файла


спасибо помогло, но есть ещё один вопросик радиомодули не работают, что делать?? FatuRe,
:( вот тут я бессилен, никогда не сталкивался, и по этому не знаю от чего :(
могу только спросить вы случайно не ставили файл libcm.so от донора ?
FatuRe,
да он связан с модулем связи (радиомодуль) А это может быть связанно из-за процесса com.android.phone который завершается? FatuRe,
com.process.phone это номеронабиратель и насколько мне известно то он не имеет дело и связью Прогресс пошел) При загрузке завис на значке MI,дальше буду разбираться)

neur0n7,
будут проблемы пиши сюда :) разберёмся вместе

Добавлено 23.04.2014, 23:50:

neur0n7,
в MIUI анимация загрузки не очень то подвижна, возможно что прошивка готова но первый запуск занимает больше времени чем остальные так как при первом запуске создаётся dalwik cache(создаются odex файл)

domnesu,
6 версия. Я придурок-вайпы делал(

Начиная с Android 4.2.2 сервис adb требует авторизации. Поэтому при первом старте прошивки никакого Logcat-а вы не увидите. Это не есть хорошо, ведь прошивка с 95% вероятности с первой попытки не стартанет. Есть несколько вариантов выхода из положения, пожалуй самый простой:
Первым делом устанаваливаем свой CM10.1, загружаемся, включаем отладку по USB, авторизируем устройство. Далее без каких-либо вайпов накатываем вашу прошивку-порт - смотрим Logcat.

Если у вас не nexus - можете и не пытаться.
Все прошивки miui на 4.4, что есть в доступе - это порты с nexus 7 на другие nexus устройства.
Прошивка с интерфейсом запилинным под таблетки.
На базе cm прошивка не стартанет 100%, если вы имеете чистейший aosp, с минимум изменений, то можно еще попробовать, но вероятность очень мала.
Есть единственная miui на 4.4 с интерфейсом для телефонов - прошивка от mi3, но она еще в закрытом доступе и вам ее никто не даст, да и ее завести на другом аппарате крайне сложно (я смотрел эту прошивку и видел как она собрана).
Ждите когда xiaomi выложат репозитарии.

Что же.. в этот раз напишу гайд по портированию прошивок MIUI с одного МТК девайса на другой, естественно что гайд будет о портировании MIUI 7 и только до версии 4.4 включительно.

Часть инфы нарыл на 4pda, другое - с собственного опыта.

Что же для этого нужно?

1) Mtwintool

3) MTKdroidtools

Итак, для начала вы должны получить рут права, далее в смартфоне включить отладку по USB, как правило этот пункт находится в меню разработчика.

1) Этап первый - MTKdroidtools

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

Заходим в программу и если все правильно сделали то нажать кнопку ROOT, чтоб получить root shell (когда вы его получите то прямоугольник в нижнем левом углу станет зеленого цвета).

Далее открываем вторую вкладку программы и выбираем БЭКАП

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

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

Этого делать не нужно, нажимаете НЕТ (ну или да, если так хочется).

После того как увидите оповещение о том что задание завершено - переходите на первую вкладку программы и выберите пункт "карта блоков"

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

Тут нам важно записать или запомнить какой номер у точек монтирования.

Раздел SYSTEM и раздел DATA.

Тут указано mmcblk0p5 для system (для примера).

Все это пригодится немного позже.

Отлично, бэкап создан и теперь настало время для модификации прошивки.

2) Скачайте прошивку MIUI для вашего процессора, от любой модели смартфона.

К примеру если у вас MT6582 то качаете то же самое.

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

На одном китайском galaxy s6 я нашел более 5 ревизий и 2 разных типа памяти.

К чему приведет скачивание не той ревизии? от нерабочей камеры, отсутствие картинки до бутлупа (зависания на логотипе).

3) Распаковывайте скачанную прошивку и для удобства откройте 2 окна проводника, со своим бэкапом и скачанной прошивкой.

Примерно это должно быть так

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

Да да, архив system надо распаковать.

Итак. а теперь переходим к замене фаилов.

Заменяем из папки с бэкапом в папку с скачанной прошивкой

6620_launcher
ccci_fsd
ccci_mdinit
geomagneticd
gsm0710muxd
gsm0710muxdmd2
msensord
mtk_agpsd
mtkbt
sdcard
sensorservice
vold
wlan_loader
wmt_loader
wpa_cli
wpa_supplicant
libaudio.primary.default.so
libbluetooth_jni.so
libbluetooth_mtk.so
libbluetooth_relayer.so
libbluetoothdrv.so
libbluetoothem_mtk.so
libbrctrler.so
libbtcust.so
libbtcusttable.so
libbtem.so
libbt-hci.so
libbtpcm.so
libbtsession.so
libbtsniff.so
libbt-utils.so
libcam.paramsmgr.so
libcameracustom.so
libdpframework.so
libem_bt_jni.so
libem_gpio_jni.so
libem_modem_jni.so
libem_sensor_jni.so
libem_wifi_jni.so
libfacelock_jni.so
libgsensor_jni.so
libMali.so
libpalwlan_mtk.so
libsensorservice.so
libspeexresampler.so
libspeexwrapper.so
libwifitest.so
libwpa_client.so
mtk_stp_bt_soc.ko

папки lib/hw ; lib/soundfx ; lib/ssl копируем целиком с заменой.

agps_profiles_conf.xml
apns-conf.xml
audio_effects.conf
audio_policy.conf
custom.conf

etc/permissions

меняем все .xml которые начинаются на android.hardware

etc/firmware

modem_1_wg_n.img
WIFI_RAM_CODE
WIFI_RAM_CODE_E6
WIFI_RAM_CODE_MT6582
WIFI_RAM_CODE_MT6628
WMT_SOC.cfg

etc/wifi ; etc/bluetooth - копируем целиком с заменой

Если вы скопировали эти фаилы с бэкапа в папку с новой прошивкой и заменили - значит пол дела сделано.

4) Распаковка boot.img и сборка

В архиве с скачаной прошивкой вы должны найти boot.img фаил.

Теперь создайте две папки с программами mtwintool.

В первую папку кидаете бут с бэкапа, во вторую бут из новой прошивки.

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

Так должна выглядеть папка программы, в папку IN кидайте бут фаил, в другую папку программы кидаете бут фаил от новой прошивки (которую скачали)

Запускаем программу открыв menu.bat (не забудьте когда откроете программу переключить язык на английский)

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

Тут выбираем сначала пункт 5 (init tools) жмем клавишу Y затем выбираем пункт 1, далее выбираем image unpack и там же выбираем пункт номер 1.

Теперь мы должны получить такую картину

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

добавились 2 папки, unpack - там где распакован boot, а PACK - это то где появится новый бут фаил.

Проделайте те же действия со вторым бутом (из новой прошивки).

Теперь заменяем фаилы.

пусть вас не смущает то что в некоторых прошивках нет фаила kernel_header.

boot/ramdisk

так же не забываем о камере

и копируем все с данного раздела из init.rc (бэкапа) в init.rc новой прошивки.

что копировать именно? пример моего init.rc

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

Теперь запускаем mtwintools в той папке в которую копировали фаилы с бэкапа и переходим к процессу запаковки.

Для этого в Mtwintools нужно выбрать пункт 1, затем нажать image pack и выбираем фаил бута.

Далее нам будет предложено выбрать метод запаковки, на мой взгляд лучшее это gzip.

Выбираем и ждем. после этого смотрим на размер созданного бут фаила в папке PACK, и если размер равен нулю, то открываем папку boot/cfg , фаил boot.cfg.

Меняем размер bootsize, ставим вместо 0x1000 другое значение, например 0x1200 и так далее, затем снова пытаемся создать бут, если он снова весит 0 килобайт, увеличиваем значение и так до тех пор пока бут не прийдет к нормальному обьему (главное чтоб не 0)

Так же есть вариант такой чтоб убрать значение bootsize, то есть сделать что то вроде такого - bootsize = ( то есть не писать никакого значения для этого параметра, оставлять пустым )

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

5) Редактирование скрипта

Открываем папку META-INF\com\google\android

фаил updater-script открываем и находим значения вроде таких

format("ext4", "EMMC", "/dev/block/mmcblk0p5", "0", "/system");

Вспоминаем карту блоков, а точнее под каким номером у вас находится system и data.

Если в скрипте написано

format("ext4", "EMMC", "/dev/block/mmcblk0p5", "0", "/system");

mmcblk0p7 это system - то смело меняете с 5 на 7.

Менять нужно абсолютно все параметры где есть упоминание mmcblk0p(X) под вашу карту блоков.

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

Теперь перемещаете бут фаил в новую прошивку

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

и запаковывайте в ZIP. вот и вся система)

НО напоследок дам пару советов.

Если после прошивки у вас маленькие иконки и шрифт, либо наоборот крупные . то открывайте фаил build.prop

найдите там параметр ro.sf.lcd_density и измените его значение.

если такого пункта нет - добавьте.

Вот и все ребята,спасибо за внимание.

Рейтинг близок к -200 и возможно это последний мой пост)

Напоследок котейку для ламповости поста

Портирование MIUI прошивок на MTK смартфоны (На примере MT6582) Miui, Портирование, Android, Длиннопост

Уважаемый, у меня такой вопрос: купил oneplus после xiaomi. И теперь встала проблема с удобством приложений. К примеру, хотел бы будильник, заметки, смс, звонилку, такие, как в miui. В интернете нашел только диспетчер файлов и калькулятор. Может есть такая возможность,, чтоб портировать остальные приложения? Нашел сайт, где лежат все апк из миюи, но оно они не устанавливаются.. спасибо, если поможете.


Убираем тормоза на смартфонах Xiaomi

Убираем тормоза на смартфонах Xiaomi Xiaomi, Redmi, Полезное, Android, Miui, Смартфон, Оперативная память, Приложения на смартфон, Длиннопост

Проблема: на смартфонах Xiaomi (и не ксиаоми, а сяомИ) с 2 или 3 гб оперативы на борту часто подтормаживает интерфейс. Владельцы Redmi и Redmi Note грустят больше остальных, так как процы тут побюджетнее и тормоза ощутимее (впрочем, тут могу ошибаться).

Причина: щедрые китайцы вдовесок к системным приложениям гугла от души насыпали своего китайского добра, которое и место на внутренней памяти занимает, и загружается при запуске в оперативу, которая отнюдь не резиновая. В итоге имеем при наборе стандартных приложений типа ВК, Whats App, для которых также нужна автозагрузка, 1 гб свободной оперативы на старте системы, который через час-другой пользования превращается в 400-600. Потом запускаем пару приложений типа 2Гис и браузера, и вауля - ощутимые (1-5 сек) подвисания интерфейса нам обеспечены.

Актуальность проблемы: средствами системы эти приложения заморозить или удалить не получится.

Приложение XiaomiADBFastbootTools для ПК, которое позволяет БЕЗ РУТА удалять приложения на смартфоне с последующей возможностью восстановления.

3) Включаем отладку по USB на смартфоне:

Как разблокировать меню разработчика на MiUI 11 ? Очень просто, нужно зайти в настройки, найти пункт “Версия MiUI” и тапнуть подряд несколько раз, вы увидите всплывающие уведомление о том, что стали разработчиком. Версия MiUI в MiUI11 находится по адресу: “Настройки -> Устройство -> Все параметры”, в ранних версиях - “Настройки -> О телефоне". Получив разработчика идем в “Настройки -> Расширенные настройки -> Для разработчиков -> Включаем пункт Отладка по USB”.

4) Подключаем смарт к ПК (в смартфоне режим выбираем без передачи файлов, возможно придётся дать ещё разрешение на отладку), и запускаем приложение XiaomiADBFastbootTools.jar, скачанное в п 1. Если оно не запускается, жмём правой кнопкой мыши - открыть с помощью - OpenJRE.

Когда приложение скачает из интернета необходимые файлы, видим примерно такую картину:

Убираем тормоза на смартфонах Xiaomi Xiaomi, Redmi, Полезное, Android, Miui, Смартфон, Оперативная память, Приложения на смартфон, Длиннопост

6) Осталось отметить "вредные" приложения галочкой и нажать кнопку Uninstall.

Тут главный принцип - не навреди, т.к. есть приложения, удаление которых приведёт к вечной перезагрузке или пропаже важных функций, поэтому крайне советую пользоваться руководством ниже:

Analytics – сервис, который отвечает за рекламу и его можно сразу снести;
Browser – это стоковый браузер и если у вы пользуетесь другим, то его можно удалить;
Compass, FM radio – и так понятно, если не пользуетесь можно убрать;
Feedback – это репорт багов и обратная связь;
Facebook – если не пользуетесь можно убрать;
Mi App Store – это магазин приложений от Xiaomi, аналог Google Play, можно смело сносить, ничего интересного там нет;
Mi Video – стоковый видео проигрыватель, сам я пользуюсь плеером MX, так что это можно удалить;
MSA – также сервис, который связан с рекламой;
Scanner – приложение для сканирования QR кодов.
Services & Feedback – тоже можно удалять, если не собираетесь писать разработчикам;
UniPlay Service – удаляем;
Yellow Pages – а они вам нужны ? удаляем.
Далее еще несколько приложений, некоторые из которых не нужно удалять:
Android Accessibility Suite – отвечает за специальные возможности, если вы не инвалид, можете убрать;
App Vault – это ассистент, который вызывается свайпом вправо (левый рабочий стол), его также можно отключить с настроек рабочих столов;
Backup – резервная копия, не трогаем;
Calculator и Calendar – понятно что такое, можно удалить если пользуетесь сторонними приложениями;
Cleaner – очистка системы, в принципе, можно удалить;
Clock – стоковые часы, в принципе, можно удалить, но я бы не советовал, некоторые приложения завязаны на стоковые часы/будильник;
Downloads – загрузки, не трогаем;
Freeform – без понятия что это, лучше оставить;
Games – игры, оставить;
Gmail – клиент почты от Google, если не пользуетесь можно убрать;
HybridAccessory – не трогаем;
Joyose – удаляем, относится к китайским развлекательным сервисам;
Market Feedback – отзывы о приложениях в Google Play маркете, не трогаем;
Mi Cloud – облачный сервис, например, для резервных копий, если пользуетесь другой синхронизацией можно удалить;
Mi Credit – удаляем;
Mi Drop – обмен файлами между устройствами Xiaomi, можно удалить;
Mi Pay – система оплаты от Xiaomi, можно убрать;
Mi Recycle – лучше оставить, хотя можно убрать;
Mi Wallpaper – стоковая служба обоев, если не пользуетесь обоями можно убрать;
MiPlayClient, MiWebView, MiUiDeamon – не трогаем, не советую удалять;
Music – стоковый аудио плеер, можно убрать если пользуетесь другим;
Notes – заметки, можно убрать;
PAI – конфигурации телефона, не трогать;
Package Installer – не трогать, установщик пакетов;
PartnerBookmarks – не трогаем, может потом где-то понадобиться;
PartnerNetflixActivation – если не пользуетесь сервисом фильмов Netflix можно удалить;
Quick Apps – в плеймаркете Google появилась возможность запускать некоторые приложения без установки на телефон, так вот это тот самый сервис, лучше не трогать;
Quick Ball – ассистент с быстрыми возможностями (полупрозрачный круг, нажатии открывается дополнительное меню), можно убрать если не нужен;
Recorder – диктофон;
SMS Extra – служба смс, не трогать;
Screen Recorder – запись экрана, как видео так и скриншоты, я у себя оставил, полезная вещь;
Translation Service – что он переводит я без понятия, на всякий случай лучше оставить;
VsimCore – служба виртуальных сим карт (eSIM), я бы не трогал;
WMService – не трогать, получите бесконечную загрузку;
Weather – служба погоды, полезная вещь, например, для виджетов погоды;
Xiaomi Sim Activation – лучше не трогать, если пользуетесь аккаунтом MiUI.

Удалённые приложения находятся на вкладке Reinstaller и восстанавливаются за один клик.

Инструкция может показаться сложноватой, но поверьте, оно стоит того. Жаль не сделал скриншот ДО, а вот ПОСЛЕ выкладываю:

Убираем тормоза на смартфонах Xiaomi Xiaomi, Redmi, Полезное, Android, Miui, Смартфон, Оперативная память, Приложения на смартфон, Длиннопост

Свободно 1,6 ГБ и это через 3 часа после перезагрузки и с парой приложений в памяти! Чисто субъективно, по скорости и отзывчивости это другой телефон. А я уже собирался свой Redmi 7 3Gb на Redmi 8T 4Gb менять, но теперь думаю ещё годик с ним похожу.

PS Всякие гугловские приложения типа Фильмов и Музыки тоже можно удалить если не пользуетесь, но без удаления системной сяомовской шелухи это не слишком помогает.

Если программа не видит смартфон, проблема решается одним из способов:

3) заменить кабель на другой

4) при подключении телефона к ПК выбрать режим только зарядка и подтвердить разрешение на отладку

Портирование прошивок с утройства на устройство с процессором MT657x

Для одних смартов есть кастом, а для других только сток и это не справедливо, но если делать всё по инструкции, то кастом будет у всех.Хорошая инструкция нужна для «красных»телефонов.Инструкцию нашёл чудом.

Отдельная благодарность Bobs'у, что разрешил разместить это.

Портирование прошивок для устройств с процессором MT657x

Нельзя портировать прошивки, например с MT6575 на MT6577. И базовая, и стоковая прошивка должны быть для одного процессора.

Обе прошивки должны быть одной версии ОС

Предварительно прочитайте полностью.

Берем рабочую прошивку для своего устройства (БАЗА);

Берем портируемую прошивку для CWM (ПОРТ).

В ПОРТ c заменой скидываем папки из БАЗЫ :

Идем в META-INF/com/google/android ПОРТА, открываем updater-script.

Если есть строки:

дописываем их в конец скрипта.

Прошивка получится в папке ПОРТА. Теперь все это нужно запаковать с обычным сжатием в zip (Если вы распаковывали). И обязательно подписать signscript'ом(скачать под топиком).

Если в вашей прошивке после портирования что-то не работает, не факт, что после манипуляций, приведенных ниже, это будет работать. Но попробовать стоит .

Здесь написано, какие файлики отвечают за работу разных модулей(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

Также, кто умеет собирать\разбирать ядра пишите в комменты, либо название прог по разборке\сборке ядер.

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

Портирование ПО на устройствах Андроид

Каждый из пользователей хотел бы добавить в свой гаджет что-то оригинальное

Что нужно для портирования прошивок?

Для осуществления этого процесса требуются следующие составляющие:

  • Приложение Notepad или другой текстовый редактор (впрочем, эта программа считается наиболее удобной и продуманной среди остальных).
  • Архиватор WinRar.
  • Компьютер, через который осуществляется весь процесс.
  • Два ROM`а с одинаковыми ядрами — один является источником для передачи данных прошивки, на другом мы будем собирать их для программного обеспечения.

Подготовка оборудования для портирования

Как происходит портирование прошивки?

Прежде всего, мы создаём backup папку на компьютере, копируя с директории system/app на ПК такие файлы с расширением .apk:

  • Stk.
  • Vpnservices.
  • Camera.
  • Bluetooth.

Копирование нужных файлов на компьютер

Затем, на устройстве, где мы будем собирать прошивку (его другое название — BROM) мы удаляем эти файлы, а вместо них копируем из источника, который ещё называется PROM следующие директории:

  • /data.
  • /system/app.
  • /system/framework.
  • /system/fonts.
  • /system/media.

Ещё на базовый ROM мы копируем в папку /system/lib библиотеку libandroid_runtime.so. Теперь мы снова перемещаем в BROM прежде удалённые файлы из первого действия.

В последующем мы делаем копию таких библиотек из базового ROM’а в PROM, как:

  • system/lib.
  • /system/etc/init.d.
  • /system/etc/permissions.

Создание копий библиотек

Обратите внимание, что копирование производится с заменой существующих на другом оборудовании данных, а не в качестве их дополнения. Теперь мы удаляем три эти директории на 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.

Читайте также: