在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 構(gòu)建系統(tǒng)
下載源碼
根據(jù)設(shè)備構(gòu)建
Git 資源
構(gòu)建系統(tǒng)
Android 平臺(tái) 64 位構(gòu)建指導(dǎo)
初始化編譯環(huán)境
Android 源代碼
品牌指南
已知的問題
Repo 命令手冊
構(gòu)建內(nèi)核
Bug 的生命周期
代碼主線、分支和版本
使用 Eclipse
提交補(bǔ)丁
下載與構(gòu)建
參與
項(xiàng)目角色
補(bǔ)丁的生命周期
提交 Bugs
關(guān)于代碼風(fēng)格的指導(dǎo)
開發(fā)
代碼名稱,標(biāo)簽和版本號

構(gòu)建系統(tǒng)

下面的信息對于構(gòu)建 Android 資源樹的指導(dǎo)適用于各個(gè)分支,包括 master 分支。

選擇一個(gè)分支

有些構(gòu)建工程的環(huán)境所需要的請求,是需要搞清楚你計(jì)劃要編譯這些代碼所使用的版本的。請查看 Codenames,Tags,and Build Numbers 里面完整的分支列表以供你來選擇。你也可以選擇下載,構(gòu)建最新版本源代碼(被稱之為 master),這樣你需要做的僅僅是在初始化倉庫時(shí),刪除之前的分支即可。

當(dāng)已經(jīng)選擇一個(gè)分支后,就跟著下面的指導(dǎo)去創(chuàng)建你的構(gòu)建環(huán)境。

基礎(chǔ)的構(gòu)建命令系列如下所示:

初始化

envsetup.sh 腳本來初始化環(huán)境。值得注意的是,用 . (一個(gè)單獨(dú)的點(diǎn))來替換 source 節(jié)省一些符號,簡寫也更方便的在說明文檔中使用。

$ source build/envsetup.sh

或者是

$ . build/envsetup.sh

選擇一個(gè)目標(biāo)

選擇一個(gè)目標(biāo)用 lunch 來建立。明確的配置信息可以通過一個(gè)參數(shù)來實(shí)現(xiàn)。比如像下面的命令:

$ lunch aosp_arm-eng

這個(gè)命令是構(gòu)建一個(gè)模擬器,并且可以使用 debug 模式。

如果使用沒有參數(shù)的 lunch 將會(huì)及時(shí)的提醒你從菜單中選擇一個(gè)目標(biāo)參數(shù)。

所有構(gòu)建目標(biāo)可以從 BUILD-BUILDTYPE,BUILD 是一個(gè)代碼名稱,依賴于特定參數(shù)的混合體。這里是一部分的列表:

Build name Device Notes
aosp_arm ARM emulator AOSP,fully configured with all languages,apps,inputs methods
aosp_maguro maguro AOSP, running on Galaxy Nexus GSM/HSPA+ ("maguro")
aosp_panda panda AOSP, running on PandaBoard ("panda")

下列顯示的是其中一個(gè)的 BUILDTYPE:

Buildtype Use
user limited access; suited for production
userdebug like "user" but with root access and debuggability; preferred for debugging
eng development configuration with additional debugging tools

要想查看更多有關(guān)構(gòu)建以及運(yùn)行在真機(jī)的信息,請看 Building for Devices

構(gòu)建代碼

make 可以完成任何事情。GUN 可以用一個(gè) -jn 參數(shù),傳遞一個(gè)平行的任務(wù),一般來說使用一個(gè)介于 1 和 2 之間的參數(shù) N,乘以在電腦上用于構(gòu)建硬件線程的數(shù)量。比如,在一個(gè) dual-E5520(2 個(gè) cpu,每個(gè) 4 核 ,每核 2 個(gè)線程)上,最快的構(gòu)建是使用命令 make -j16make -j32。

$ make -j4

運(yùn)行它!

你既可以運(yùn)行你 build 在模擬器上,也可以在真機(jī)上。請注意你已經(jīng)用 lunch 選中了你需要構(gòu)建的目標(biāo),而且他不大可能運(yùn)行在與構(gòu)建目標(biāo)不相符的地方。

在設(shè)備上運(yùn)行

為了在設(shè)備上運(yùn)行,你需要使用 fastboot ,這個(gè)命令需要你在成功構(gòu)建之后,添加到你的 PATH 中。將設(shè)備置于 fastboot 模式,你既可以手工的在根目錄下添加 key,也可以用下面的腳本命令:

$ adb reboot bootloader

一旦設(shè)備在 fastboot 模式下,運(yùn)行

$ fastboot flashall -w

-w 選項(xiàng)用于清除在設(shè)備上 /data 分區(qū);這個(gè)選項(xiàng)很適合第一次刷入真機(jī),但在某些情況下并非必要。

要想查看更多有關(guān)構(gòu)建以及運(yùn)行在真機(jī)的信息,請看 Building for Devices。

Android 模擬設(shè)備

模擬器將會(huì)自動(dòng)被構(gòu)建進(jìn)程添加在你的路徑中。要啟動(dòng)模擬器,請輸入:

$ emulator

使用 ccache

ccache 是一種編譯緩存,為的是讓 C 和 C++ 更快的構(gòu)建的。在資源樹的根目錄下,按照下面的說明去做:

$ export USE_CCACHE=1
$ export CCACHE_DIR=/<path_of_your_choice>/.ccache
$ prebuilts/misc/linux-x86/ccache/ccache -M 50G

建議的緩存大小是 50-100 G。

在 Linux 上,你可以通過以下的操作查看 ccache :

$ watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s

在 Mac OS 上,你應(yīng)該用 darwin-x86 來替換掉 linux-x86。

當(dāng)使用 Ice Cream Sandwich (4.0.x) 或者是這之前的版本時(shí),你應(yīng)該用 prebuilt 來替換掉 prebuilts/misc。

分析解決常見構(gòu)建錯(cuò)誤

錯(cuò)誤的 Java 版本

如果你嘗試用與 Android 不對應(yīng)的 Java 版本,make 命令將會(huì)終止,并提示下面的信息:

************************************************************
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/download.html
************************************************************

出現(xiàn)這一現(xiàn)象可能的原因是:

  • 安裝在初始化構(gòu)建環(huán)境中所說的 JDK 失敗。
  • 另一個(gè)之前版本的 JDK 出現(xiàn)在你的路徑中。將正確的 JDK 放在你的 PATH 的開頭處,或者從環(huán)境變量中刪除導(dǎo)致問題的 JDK。

Python 版本 3

Repo 的基于特殊功能的 Python 2.x,但是不幸的是和 Python 3 相沖突。為了使用 Repo,請安裝 Python 2.x:

$ apt-get install python

忽略文件系統(tǒng)的情況

如果你正在 Mac OS 上構(gòu)建一個(gè) HFS 文件系統(tǒng),你可能會(huì)偶然遇見下面的錯(cuò)誤:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

請根據(jù)初始化構(gòu)建環(huán)境中的說明創(chuàng)建一個(gè)敏感的磁盤鏡像。

沒有 USB 權(quán)限

在大多數(shù) Linux 系統(tǒng)上,沒有特權(quán)的用戶不能通過默認(rèn)的 USB 端口。如果你看見一個(gè)權(quán)限拒絕錯(cuò)誤,請根據(jù)初始化構(gòu)建環(huán)境來配置你的 USB 入口。

如果 adb 已經(jīng)運(yùn)行,并且通過剛才的規(guī)則也不能連接到設(shè)備,這時(shí)可以通過 adb kill-server 命令殺死。這將會(huì)導(dǎo)致 adb 使用新的配置重啟。