Постоянная ссылка: 2014-11-16 15:24:00+03:00 , автор Евгений Лопатин в Блог тэги: android nexus adb

Как известно, Google выпустили новую версию Android - 5.0 "Lollipop", и она начинает распространяться по OTA (Over-the-Air), и через несколько недель сделает эту статью бесполезной :-) Но если вы нетерпеливы (как я, например), ваш Nexus 4/5/7/10 можно обновить, используя "заводские образы" уже сейчас.

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

ВНИМАНИЕ! Всё, что вы делаете с вашим устройством - вы делаете на свой страх и риск, и за последствия отвечаете только вы! Данная статья не является пошаговой инструкцией - дочитайте её до конца, преждем чем что-то делать

Нам потребуются следующее:

  1. установленный Android SDK - из него нам нужны только platform-tools
  2. устройство (я тестировал всё на телефоне Nexus 4, но думаю, что с планшетами всё пройдёт так же гладко) и кабель к нему
  3. разблокированное меню разработчика (многократный тап по версии сборки в окне информации о телефоне открывает это меню) и включенный там режим отладки по USB
  4. место на диске под резервную копию
  5. хорошая компьютерная грамотность

Этапы процедуры следующие:

  1. сделать резервную копию содержимого карты памяти - любым удобным вам способом, например просто скопировав.
  2. сделать резервную копию всех приложений - только данные
  3. разблокировать загрузчик на телефоне
  4. прошить прошивку с Android 5.0
  5. восстановить данные на карту памяти
  6. подключить заново свой аккаунт Google
  7. восстановить резервную копию данных приложений.

Теперь в подробностях:

Бэкапим данные приложений

Резервную копию всех приложений можно сделать через утилиту adb, входящую в platform-tools Adnroid SDK. У утилиты много параметров, которые можно посмотреть через adb --help, нас интересуют всего несколько:

    adb backup -noapk -nosystem -noshared -all -f FILENAME # резервная копия данных всех пользовательских приложений в FILENAME

Возможно полезные варианты так же:

    adb backup -apk -nosystem -noshared -all -f FILENAME  # резервная копия данных всех пользовательских приложений вместе с

приложениями.

Так же, если вам важны данные только в некоторых приложениях - вы можете сделать резервные копии отдельно по приложениям:

    adb backup -noapk APPNAME -f FILENAME-APPNAME

Список имён приложений можно получить через adb shell 'pm list packages'

При каждом процессе бекапирования телефон будет спрашивать у вас подтверждение.

Разблокировка и прошивка

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

Разворачивание резервных копий данных приложений

Здесь важно выдержать последовательность действий:

  1. вернуть данные на карту памяти (те, которые вам нужны, конечно. Не переписывайте обратно папку Android и т.п., если вы точно не знаете, нужны ли она - перепишите только ваши личные данные)
  2. Вернуть установленные предложения и их данные ОДНИМ ИЗ способов:
    1. либо подключить аккаунт Google, для того чтобы устройство установило заново все приложения, и затем развернуть бэкап, сделанные с опцией -noapk
    2. либо восстановить бэкап, сделанный с опцией -apk, и подключить аккаунт Google, отказавшись от установки приложений.
  3. наслаждаться тем, что все настройки приложений вернулись в прежднее состояние, а Android уже 5.0 :-)

ВАЖНО!!

  1. Данные SMS при таком способе потеряются! SMS - это системное приложение, и его резервную копию можно снять - но восстанавливать системное приложение от предыдущей версии ОС - не очень хорошая идея. Поэтому ПЕРЕД тем как что-либо делать - сделайте резервную копию ваших SMS любой сторонней программой, чтобы восстановить ей же в последствии. Делайте это ДО того, как переписывать данные с карты памяти, если выбранное вами ПО сохраняет данные локально на устройстве . Я использовал Go Backup, но альтернатив много, root-прав для этого не нужно.
  2. Skype у меня работать не захотел после такого восстановления, пока я не вышел из аккаунта Skype и не зашел в него заново.
  3. Настройки VPN-подключений и аккаунтов встроенного клиента SIP-телефонии потеряются. "Мне жаль. Мне очень жаль", как говорил Доктор Кто. Позаботьтесь об этом заранее.
  4. Массивные приложения, которые хранят часть данных на карте памяти - игры, некоторые GPS-навигаторы с offline-картами - поведут себя так, как заложили в них их разработчики. Может быть подключат все данные с карты. А может быть не подключат - всё зависит от конкретного приложения.
  5. Возможны какие-то другие проблемы, которые мне не встречались.

С другими приложениями из тех, которыми пользуюсь я - проблем не возникло. Желаю удачи в прошивке!

UPD:

Благодаря Алексею Ким узнал, что есть алтернативный путь, более простой - использование adb sideload (данная опция появилась начиная с Jelly Bean)

Процедура по факту выглядит как установка тех же ОТА обновлений, но не по расписанию Google, а вручную, едва эти обновления вышли.

  1. в сети находится ресурс, где кто-нибудь выложил ссылку на имеющуюся ОТА-прошивку (это ссылка на сервера Google, но она не публикуется нигде, а используется устройствами для получения обновлений "по воздуху")
  2. эта прошивка зашивается через Recovery Mode (режим внутри Bootloader, нужно знать комбинацию клавиш для входа, иначе будет просто андроид с красным значком на пузе гореть), через функцию "update from ADB"

Результат такой же, как при обновлении по воздуху - всё остаётся нетронутым.