Модификация стоковых прошивок для 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. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.
Эпилог
Да, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов. Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон.
К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.
Источник
Android прошивки на личном опыте
Доброе время суток хабра-читатель. Данный топик является рассказом о личном опыте владения телефонами на базе Android. Речь пойдёт о плюсах и минусах прошивок и o всём том, что заботит не совсем обычного пользователя современных гаджетов. Данный топик, надеюсь, будет интересен пользователям Android устройств подумывающих о перепрошивке. Опытным пользователям и тем более разработчикам он вряд ли расскажет что-то новое.
У меня нет опыта владения телефонами на WP7 или iOS, и данный холивар в этом топике не затрагивается.
Немного личной истории.
В личном имении были/есть: доисторические телефоны, SE Symbian, Motorola WP6 qwerty, HTC Desire, HTC Desire HD, китайский планшет от Cube U9GT2, Samsung Galaxy Note.
Во время владения телефоном на базе windows phone 6 версией без тачскрина, появившиеся телефоны Android казались просто мега-круть, с невиданными до селе возможностями и наикрутейшим UI. Конечно тогда уже был iOS, но он меня не интересовал и я просто игнорировал данный аппарат. Почему так сложилось? сей факт я сам объяснить не могу. В течении полугода я зрел на покупку android телефона и решающим моментом оказался обзор флагмана HTC — Desire, получившего оценку выше iPhone. Desire тогда продавался с предустановленной Android версией 2.1 (Eclair) и HTC Sense. Данный аппарат был отличной игрушкой на протяжении месяцев 3-4, пока я вошёл во вкус и начал ставить кучи аппликаций, коих на тот момент в маркете было уже полно, на любой вкус и цвет, по крайней мере на мой, не искушённый к тому времени вкус. И тут я упёрся в 100 с небольшим МБ выделенного места под сторонние приложения… По быстрому научился переносить приложения с внутренней памяти на внешнюю и это дало «воздуха» девайсу ещё на полгода.
Но острая нехватка места и эмулированная поддержка мультитача на архаичном AMOLED экране доконала и было решено купить HTC Desire HD (DHD). К этому моменту пришло понимание что большой экран для меня не помеха, а плюс да и выделенного места под приложения в 1гб вполне соответствовало моим требованиям. К тому же DHD к тому моменту продавался с обновлённым HTC Sense и Android 2.2 (Froyo). Я был вполне счастливым обладателем Android телефона с одноядерный процом, послушно ждал и получал обновления, до тех пор, пока «злой» Google не выпустил Android 4.0 (Ice Cream Sandwich).
Как теперь уже стало модным — компания HTC начала кормить завтраками на тему обновлений на ICS для ряда бывших флагманов, но как уже известно владельцам многих смартфонов, данным обещаниям сбыться было не суждено. То их анонсировали, то отменяли, то железо неподходит, то опять подходило… но в конце концов HTC просто отмазались заявлением, что пользователям старой линейки телефонов, будет лучше сидеть на Android 2.3 (Gingerbread), аля хотите замороженный бутер (ICS) будьте любезны купить новый смартфон. Тут, на мой взгляд маркетологи HTC намеренно или нет, но круто подогрели аппетит у миллионов пользователей не получивших обновление. К тому моменту отмена обновлений стало нормой, по этому был велик шанс, что пользователь продукции HTC останется лояльным и купит продукт у той же компании.
Прочитав не мало положительных обзоров на тему улучшений как UI так и look&feel в Android 4.0.x, совсем не хотелось оставаться на старой прошивке. Но и в обновлении телефона я не видел смысла. Решение было очевидным — перепрошить телефон и поставить стороннюю прошивку на базе ICS. Так и было сделано. Но волею случая, появилась возможность выгодно обменять свой уже старенький одноядерный телефон, на новенький Samsung Galaxy Note, который спустя пару дней был также успешно перепрошит.
Краткий обзор метода перепрошивки.
На мой взгляд, наиполнейший ресурс со всевозможными инструкциями и ссылками является XDA-developers, к тому же там удобный форум, с веткой для каждого отдельного устройства. Обычно, перепрошивка Android устройства, сводится к трём шагам:
1. Разблокировать bootloader (S-Off)
2. Установить ClockWorkMod Recovery (CWM)
3. Установить стороннюю прошивку (ROM) + отдельно установить Google Apps (GApps)
Первый шаг нужно сделать единожды. Для каждого бренда нужны разные инструменты.
CWM рекомендуется периодически обновлять, для этого даже есть специальная програмулька ROM Manager.
Прошивки можно менять как перчатки, вы теряете только настройки и СМС (я слышал что у некоторых СМС сохраняются в google аккаунте и восстанавливаются при смене прошивки, но мне для этого приходится ставить сторонние приложения)б это безопасно. Правда есть исключения. По сей причине, настоятельно рекомендую внимательно изучить вопрос первичной перепрошивки своего девайса.
На тему потери гарантии при перепрошивке.
В большинстве случаев, потеря гарантии вам светит только если вы превратите смартфон в кирпич. Т.К. в остальных случаях, можно вернуть оригинальную прошивку и вернуть блокировку bootloader (S-On). Так что в гарантийном сервисе к вам претензий не возникнет.
Справедливости ради отмечу, что большинство «кирпичей» лечится при помощи JTAG коннекторов. Хотя если вы не экстремал/энтузиаст без опыта и следуете инструкции для своего смартфона то проблем быть не должно.
По опыту скажу, что для продукции HTC, на официальном сайте можно разблокировать bootloader, при этом согласившись с ограничениями в гарантии (по сути отказ от гарантии). Естественно это вариант подойдёт только тем у кого телефон и так без гарантии по каким либо причинам.
А samsung, встроили счётчик сбрасывания, который выражается появлением жёлтого треугольника при загрузке, но и это можно обойти.
В Google apps обычно входят Google Play, Google Search и т.д. Отдельным пакетом они ставятся т.к. команды собирающие сторонние прошивки не занимаются развитием и кастомизацией стандартных гугловских приложений. Для каждой версии Android нужен свой набор Гугл приложений.
Сторонние прошивки (ROMs).
Сторонние прошивки обычно делятся на кастомизированные брендовые прошивки и те что собраны из Android исходников.
Кастомизация брендовых прошивок обычно заключается в добавлении рута, удалении лишних пред-установленных бреДновых (брендовых) приложений и добавление или замена ланчера. Конечно, сколько прошивок — столько разных внесённых изменений.
Минусы заключаются в том, что если производитель не обновил версию Androidа в оригинальной прошивке, то и кастомезированных брендовых прошивок с обновлённым Android вы не получите. Ваш КО.
А плюсы таких прошивок заключаются в минусах прошивок из исходников. Основная проблема со собранными из исходников прошивками, в том что у команд собирающих данные прошивки нет исходников драйверов для устройств. Конечно, чисто случайно, прошивки периодически утекают и нужные драйвера попадают в руки разработчиков. Но что делать если для конкретного смартфона под новую версию Android таких драйверов вовсе нет? Разработчики берут драйвера от более новых, но схожих по параметрам моделей смартфонов. Но подходит то не всё… Распространённые проблемы прошивок из исходников:
— Не работает радио;
— Не работает NFC;
— Не работает MTP;
— Не работает / глючит камера;
— Не работает / глючит Wifi, Wifi точка (hotspot);
— Не работает / глючит Bluetooth.
Естественно весь букет вы увидите лишь в самых ранних версиях прошивок, обычно они отмечены как beta или Nightly, к тому же это всё относится в основном для версий Android собранных из исходников и под которую нет драйверов от производителя. Что бы не быть голословным приведу пример: HTC Desire, последняя оригинальная прошивка на Android 2.2.x, и если ставить прошивку из исходников Jelly Beans (Android 4.1.1) то большинство перечисленных выше проблем вылезут, об это чётко сказано, например тут.
Так же вы теряете весь набор брендовых приложений, как бесполезных так и полезных, т.к. все они основаны на брендовом фреймворке. Например, если в случае перепрошивки HTC Desire HD, я этого не заметил, то при перепрошивке Galaxy Note, я потерял почти весь функционал работы со стилусом, а также брендовую камеру от samsung, которая, на мой взгляд (сравнение в инете не нашёл), делает более качественные фотографии, как и клавиатуру предназначенную для большого экрана.
Плюсы прошивок из исходников заключаются в бОльшем наборе настроек. Перечислять все не вижу смысла, ибо их море. О некоторых, на приере CyanogenMod, можно прочитать тут.
А так же возможности решить проблемы, такие как у HTC Desire с доступным местом для приложений, с помощью форматирования, изменения партиций сд карты и установкой a2sd приложения или сторонней прошивки которая поддерживает данное решение.
Краткое сравнение оригинальной прошивки Galaxy Note на TouchWiz Android 4.0.4 и CyanogenMod10 Nightly на Android 4.1.1:
Изначально touchwiz для Galaxy Note был надстройкой над Android 2.3, собственно после обновления до ICS, touchwiz не изменился, весь look&feel остался от Android 2.3. (нафига менял телефон?)
На картинке Galaxy S2, но суть та же:
Большинство виджетов из маркета будут не на весь экран, т.к. у Galaxy Note экран аж 5.3″ и на нём 5 колонок и 6 строк для иконок, а все виджеты рассчитаны на 4 колонки и 5 строк. А растягивать то нет возможности. Например гугл поиск:
Куча предустановленных бесполезных приложений, которые я не могу удалить.
Отсутствие рута, а следовательно и бОльших возможностей. Отмечу что рута можно получить на touchwiz и не прибегая к перепрошивке, но толку от него мало, т.к. на системном разделе памяти практически нет и поставить нужную тулзу возможностей тоже нет. (некоторые рут приложения, ставятся в раздел /system)
Всех этих недостатков CM10 лишён, но и недостатки имеются:
— нет полной аппаратной поддержки, например MTP
— всё же это Nightly версия, пока ещё не очень стабильная и периодически глючит
— отсутствие поддержки стилуса. Конечно в маркете есть приложения для стилуса, но нет поддержки на уровне ОС
— камера в touchwiz более функциональная и качество снимков выше
Часть проблем можно решить откатом на стабильную версию CM 9.1. Но к новым плюшкам быстро привыкаешь и этого делать совсем не хочется, вместо этого каждую неделю обновляю CM10 из свежих сборок.
Как вариант жду обновления TouchWiz для Galaxy Note, но это случится только после начала продаж Galaxy Note 2. Во первых это даст разработчикам обновлённые драйвера для Jeally Beans версии, во вторых обновлённый look&feel вполне может устроить и не понадобятся перепрошивки. Разумеется всё это справедливо если это обновление вообще случится… Ведь Galaxy Note даже по сегодняшним меркам весьма производительный смартфон, и единственное, что может подтолкнуть неискушённого до новинок пользователя это как раз новый look&feel в обновлённом Galaxy Note 2. Выпустив обновления для предыдущей линейки, samsung рискует потерять часть потенциальных покупателей. В сегодняшней гонке производительности смартфонов, флагманы сменяются каждый квартал, и обновления до последних прошивок становится влияющим фактором при решении покупки нового смартфона.
P.S. В последних прошивках CyanogenMod 10 Nightly, было добавлено авто-обновление, периодичность обновлений можно настроить. Спасибо zoxa за инфо.
Буду рад ответить на возникшие вопросы.
Неточности и очепятки прошу в личку.
1. Есть ли на данный момент актуальные, стабильные и 100% работоспособные сборки с Sense, которые не нужно дорабатывать напильником (доустанавливать диалер и т.п.)?
2. Насколько уменьшится объем внутренней памяти? Сейчас с официальной прошивкой я совсем не забочусь о внутреннем объеме, занято чуть больше половины.
3. Есть ли возможность восстановить состояние аппарата до установки?
4. Есть ли какие-то нормальные инструкции, предназначенные для людей, которые не выполняли эту процедуру 1000 и один раз, и не собираются всю жизнь этим заниматься? Нахожу только какие-то обрывки каждого из этапов (получение рута и т.д.).
5. Можно ли после выполнения процедуры отключить root, как было на официальной прошивке?
6. Как обстоят дела с батареей на ICS?
7. Какова вероятность сделать из устройства кирпич? Есть ли способы восстановления работоспособности в случае неудачи?
Мой ответ:
1. К сожалению с SENSE ромы я не пробовал, т.к. по большей части из за SENSE и решил перепрошить. Сенс тяжёлый, медленный, занимает тучу места на экране (в списке приложений 2-3 шапки… зачем. ) и место в памяти. В целом — я бы не рекомендовал такие прошивки. UI ICS куда приятней. По этому рекомендую CyanogenMod9, у меня с ним проблем не было, работает заметно быстрее Сенс, стабильный.
2. На сколько я помню — ни как. Место под систему и под апликации это разные партиции. Даже если для DHD это не так (уже не помню) в любом случае CM9 да и все AOKP ромы весят меньше оригинальных. Например для Galaxy Note оригинальная весит около 800мб, а CM10 240мб.
3. Без проблем, только зачем?!
4. Считаю, в целом, это необходимым злом, т.к. в процессе поиска узнаешь много полезного, дабы не превратить телефон в кирпич. Сам курю в большинстве своём анг. мануалы.
1й шаг S-Off;
2й инстал ClockWorkMod Reckovery
3й Root
4й CM9 ром + Google APPs
Варианты:
1) 1-3 шаг тут: androidforums.com/desire-all-things-root/439627-guide-s-off-root-htc-desire-revolutionary-windows-published-4th-november-2011-a.html
2) 1-4: forum.xda-developers.com/showthread.php?t=1528925
Я делал по первому варианту, 4й шаг по второму.
5. Можно. Достаточно удалить аппликацию ответственную за раздачу рута другим апликациям.
6. Зависит от прошивки. Если нет глюков то всё хорошо, уж точно не меньше чем на оригинальной. А вообще попробуйте специальные программы типа (Juice defender).
7. Вероятность варьируется от телефона к телефону (разные модели). И в большинстве случаев, чем старше телефон, тем шансов кирпича меньше. Кирпич — (в основном) результат некорректной перепрошивки, то есть, в 95% зависит лишь от вас самих. Именно по этой причине лазить и искать инструкции в целом полезно. Да и безвозвратных кирпичей почти не бывает… вопрос лишь в там, на сколько геморно и дорого выйдет вам покупка спец коннекторов типа (jtag).
П.С.
1. Если где-то в инструкциях были варианты линухи или винда, я шёл по пути линуха.
2. После шагов 1-3, можете перепрошивать сколько влезет, только обращайте внимание на то, что разные типы прошивок (основанные на сенс ил aokp) требуют разных кернел.
Источник