編譯可在Nexus5上運行的CyanogenMod13.0(基於Android6.0)ROM

編譯可在Nexus5上運行的CyanogenMod13.0(基於Android6.0)ROM

@(Android研究)[android|CyanogenMod]android


[TOC]git


前言

下文中無特殊說明時CM表明CyanogenMod的縮寫。 下文中說的「設備」均指Android設備。github

proprietary-blobs.txt文件的路徑:device/lge/hammerhead/proprietary-blobs.txtshell

參考資料: How To Build CyanogenMod For Google Nexus 5 ("hammerhead")app

本文中只列出與上面的參考資料中不一樣的地方,因此須要將上面的參考資料與本文結合起來閱讀。ui

下載CM13.0 ROM

repo init -u git://github.com/CyanogenMod/android.git -b cm-13.0code

注意事項

構建ROM以前設備上必須先安裝相應的ROM

在參考資料中有這麼一段話:ip

Note:
Your device should already be running a build of CyanogenMod for the branch you wish to build for the extract-files.sh script to function properly.

這段話的意思是,若是你要爲Nexus5設備構建cm13.0的rom,你必須先在Nexus5設備中安裝cm13.0的rom。開發

仔細檢查extract-files.sh在終端中的輸出

仔細檢查extract-files.sh在終端中的輸出,由於這裏面可能包含一些執行時出錯的信息,一旦有錯誤信息就要修復錯誤,修復錯誤的思路請參考「問題解決」一節。rem

問題解決

adb拉取apk文件失敗

執行./extract-files.sh腳本時可能會出現下面的錯誤:

ERROR: Pull file /system/app/shutdownlistener.apk from a device running CyanogenMod
ERROR: Pull file /system/app/TimeService.apk from a device running CyanogenMod

這是因爲指定的apk文件路徑不對,要從設備上拉取的文件列表記錄在"proprietary-blobs.txt"中。

解決辦法

找到"proprietary-blobs.txt"文件中的下面兩行:

-/system/app/shutdownlistener.apk
-/system/app/TimeService.apk

更改成:

-/system/app/shutdownlistener/shutdownlistener.apk
-/system/app/TimeService/TimeService.apk

adb拉取/system/bin下面的文件失敗

執行./extract-files.sh腳本時可能會出現下面的錯誤:

remote object '/system/bin/bridgemgrd' does not exist

這個文件在設備上是存在的。這個文件在設備上的權限是:

-rwxr-xr-x 1 root shell 46900 2008-12-31 21:00 bridgemgrd

能夠發現other用戶是能夠讀取這個文件的,可是奇怪的是沒法經過adb pull命令拉取。

解決辦法

  1. 在CM ROM中是能夠開啓ROOT訪問的,此時個人CM ROM的設備上顯示的語言是英文的,因此我以英文來講。打開設備上的"Developer options"(即,開發者選項),找到"Root access"並點擊,而後點擊"Apps and ADB",這樣設置完後app和adb均可以無礙的申請root權限。
  2. 在pc的終端中輸入命令:adb root,表示設備上以root權限重啓adbd。

而後就再次adb pull拉取設備/system/bin目錄中的文件將會成功。

找不到/system/prev-app中的apk

執行./extract-files.sh腳本時可能會出現下面的錯誤:

ERROR: Pull file /system/priv-app/OmaDmclient/OmaDmclient.apk from a device running CyanogenMod
ERROR: Pull file /system/priv-app/SprintHiddenMenu/SprintHiddenMenu.apk from a device running CyanogenMod

解決辦法

找到"proprietary-blobs.txt"文件中的下面兩行:

-/system/priv-app/OmaDmclient/OmaDmclient.apk
-/system/priv-app/SprintHiddenMenu/SprintHiddenMenu.apk

更改成:

-/system/app/OmaDmclient/OmaDmclient.apk
-/system/app/SprintHiddenMenu/SprintHiddenMenu.apk

當遇到這個問題時只改"proprietary-blobs.txt"文件中的內容是不夠的。找到"device/lge/hammerhead/setup-makefiles.sh"文件,將該文件中相應的"priv-app"更改成"app"。找到"vendor/lge/hammerhead/proprietary/Android.mk"文件,將該文件中相應的"priv-app"更改成"app"。

相關文章
相關標籤/搜索