分類彙整:Nexus專題

【保留數據刷機】Nexus 5和Nexus 10以OTA方式從Android 5.0升級5.0.1、從5.0.1升級5.0.2、從5.0.2升級5.1、從5.1升級5.1.1、從5.1.1升級6.0失敗後的解決辦法

註:Nexus 10只能升級到5.1.1。

本文以Nexus 10從Android 5.0升級5.0.1為例做講解。Nexus 5亦可按相似步驟操作。

設備已root。接到OTA後開始升級,設備重啓後失敗,提示/system/bin/install-recovery.sh has unexpected contents等錯誤。
重啓進入系統,永久取消root。以sideload方式刷升級包,依然失敗。
於是我試着按照錯誤提示,一步步修改升級包中的updater-script,將引發錯誤的動作註釋掉,然後把updater-script重新灌入升級包,逐漸消除報錯信息。等徹底沒有錯誤時,發現升級完之後設備卡在開機動畫那裡。

看來刷升級包是不太容易了,後來,找到下面這種解決辦法,通過刷原廠鏡像來升級:
https://developers.google.com/android/nexus/images 下載5.0.1工廠鏡像。
按照Massimiliano Ferrari所寫 http://techforpassion.blogspot.tw/2013/11/flash-android-factory-image-without-wiping-device-after-failed-ota-update-unbrick.html 一文,在不清除用戶數據前提下刷入原廠鏡像。

那篇文章的重點就是修改與系統總鏡像(例如image-mantaray-lrx22g.zip)處在同一目錄下的flash-all.shflash-all.bat文件,把可能清除用戶數據的命令或參數刪掉。例如,對於用Ubuntu系統來刷機的用戶來說,可以刪除flash-all.sh文件中的fastboot erase userdata命令行,以及fastboot -w update xxx.zip命令行中的-w選項xxx.zip為系統總鏡像的文件名,下文中的xxx.img為bootloader鏡像的文件名;另外請注意:如果刷Nexus 5,那麼只需把fastboot update那一行的-w去掉即可),使得該文件變成如下形式:

#!/bin/sh

# Copyright 2012 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

fastboot erase boot
fastboot erase cache
fastboot erase recovery
fastboot erase system
fastboot flash bootloader xxx.img
fastboot reboot-bootloader
sleep 5
fastboot update xxx.zip

 

把設備和電腦相連,最好連接到機箱後面的面版。然後在終端機裡用adb devices命令看看設備是否正常連上,如果attached一欄顯示no permissions,那就執行sudo adb kill-server及sudo adb start-server,然後重新執行adb devices。

如果attached一欄顯示offline,則可以點擊設置界面中「開發人員選項」裡的「撤銷USB偵錯授權」按鈕,然後把「USB偵錯」開關關掉,再打開,重新給電腦授予調試設備的權限。再次用adb devices命令查看,如果attached一欄顯示device,則說明正常。

在更換數據線或把多臺設備連到同一臺電腦時,可能出現這兩個問題。

通過adb reboot-bootloader命令,將設備重啓到bootloader模式,然後用修改好的flash-all.sh文件刷機即可。Windows用戶需要修改的是flash-all.bat,並且需要用它來刷機。

注意事項:

  • 如果從命令行裡執行flash-all.sh文件,那麼執行前,請先將工作目錄切換到該文件所在目錄,因為flash-all.sh還要用到其它一些文件,而那些文件,通常都會放在與flash-all.sh相同的目錄之中。
  • 可能需要用sudo來執行flash-all.sh
  • 如果提示找不到fastboot命令,那麼可以通過apt-get或Synaptic安裝相應的工具,或者把那些刷機文件都放到android sdk的platform-tools目錄下,並把flash-all.sh中的fastboot改為./fastboot
  • 如果電腦是臺式機,那麼最好把數據線插到機箱後面版。

設備重啓後可能依然卡在開機動畫那裡(Nexus 5以不清除用戶數據的方式,從5.0.1升級到5.1時,沒有這種現象)。

