構建安卓

按照這些說明開始構建 Android。

設置環境

初始化與環境envsetup.sh腳本:

source build/envsetup.sh

或者

. build/envsetup.sh

看到腳本平台/編譯/ envsetup.sh相關命令,包括描述午飯設備選擇的目標和小吃建設非捆綁的應用程序,如參考電視應用

你需要每之後重新發出此命令repo sync回升至該腳本進行任何更改。需要注意的是替換source. (單點)保存幾個字符,短格式在文檔中更常用。

envsetup.sh腳本進口的幾個命令,使您工作與Android源代碼,包括在這個練習中使用的命令。

要查看可用命令的完整列表,請運行:

hmm

選擇目標

午餐

選擇哪個目標建立與lunchlunch product_name - build_variant選擇product_name作為產品來構建,和build_variant作為變體的構建,並存儲在環境中這些選擇由的後續調用讀取m和其它類似命令。

確切的配置可以作為參數傳遞。例如,以下命令引用模擬器的完整構建,並啟用所有調試:

lunch aosp_arm-eng

如果不帶參數運行, lunch會提示您從菜單中選擇一個目標。參見選擇設備構建的所有現有設備的構建配置。

所有構建目標採取的形式BUILD-BUILDTYPE ,其中BUILD是指特定的特徵組合一個代號。 BUILDTYPE是以下情況之一。

構建類型
用戶訪問受限;適合生產
用戶調試與用戶類似,但具有 root 訪問權限和調試功能;首選調試
帶有附加調試工具的開發配置

userdebug 構建的行為應該與用戶構建相同,能夠啟用通常違反平台安全模型的額外調試。這使得 userdebug 構建非常適合具有更強診斷功能的用戶測試。當與userdebug建設發展,遵循userdebug準則

eng build 優先考慮在平台上工作的工程師的工程生產力。 eng 構建關閉了用於提供良好用戶體驗的各種優化。否則,eng 構建的行為類似於 user 和 userdebug 構建,以便設備開發人員可以查看代碼在這些環境中的行為。

有關建設和運行的實際硬件的詳細信息,請參閱閃光裝置

小吃

tapas命令配置非捆綁的應用程序的構建。它選擇要由 Android 構建系統構建的單個應用程序。不像lunchtapas不要求圖像的建設的設備。

運行tapas help有關命令的詳細信息。

構建代碼

本節是確保設置完成的快速摘要。

創造一切條件與mm可與處理並行任務-jN參數。如果你不提供-j參數,構建系統會自動選擇一個並行任務數它認為是為您的系統優化。

m

如上所述,您可以通過在列出他們的名字建立特定的模塊,而不是完整的設備鏡像m的命令行。此外, m提供特殊用途的一些pseudotargets。一些例子是:

  • droid - m droid是正常的構建。這個目標在這裡是因為默認目標需要一個名稱。
  • all - m all建立的一切, m droid ,它沒有做,再加上一切droid標籤。構建服務器運行這個以確保一切是在樹中有一個Android.mk文件的基礎之上。
  • m -運行構建從樹的頂端。這是有用的,因為你可以運行make的子目錄中。如果你有TOP環境變量設置,它使用。如果不這樣做,它會從當前目錄查找樹,嘗試找到樹的頂部。您可以通過運行的是構建整個源代碼樹m通過指定他們的名字不帶參數或建立具體目標。
  • mma -構建所有在當前目錄中的模塊,以及它們的依賴關係。
  • mmma -所有構建在提供的目錄中的模塊,以及它們的依賴關係。
  • croot - cd到樹的頂部。
  • clean - m clean刪除所有的輸出和中間文件此配置的。這是同rm -rf out/

運行m help看看其他pseudotargets m提供。

運行構建

您可以在模擬器上運行您的構建,也可以在設備上刷入它。因為你已經自己選定的構建目標lunch ,它不可能比它是建立在不同的目標來運行。

使用 fastboot 閃爍

閃爍的設備,使用fastboot ,其中應包括在創建成功後,你的路徑。見閃爍的設備的說明。

模擬 Android 設備

模擬器會在構建過程中自動添加到您的路徑中。要運行模擬器,請鍵入:

emulator

了解構建指紋

要跟踪和報告與特定 Android 構建相關的問題,了解構建指紋非常重要。構建指紋是一個唯一的、人類可讀的字符串,其中包含發布給每個構建的製造商信息。看到內指紋描述構建參數Android的兼容性定義文件(CDD),用於精確語法的部分。

構建指紋代表特定的 Android 實現和修訂。這個唯一的密鑰允許應用程序開發人員和其他人報告特定固件版本的問題。請參見報告錯誤為Android問題報告程序。

構建指紋封裝了所有 Android 實現細節:

  • API:Android 和本機,以及軟 API 行為
  • 核心 API 和一些系統 UI 行為
  • CDD 中定義的兼容性和安全性要求
  • 產品規格和用途,功能,通過應用程序用來滿足預期要求的目標設備設置
  • 硬件和軟件組件的實現

CDD完整詳細信息和添加新設備上創建一個全新的Android設備的指令。

解決常見的構建錯誤

錯誤的Java版本

如果你正在試圖建立一個版本的Android這是您的Java的版本不一致, make ,終止了一條消息,如:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

以下是可能的原因和解決方案:

  • 如未能在指定的安裝正確的JDK JDK的要求。請確保您已遵循以下步驟設置環境選擇對象
  • 之前安裝的另一個 JDK 出現在您的路徑中。將正確的 JDK 放在路徑的開頭或刪除有問題的 JDK。

沒有 USB 權限

默認情況下,在大多數 Linux 系統上,非特權用戶無法訪問 USB 端口。如果你看到一個權限被拒絕錯誤,請按照指示配置USB訪問

如果亞行已經運行並獲得建立這些規則後無法連接到該設備,你可以殺了它adb kill-server 。該命令會導致 ADB 使用新配置重新啟動。