在Mac上面能夠參考這篇文章進行刷機.歸納來講解釋從官方下載rom包,解壓後運行./flash-all.sh腳本。在這裏我下載了Nexus 6p的官方的rom包,咱們看看這個文件中的內容是什麼?
下面就是腳本文件的內容android
fastboot flash bootloader bootloader-angler-angler-02.45.img fastboot reboot-bootloader sleep 5 fastboot flash radio radio-angler-angler-02.50.img fastboot reboot-bootloader sleep 5 fastboot -w update image-angler-mmb29p.zip
image-angler-mmb29p.zip又是什麼呢?解開後就是這麼幾個文件:xcode
android-info.txt boot.img cache.img recovery.img system.img userdata.img vendor.imgapp
有沒有很熟悉,其實就是咱們編譯後,生成的幾個Image文件。ui
在製做rom包的過程當中,咱們還須要特定Nexus機器的驅動包,由於這些驅動包不屬於AOSP,須要單獨下載跟其餘AOSP產生的*.img文件一塊兒打包才成爲一個完整的rom包.以往的驅動包,google都會提供,此次的驅動包google沒有提供了.從Hamilton Turner的回答中,咱們知道Nexus 5x/6p的刷機包中驅動再也不是必須的,由於這兩款機型中全部的驅動都存在於一個單獨的vendor分區,所以沒有必要在編譯的時候就放入system.img中。google
具體的錯誤以下所示:code
myhost:android-4.4.4_r2.0.1 carl$ lunch aosp_x86-eng build/core/combo/HOST_darwin-x86.mk:65: ***************************************************** build/core/combo/HOST_darwin-x86.mk:66: * Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk build/core/combo/HOST_darwin-x86.mk:67: ***************************************************** build/core/combo/HOST_darwin-x86.mk:68: *** Stop.. Stop.
具體錯誤的緣由是,在編譯腳本中會檢查當前的Xcode sdk的版本是不是兼容的,這多是由於你mac上的xcode版本比較新,在Android源代碼中尚未添加上.理論上說應該用Android代碼對應的Xcode SDK版原本編譯,否則可能會有兼容性的問題。可是我本身實測最新的xcode版本是能夠正常編譯Android源代碼的,具體的方法以下所示:
你能夠到Xcode的sdk路徑下(/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs)查看當前系統的SDK版本是多少。好比個人SDK版本是MacOSX10.11.sdk,接下來編輯build/core/combo/mac_version.mk中的mac_sdk_versions_supported所在的行添加10.11就好了。在運行下lunch命令,是否是就行了。orm