如果真的卡住了,那就通過adb reboot recovery命令,使設備進入recovery模式,發現屏幕上提示failed to mount /cache字樣。此時可以先按下電源鍵不放,然後按音量提高鍵,待屏幕上出現菜單之後,鬆開兩鍵。通過wipe cache操作來格式化cache分區。此步驟比較耗時,需耐心等待。

重啓設備,這次也要在啓動動畫那裡停留一段時間。

經過軟件升級步驟之後,已能順利進入5.0.1系統。

進入bootloader模式刷root包,再重啓設備,這次順利進入5.0.1系統,且已具備root權限。
注意:刷好root包後重啓的時候,設備可能會黑屏。此時可以按住電源鍵不放,強行關閉平板,然後再開啓。

從5.0.1升級至5.0.2、從5.0.2升級至5.1、從5.1升級至5.1.1時,亦可按照上述步驟操作。

特別提示:

為了節省時間,升級好Nexus 10之後,先進入recovery模式清除緩存,等清除完緩存之後,直接在recovery菜單中選擇reboot to bootloader,把設備重啓到bootloader模式下,並刷入root包,這樣開機之後,只需升級一輪應用程序即可。如果在recovery模式下清除完緩存之後不重啓到bootloader,而是正常開機,那麼就要先升級一輪應用程序,然後等刷完root之後,又要升級一輪,比較耗時。

廣告

Nexus 5及Nexus 10從Android 4.4.4(KitKat)升級至Android 5.0(Lollipop)之情況

大家好,現在我簡單說一下兩臺設備升級至Android 5.0時的情況。

手機和平板都已root過(也就是獲取了根權限的意思)。

前陣子收到OTA更新提示,在開始下載升級包之前,我先對Nexus 5做了如下處理:

  • 當時為了嘗試XPrivacy插件,安裝了Xposed框架。現在暫時將其禁用,但不立刻重啓手機。另外,在 設定->安全性->裝置管理員 中取消了XPrivacy的權限。
  • 為保險起見,卸載了avast!防毒軟件的ANTI_THEFT。若不卸載它,是否能順利更新,還不太清楚。
  • 開啓SuperSU軟件的生存模式。

處理好之後,下載升級包。下載完畢後,建議大家先把根目錄下cache子目錄中的更新包文件拷貝到手機ROM中。萬一更新失敗,還可以在電腦上通過命令行來刷入更新包。

現在開始升級,升級過程比較順利,機器重啓之後會進入升級界面。升級結束後又重啓,這次會在開機動畫(也就是四個圓點來回滾動的那個畫面)那裡停留很久。耐心等待之後會彈出對話框,說正在優化手機裡的程序。優化完畢後進入Android 5.0系統。

此時打開SuperSU軟件,會發現root失效。從 http://autoroot.chainfire.eu/ 下載升級包並刷入,即可重新獲得root權限。

Nexus 10之升級過程與Nexus 5相似。

以上內容僅供大家參考。

