- Как понизить версию Android
- Перед прошивкой телефона
- Ручная прошивка с использованием Fastboot и ADB
- Использование сторонних инструментов для прошивки
- Возможно ли откатить Андроид на предыдущую версию?
- Легкий путь
- Сложный путь
- Кастомные прошивки
- Модификация стоковых прошивок для Android. Часть 1
- Преамбула
- Подготовка среды
- Преобразование прошивки
- Непосредственно модификации
- Эпилог
Как понизить версию Android
Не все ценят изменения новых версий Android. Если Вы хотите переключиться на предыдущую версию, то иногда возможно понизить Ваше Android-устройство до предыдущей версии. Вот как это сделать.
Прежде чем мы начнем, важно упомянуть риски. Понижение версии Вашего телефона Android, как правило, не поддерживается, это не простой процесс, и он почти наверняка приведет к потере данных на Вашем устройстве. Убедитесь, что Вы сделали резервную копию телефона, прежде чем начать.
Кроме того, этот процесс может привести к аннулированию гарантии Вашего устройства или, возможно, к его поломке, что сделает Ваш телефон не более чем электронными отходами. Поэтому мы НЕ рекомендуем Вам продолжать, если у Вас нет опыта изменения прошивки Вашего устройства и Вы полностью не понимаете связанные с этим риски.
Перед прошивкой телефона
Насколько Вам легко понизить версию своего телефона Android зависит от производителя. Некоторые производители чрезвычайно упрощают для пользователей «прошивку» своих устройств, в то время как другие делают это практически невозможным.
Типичный процесс перепрошивки требует, чтобы Вы сначала разблокировали загрузчик. Не все телефоны Android позволяют это, поэтому убедитесь, что производитель Вашего устройства предлагает официальный способ разблокировки загрузчика или Вам нужно найти альтернативный способ.
Имейте в виду, что разблокировка загрузчика сотрет внутреннюю память Вашего устройства. Убедитесь, что Вы сделали резервную копию телефона, иначе Ваши данные будут потеряны навсегда.
После разблокировки загрузчика Вы можете прошить свое устройство на более старую версию Android. Имейте в виду, что разблокировка загрузчика может привести к аннулированию гарантии.
Самым простым устройством для прошивки на данный момент являются телефоны серии Google Pixel. Google предоставляет заводские образы для устройств Pixel с различными сборками для Android 9 и 10. Вам потребуется установить Android SDK — с инструментами Fastboot и Android Debug Bridge (ADB) — для прошивки устройств Google Pixel.
Однако не все производители устройств предоставляют образы для прошивки своих устройств. Если производитель не предоставит их, Вам потребуется найти образы прошивки, подходящие для Вашего устройства. Форум разработчиков XDA — это хорошее место для поиска подходящих образов прошивки для Вашего конкретного телефона Android, но также поищите официальные образы прошивки на веб-сайте производителя.
Перепрошивка устройств сторонних производителей возможна с помощью метода Fastboot, хотя сторонние инструменты существуют для других производителей устройств Android, таких как Samsung.
Ручная прошивка с использованием Fastboot и ADB
Единственный «официальный» способ понижения версии Вашего Android-устройства — это метод Fastboot. Хотя не каждый производитель поощряет это, инструмент Fastboot доступен на сайте Google и должен работать с официальными образами прошивок практически от всех производителей Android.
Чтобы продолжить, Вам просто нужно иметь возможность разблокировать загрузчик и иметь подходящий образ прошивки для Вашего устройства и носителя. Убедитесь, что на Вашем Android-устройстве включена отладка по USB.
Если Вы нашли подходящий образ прошивки, Ваш загрузчик разблокирован, и у Вас установлен Android SDK, подключите свой телефон Android к компьютеру. Хотя приведенные ниже шаги предназначены для пользователей Windows 10, команды ADB и Fastboot должны работать аналогичным образом в macOS и Linux.
Откройте проводник и перейдите в место установки Android SDK. Убедитесь, что файлы образов Android, которые Вам нужны для прошивки, также находятся здесь. Они обычно приходят в виде ZIP-файла с несколькими файлами IMG, содержащимися внутри.
В папке, удерживая клавишу Shift на клавиатуре, щелкните правой кнопкой мыши внутри окна и нажмите кнопку «Открыть окно PowerShell здесь». В macOS или Linux перейдите в эту папку с помощью приложения «Терминал».
Введите adb devices в окне Windows PowerShell, чтобы убедиться, что Ваше устройство Android обнаружено. Если это так, введите adb reboot bootloader, чтобы перезагрузить устройство и загрузиться в меню загрузчика Android.
Если команды ADB не работают, введите .\adb.
Большинство прошивок производители поставляют со скриптом «flash-all», который загружает файл образа на Ваше устройство. Когда Ваше устройство находится в режиме загрузчика, введите flash-all, чтобы начать процесс перепрошивки.
Если скрипт flash-all не работает, Вам придется вручную прошить отдельные элементы в папке. Введите следующие команды в Windows PowerShell (или Терминал), нажимая клавишу Enter между каждым шагом:
- fastboot flash bootloader .img
- fastboot reboot-bootloader
- fastboot flash radio .img
- fastboot reboot-bootloader
- fastboot flash -w update .zip
После завершения этого процесса Ваш телефон должен перезагрузиться. Если процесс перепрошивки прошел успешно, на Вашем устройстве будет запущен обновленный образ прошивки.
Использование сторонних инструментов для прошивки
Благодаря работе разработчиков-энтузиастов доступны сторонние инструменты перепрошивки. Эти инструменты прошивки предлагают Вам альтернативный способ прошивки без использования метода Fastboot.
Если на Вашем устройстве нет стороннего инструмента, лучше всего использовать метод Fastboot, указанный выше.
Владельцы устройств Samsung могут использовать Odin для понижения версии Android своих телефонов. Это один из самых известных инструментов для прошивки за пределами официального метода Fastboot.
Интерфейс Odin не самый удобный для новичков, но он позволит Вам подключаться к некоторым устройствам Samsung, включая последние разблокированные телефоны Galaxy.
Имейте в виду, что некоторые операторы сотовой связи блокируют загрузчик на устройствах, продаваемых через его магазины. Эти операторы могут неохотно разрешать пользователям разблокировать свои телефоны, если телефон полностью не оплачен.
Дополнительные инструменты доступны для других производителей. В этом посте на XDA Developers перечислены различные инструменты для прошивки устройств Motorola, включая рекомендуемый RSD Lite. Владельцы устройств Huawei могут использовать вместо этого Huawei Recovery Updater (HuRuUpdater).
Эти инструменты не гарантируют работоспособность и не одобряются производителями. Используете ли Вы сторонний инструмент или метод Fastboot, риск окирпичивания Вашего устройства остается неизменным.
Опять же, прежде чем начать, убедитесь, что Вы сделали резервную копию своего телефона, прежде чем пытаться прошить свое устройство, так как Ваш телефон будет очищен во время процесса перепрошивки.
Источник
Возможно ли откатить Андроид на предыдущую версию?
Многие читающие эту статью относятся к числу энтузиастов технологий, которые всегда хотят получать всё самое современное. В том числе и программное обеспечение. Когда выходит новая версия системы Андроид или любой другой, они хотят знать, когда и как можно заполучить её в свои руки и какие там изменения. Правда, зачастую обладателям смартфонов приходится долго ждать, пока последняя версия Android доберётся до них. Такая ситуация сейчас наблюдается с Android 9 Pie и Android 10 Q.
Однако о последних версиях мечтают далеко не все. Бывают случаи, когда обновление до новой версии разочаровывает. В частности, на предприятиях и организациях не торопятся ставить новые версии программного обеспечения, с которым могут не работать нужные приложения. Особенно если это редкие приложения. У домашних пользователей подобных проблем обычно не возникает.
Если новая версия системы не нравится, может возникнуть желание вернуться на предыдущую. Часто бывают баги и проблемы в работе, которые исправляются в течение следующих месяцев. Если вы не хотите ждать, можно вернуться обратно. Однако это не так просто, как может показаться.
Убедитесь, что действительно хотите перейти на предыдущий Андроид.
Возвращение назад на прошлую версию Android может привести к новым проблемам. В первую очередь нужно подумать о безопасности. Если ваш смартфон на современной версии системы, в предыдущей версии может не быть новых механизмов безопасности. Есть вероятность, что там существуют незакрытые дыры и уязвимости. Дальше нужно подумать о том, как именно сменить версию, о чём будет сказано ниже.
В каждой новой версии Android Google представляет новые интерфейсы прикладного программирования для разработчиков. Компании вроде Samsung и Huawei ставят собственные программные продукты поверх чистого варианта Android. Зачастую обратная совместимость отсутствует. Многие не понравившиеся вам изменения системы могут быть незначительными, но всегда есть вероятность, что нужная вам функциональность не будет работать на прежней версии. Это невозможно исправить, если вы не решите поставить программное обеспечение сторонних производителей.
У большинства пользователей вернуться на предыдущую версию просто не получится.
Легкий путь
Если у вас смартфон Google Pixel, Nexus или аппарат другого производителя, который позволяет разблокировать загрузчик и предоставляет каталог разных версий Андроид для своих устройств, вернуться на прежнюю версию относительно легко. Например, HTC и Motorola позволяют разблокировать загрузчик и обладают архивами старых версий системы для определённых смартфонов.
Если у вас есть такой смартфон, всё будет просто:
- Выполните резервное копирование данных в облачное хранилище.
- Скачайте требуемую версию программного обеспечения и утилиты для установки.
- Прочтите инструкции по установке и выполните их.
Без рута вы не сможете выполнить резервное копирование всех необходимых данных. Например, сохранения в играх, история сообщений, фотографии и видео внутри приложений-чатов, данные других сторонних приложений, которые не синхронизируются с облаком. Они могут быть утеряны, поскольку переустановка операционной системы приводит к полному стиранию информации. Используйте приложения резервного копирования и восстановления. Убедитесь, что в Google Фото включена настройка резервного копирования фотографий и видео.
Нужно понимать, что именно вы делаете, и иметь все необходимые инструменты для этого. Прошивка операционной системы на смартфоне не может быть отменена на полпути.
Сложный путь
У некоторых пользователей нет разблокированного смартфона и для них нет образов системы, готовых для установки. Разработчики обычно не любят делиться такими версиями системы, а самому найти нужный вариант может быть непросто. Нужно искать информацию на форумах в интернете, где другие обладатели вашей модели смартфона могут задаваться таким же вопросом.
Впрочем, могут быть трудности и посерьёзнее поиска системы для установки. Обычно установка операционной системы обновляет загрузчик устройства. Это означает, что для перехода обратно сначала нужно поставить прошлую версию загрузчика. Это одна из тех частей программного обеспечения, которую обычно нельзя вернуть на предыдущую версию. Потребуются всякие хитрые обходные пути, если это вообще возможно. Неправильная установка загрузчика является верным способом сделать смартфон неработоспособным.
Иногда есть простые способы поставить нужное программное обеспечение. К сожалению, обычно это не так и на форумах многие жалуются, что смартфон превратился в кирпич.
В общем, на прошивку операционной системы требуется 5 минут, но потом может понадобиться много часов или дней, чтобы восстановить аппарат, если что-то пойдёт не так.
Кастомные прошивки
Если вы настроены серьёзно и не боитесь потерять гарантию на смартфон, лучшим вариантом может быть установка кастомной прошивки. Это версия системы от сторонних разработчиков, зачастую от самих пользователей. Помощь им могут оказывать разработчики устройств. Компании вроде Sony и OnePlus известны своими связями с сообществом энтузиастов. Чаще всего кастомные прошивки всё же делает один человек или несколько, которые умеют писать код и любят возиться со своими смартфонами.
Кастомная прошивка может содержать в себе лучшие черты двух миров. Это современная версия Android с критическими обновлениями и новыми функциями, но при этом с поддержкой чего-то нужного вам, что было убрано из новой официальной версии. Однако, можно лишиться гарантии, а установка кастомной прошивки всё равно окажется сложной. Если у вас распространённая модель смартфона, наверняка нужная прошивка найдётся в местах вроде форума XDA Developers и на других форумах интернета, в том числе российских.
Источник
Модификация стоковых прошивок для Android. Часть 1
Несколько лет назад, когда я впервые познакомился с 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 доступ:
1-ая команда закидывает патченный файл на флешку
2-ая команда открывает shell
3-ая команда дает root доступ
4-ая команда монтирует систему в режим чтения/записи
5-ая команда делает резервную копию файла
6-ая команда перезаписывает существующий файл новым патченным.
7-ая команда настраивает разрешения
8-ая команда удаляет кэш
9-ая команда делает перезагрузку устройства.
2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.
Эпилог
Да, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов. Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон.
К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.
Источник