Nexus 5從4.4.2升級4.4.3之步驟

  翔按:假如您未刷Root,或Root之後沒有安裝「特殊」軟件,那麼手機端接到升級通知後,就應該能以「OTA」方式正常升級了。在那種情況下,似乎無需閱讀本文。但如果您像我一樣,對手機瀏覽器做了「改裝」,或是安裝了Xposed等框架,那麼不妨一讀。另外,您也可以不按本文操作,而是採用「生存模式」來解決問題。相關資料請上網搜尋。該模式可能需要SuperSU Pro。(翔按:可以通過「開啓專業版」選項直接開啓Pro版本。開啓後需要重啓SuperSU。)

  2014年6月26日補記:用OTA方式可以從4.4.3正常更新至4.4.4。由於更新前沒有開啓「生存模式」,所以更新後失去root權限。刷入chainfire所製作「一鍵式recovery與root刷機包」,並重新安裝相關APK文件即可。

  今天(2014年6月10日)中午睡起來,突然發現Nexus 5推送升級通知了。它可比Nexus 10晚了四天,N10在上週五(2014年6日6日)即收到通知。我按照正常步驟下載升級包,然後重啓。

  1. 運用升級包時提示帶有「Browser」字樣之錯誤,其原因乃在於我當時迷戀所謂「系統原生瀏覽器」,從而採用某種辦法將對應apk放入ROM中所致。當時我曾把/system/app中之「BrowserProviderProxy.apk」與「BrowserProviderProxy.odex」文件都加了「.old」後綴名,現在刪去兩文件之「.old」後綴,並把原來放入之Browser.apk刪掉(或轉移走)。翔按:此過程可能需要「root權限」,所以請勿剛開機就急於操作,而是應該等待各種預設程序啓動好之後再操作纔好,否則可能要等很長時間。
  2. 解決上述問題之後,重新檢查系統更新,這次居然沒有推送升級通知。本想從/cache中把zip升級包拷貝到「sdcard」(翔按:Nexus 5沒有sdcard,它只是個虛擬名號罷了),在複製到電腦端,結果發現/cache中已經沒有這個zip了。只好從http://android.clients.google.com/packages/ota/google_hammerhead/d173d546ab2347ead90cb0978657f11046300511.signed-hammerhead-KTU84M-from-KOT49H.d173d546.zip手工下載這個文件。
  3. 為了令升級過程少一些干擾,我在「設定->安全性->裝置管理員」中,把現有各項都取消了。
  4. 下載之後,我將其複製到電腦端,然後把手機重啓到bootloader,並進入官方recovery,開啓sideload功能。這時我從電腦端試圖將4.4.2升4.4.3所用zip文件刷入手機,可是手機卻說「system/bin/app_process has unexpected contents」,一番檢索之後,發現可能是當時在手機上安裝了Xposed所致。遂正常啓動手機,進入Xposed Installer程序,將Xposed框架卸載。
  5. 重新sideload之後,未提示錯誤。為求穩健,我又重新刷入「一鍵式recovery與root刷機包」(請參考http://autoroot.chainfire.eu/),並重啓手機。這次會逐個更新已安裝之程序,更新之後進入Android系統,發現版本已是4.4.3。但是卻找不到SuperSU程序了。
  6. 本想通過sideload刷入「clockwork定製版recovery」及chainfire網站之「supersu」包,但手機卻提示簽名錯誤。此問題小愛暫時不明其緣由,哪位朋友若知曉,煩請賜教。另外,每次進入bootloader時,手機總是提示一行字,說「secure boot」已經「enabled」了,網上有人說「secure boot enabled」類似於HTC手機之「S-ON」(參考https://plus.google.com/103583939320326217147/posts/P1i8qzLfkTm,感謝該文作者Koushik Dutta),我也查不到如何將其關閉,暫且存疑。
  7. 後來經網上帖子指點,其實只需在Android系統裡面通過文件管理工具找到/system/app/Superuser.apk,並重新安裝即可。安裝該文件需要較長時間,如果發現遲遲未裝好,可先打開Play商店,令其識別出手機內現有軟件。另外,安裝完SuperSU之後,可以去Play商店更新一下該軟件。

  以上就是這次升級全過程,小愛將其寫下來,供各位朋友參考。在此過程中,受到了下列文章之啓發,在此對其作者及跟帖者表示感謝。

《[求助] 4.4 OTA失敗 求助》
http://bbs.gfan.com/android-6990440-1-1.html
作者:雲之龍,跟帖者:十葉十葉

《Easy Android ROMs Customization Through Xposed Framework》
http://www.hongkiat.com/blog/add-features-android-xposed-framework/
作者:Nels Dzyre

《Nexus 5 Receives Android 4.4.3 (KTU84M) Official OTA Update [Changelog and Manual Installation]》
http://www.ibtimes.co.uk/nexus-5-receives-android-4-4-3-ktu84m-official-ota-update-changelog-manual-installation-1451151
作者:Sarmistha Acharya

Nexus設備刷原廠鏡像時所需注意之事項

今日看到Nexus 10提示可升級至4.4.2,遂升級之,平板重啓之後,開始運用升級包,過程中提示簽名驗證失敗。clockwork會彈出菜單,我通過菜單強行將升級包刷入,然後clockwork還會提示root權限可能丟失,問是否修復,我選擇了修復。

重啓平板後,一直卡在黑底白字Google畫面不動。關機後反復重啓,反復卡住。所幸可進bootloader,試着清理緩存分區,可是無效,又試着恢復出廠設置,依然無效,只能刷原廠鏡像,花費好幾個小時總算修復好。現將注意事項總結如下。

  1. Google官網所列下載地址偶爾會有問題,請尋找有效下載源。起初在官網頁面(https://developers.google.com/android/nexus/images)下載Nexus 10所用之Android 4.4.2原廠鏡像,但卻回報404錯誤。後於XDA論壇找到此文:http://www.xda-developers.com/android/android-4-4-2-kot49h-source-code-released-factory-images-for-nexus-4-5-7-and-10/,其中列出了正確地址,在此感謝該帖作者WILL VERDUZCO。
  2. 看清設備名,勿下載成其他設備所用鏡像。剛開始我比較着急,不慎下載成Nexus 5之鏡像,刷入時提示「partition table update fail」。我還以為分區表壞了,後來纔發現下錯了。
  3. 刷入系統鏡像時可能會卡在「send ‘SYSTEM’」這一行。將USB線由主機前端拔出,改插在電腦主機後端之USB接口上,重新刷機即可。
  4. 在Ubuntu系統刷機時,為便於操作,可把所下zip文件解壓到Android SDK之platform-tools子目錄,為flash-all.sh加可執行權限,並在命令行中以「sudo ./flash-all.sh」方式執行。另外為保險起見,可將flash-all.sh腳本中所有「fastboot」命令均改為「sudo ./fastboot」。
  5. 刷機之後重啓,已可正常進系統。此時可先關機,於http://autoroot.chainfire.eu/下載「一鍵式recovery與root刷機包」。據本人使用經驗,此法所刷之recovery似乎比手工所刷之clockwork穩定,至少Nexus 5在用它處理之後,從4.4升級至4.4.2時未出現如此嚴重之狀況。

Nexus 10由Android 4.3升級至4.4之步驟(由4.4.2升級至4.4.3時,亦可遵循此步驟)

2014年6月8日補記

  這週五(2014年6月6日)收到Nexus 10升級提醒,遂升級操作系統。平板重啓並進入Recovery界面之後,與原來一樣,提示簽名認證錯誤。再次重啓,居然發現無法啓動到正常操作系統了。

  我嘗試將升級包提取到臺式機,並修改其「更新腳本」,把某些升級操作從中刪去,然後通過sideload方式把修改後之升級包刷入平板。這次不提示錯誤了,但是重啓後依然無法進操作系統。

  最後只得徹底重新刷機。今天根據此次刷機過程,補充附錄D,並對文中相關細節略加修改。

2014年7月9日補記

  開啓SuperSU軟件「生存模式」之後,從4.4.3升級至4.4.4時,未發生錯誤。

注意事項

  1. 打開平板的USB調試選項。
  2. 把連接到電腦的其他Android設備拔掉。
  3. 如果在執行adb、fastboot等命令時,發生權限錯誤(insufficient permissions for device),那麼先執行「sudo ./adb kill-server」,然後執行「sudo ./adb start-server」即可。
  4. 如果電腦操作系統不是Linux,那麼執行命令時無需加sudo,另外可能需要安裝驅動程序纔能使電腦識別到平板
  5. 在命令行中執行adb、fastboot等命令之前,應該首先進入Android SDK安裝目錄下的platform-tools目錄,不然系統可能找不到相關命令。此外,對於Ubuntu等Linux系統來說,還可以通過apt-get來安裝整個系統通用的adb工具,那樣的話,就不用在執行adb命令時加上./前綴了。
  6. 如果不小心進入了官方的recovery,也就是帶有紅色三角及驚歎號的那個畫面,那麼請「先」住按電源鍵不放,「再」按音量提高鍵,這樣就能彈出其菜單了。網上說「同時」按住電源鍵和音量提高鍵,有可能不起作用。在這個recovery中,可以直接按平板電源鍵重啓,也可以通過彈出式菜單來重啓。

Nexus 10由Android 4.3升級至Android 4.4之主要步驟

  1. 在運行Android 4.3系統時,發現其提示可以升級至4.4,遂應用更新包,平板重啓之後提示簽名驗證錯誤。再開機後仍然進入4.3系統。
  2. 用「ES檔案瀏覽器」等應用程序,把根目錄下cache文件夾裡的28c35b553b1097af51f730c57e8c534f42662f42.signed-mantaray-KRT16S-from-JWR66Y.28c35b55.zip文件複製到「SD卡」(也就是「機身自帶的ROM存儲空間」)裡。
  3. 通過AirDroid、無線傳輸或數據線等方式,將剛纔的zip文件複製到電腦中。
  4. 用USB線連將平板連接至電腦。
  5. 打開命令提示符,執行「sudo ./adb devices」,確認平板已經和電腦連接好。
  6. 進入recovery,如果平板正中帶有紅色三角,其中還含有驚歎號,則說明該平板的recovery是官方版,而不是clockwork定製版。需要刷成clockwork。
  7. 通過recovery菜單開啓sideload功能(參見附錄D),在電腦命令行窗口執行「sudo ./adb sideload 更新包文件名」,即可更新Android系統了。如果更新包與adb在同一文件夾下,那麼「更新包文件名」前面不帶路徑,否則就帶上路徑。假如刷入更新包時卡在「send: …」這一行,那麼可將USB線由主機前端拔出,改插在電腦主機後端之USB接口上,重新執行刷包命令即可。
  8. 重啓系統後訪問SuperSU等程序,會發現root已失效,而且recovery可能也已經變成官方版了。請按照附錄C重刷root。

附錄A 進入bootloader的方法

  • 方法一:在設備正常開機,並與電腦相連的狀態下,在電腦終端機裡執行「sudo ./adb reboot-bootloader」,將設備引導至bootloader。
  • 方法二:把平板關閉,然後同時按住電源、音量加、音量減這三個鍵。

附錄B 進入recovery的方法

  • 方法一:在設備正常開機,並與電腦相連的狀態下,執行「sudo ./adb reboot recovery」,將設備引導至recovery。
  • 方法二:先進入bootloader,然後通過音量增減按鈕把菜單調整至「recovery mode」這一項,然後按電源鍵進入。

附錄C 由官方recovery刷clockwork定製版recovery,並順便root的辦法

  1. 將待刷的clockwork鏡像下載到電腦。下載網址:http://www.clockworkmod.com/rommanager
  2. 將supersu文件下載到平板ROM空間或電腦中。下載網址:http://download.chainfire.eu/supersu
  3. 進入bootloader,將平板與電腦相連,執行「sudo ./fastboot flash recovery 鏡像文件名」,如果鏡像與fastboot在同一文件夾下,那麼「鏡像文件名」前面不帶路徑,否則就帶上路徑。如果命令遲遲未執行完,則有可能是鏡像文件名太長或路徑太複雜而致,請把文件名與路徑起得簡潔一些,然後重啓平板,重新刷recovery。
  4. 刷完之後不要重啓,而是通過音量上、音量下按鈕直接把菜單調至「recovery mode」這一項,然後按電源鍵啓動至recovery。
  5. 如果supersu文件放在平板裡,那就在clockwork版recovery界面裡,選擇「flash zip from sdcard」菜單,然後選擇「choose zip from sdcard」菜單項,通過方向鍵定位至superus文件,將其刷入平板。若文件放在電腦裡,則先參考附錄D,在recovery界面裡開啓sideload功能,然後再於電腦端通過sideload方式將其刷入平板。(如果電腦使用Ubuntu操作系統,那麼可以在終端機裡通過「sudo ./adb sideload 待刷文件名」命令來執行sideload。)
  6. 返回上一級菜單,通過recovery的「reboot system now」菜單項重啓平板。
  7. 進入操作系統之後,如果能正常打開SuperSU程序,則說明root成功。

附錄D 在Recovery界面裡開啓sideload功能

  • 具體操作步驟可能因recovery之版本而不同,對於ClockwordMod Recovery v6.0.4.7來說,通過「install zip」菜單之「install zip from sideload」菜單項,即可啓用該功能。
  • 對於官方Recovery來說,可以「先」按住電源鍵不放,「再」按音量提高鍵,等待菜單彈出(翔按:有些設備可能要先鬆開音量提高鍵,再鬆開電源鍵,然後纔會彈出菜單),並通過其中選項來開啓sideload。

參考資料