久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Android8.1源碼編譯實踐(Mac)

 怡紅公子0526 2022-01-10

第0步:版本選擇

AOSP版本選擇很重要,如果選錯了,,會造成編譯失敗等各種問題,,編譯AOSP對Xcode的版本是有要求的;

比如:AOSP6.0-7.0,,要求Xcode的版本是8.3,,然而在MacOS 10.14上面是不支持Xcode8.3的這就很尷尬;
由于現(xiàn)在大家的Mac環(huán)境基本是更新到最新的10.14了,,所以這里推薦大家選擇android-8.1.0_r1,。

編譯環(huán)境:

  • OS: macOS Mojave 10.14.4
  • JDK: 1.8.0_144
  • Xcode: 10.2.1
  • XcodeSDK: 10.11
  • AOSP: android-8.1.0_r15
  • Git: 2.21.0

第一步:創(chuàng)建區(qū)分大小寫的磁盤映像

由于Mac OS的文件系統(tǒng)默認是不區(qū)分大小寫的,Git 并不支持此類文件系統(tǒng),,而且此類文件系統(tǒng)會導致某些 Git 命令(例如 git status)的行為出現(xiàn)異常,,所以我們需要在區(qū)分大小寫的文件系統(tǒng)中對 AOSP 源文件進行操作。

通過 shell 使用以下命令創(chuàng)建磁盤映像:

# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 150g ~/android.dmg

這里設(shè)置分配150g的大小,,這將創(chuàng)建一個 .dmg(也可能是 .dmg.sparseimage)文件,,該文件在裝載后可用作具有 Android 開發(fā)所需格式的存儲卷。

如果您以后需要更大的存儲卷,,還可以使用以下命令來調(diào)整稀疏映像的大?。?/p>

# hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

雙擊生成的.dmg.sparseimage文件,就會看到掛載的磁盤了,,之后所有操作都在這個磁盤分區(qū)中進行,您可以像對待外接硬盤一樣將其彈出(卸載),。

如果你喜歡在命令行中掛載/卸載分區(qū),可以向 ~/.bash_profile 中添加輔助函數(shù):

# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }

注意文件名路徑是否一致,,要使.bash_profile配置生效,,需要:

# source ~/.bash_profile

之后你就可以在命令行中通過mountAndroid和unmountAndroid來操作了。

第二步:安裝所需的程序包

安裝 Xcode 命令行工具:

一般在安裝Xcode的時候會自動安裝命令行工具,,這里保險起見,,檢查一下:

# xcode-select --install

通過 macports.org 安裝 MacPorts,。

將以下內(nèi)容添加到~/.bash_profile中

export PATH=/opt/local/bin:$PATH

通過 MacPorts 獲取 Make,、Git 和 GPG 程序包:

# POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

如果您使用 Mac OS X v10.4,還需要安裝 bison:

# POSIXLY_CORRECT=1 sudo port install bison

設(shè)置文件描述符數(shù)量上限

在 Mac OS 中,,可同時打開的文件描述符的默認數(shù)量上限太低,,在高度并行的編譯流程中,可能會超出此上限,。

要提高此上限,,請將下列行添加到 ~/.bash_profile 中:

# set the number of open files to be 1024
ulimit -S -n 1024

第三步:下載源代碼

安裝Repo

Repo 是一款工具,可讓您在 Android 環(huán)境中更輕松地使用 Git.
直接運行下面的命令:

# curl https://storage./git-repo-downloads/repo > ~/repo

會在主目錄下生成repo文件,接著給他賦予可執(zhí)行的權(quán)限:

# chmod a+x ~/repo

為了可以方面的使用repo命令,我們把它移動到/opt/local/bin里面,因為這個路徑我們在上一步中已經(jīng)加入到PATH了,,所以我們可以在任何一個地方執(zhí)行repo命令;

# mv ~/repo /opt/local/bin

同步源碼

進入第一步中創(chuàng)建好的分區(qū),,建立工作目錄:

# mkdir aosp
# cd aosp

repo的運行過程中會嘗試訪問官方的git源更新自己,,如果想使用tuna的鏡像源進行更新,,可以將如下內(nèi)容復制到你的~/.bash_profile里:

export REPO_URL='https://mirrors.tuna./git/git-repo/'

設(shè)置Git用戶名和郵箱:

# git config --global user.name "Your Name"
# git config --global user.email "[email protected]"

初始化repo,這里采用清華大學的鏡像,,并設(shè)置分支android-8.1.0_r15:

#repo init -u https://aosp.tuna./platform/manifest -b android-8.1.0_r15

最后一步:

# repo sync

源碼同步過程中常常會因為網(wǎng)絡(luò)因素而斷開,,如果斷開了繼續(xù)執(zhí)行repo sync命令即可,直到下載完成,。

漫長的等待......


下載完成后差不多占用70G大小,,因為我們后續(xù)不需要再進行分支切換與同步,所以我們可以把目錄下的.repo文件夾給刪除了,,畢竟Mac的SSD容量寶貴,,刪除之后你會發(fā)現(xiàn)硬盤大小沒有釋放,這就有點尷尬了,,這個問題目前也沒找到解決的辦法,,我的方法是按照第一步創(chuàng)建一個新的分區(qū),把內(nèi)容拷貝進去,,然后把舊的分區(qū)刪了,,這樣空間就釋放了。

編譯源碼

優(yōu)化編譯環(huán)境 設(shè)置 ccache

要使用 ccache,,請在源代碼樹的根目錄下執(zhí)行以下命令:

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

注意<path_of_your_choice>是你源碼下載的根目錄,。

最后請將以下內(nèi)容添加到 .bash_profile(或等同文件)中:

export USE_CCACHE=1

配置ANDROID_JAVA_HOME環(huán)境變量

在~/.bash_profile中添加以下內(nèi)容,前提必須是安裝了JDK1.8:

export ANDROID_JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

設(shè)置XcodeSDK的版本

執(zhí)行以下命令,,打開配置文件:

# vi build/soong/cc/config/x86_darwin_host.go

查看darwinSupportedSdkVersions,,這里列出了支持的sdk版本:

darwinSupportedSdkVersions = []string{
    "10.10",
    "10.11",
    "10.12",
    }

接著我們進入以下目錄查看現(xiàn)有的XcodeSDK版本:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

這里我們選擇10.11的版本,如果沒有MacOSX10.11.sdk則去MacOSX-SDKs 中下載一個,,解壓到該目錄,,并把其他版本的刪除,確保只保留一個就行了,。

開始編譯

首先要把shell切換到bash(如果你使用的是zsh)

#chsh -s /bin/bash

初始化環(huán)境:

#source build/envsetup.sh

選擇編譯的分支:

#lunch

會出現(xiàn)以下列表:

Lunch menu... pick a combo:

 1. aosp_arm-eng
 2. aosp_arm64-eng
 3. aosp_mips-eng
 4. aosp_mips64-eng
 5. aosp_x86-eng
 6. aosp_x86_64-eng
 7. aosp_car_arm-userdebug
 8. aosp_car_arm64-userdebug
 9. aosp_car_x86-userdebug
 10. aosp_car_x86_64-userdebug
 ... ... 

Which would you like? [aosp_arm-eng]

要求輸入對應(yīng)的數(shù)字:
如果你想在你的Nexus上設(shè)備運行,請參照官方設(shè)備對應(yīng)列表選擇,;
如果你只想在本機的虛擬機上運行,Mac系統(tǒng)的話選擇aosp_x86-eng即可,。

最后一步,,編譯:

#make -j6

通過-jN參數(shù)來設(shè)置編譯的并行任務(wù)數(shù),以提高編譯速度,,在此前我的CPU核心數(shù)為6,,這里N值最好選在6到12之間,這里我們設(shè)置6個并行任務(wù)進行編譯,。

這里需要注意的是,,每次退出再進入命令行要執(zhí)行以上命令之前,都要先執(zhí)行:

#source build/envsetup.sh

編譯中遇到的問題

問題1:Jack編譯報錯:communication error with Jack server

原因:JACK編譯器不支持多用戶同時編譯,,其他用戶在編譯,,端口被占用,。

解決方法:
如下:修改以下兩個配置文件中的端口號server.service.port和server.admin.port,比如都改為8096/8097:

  1. ~/.jack-settings
  2. ~/.jack-server/config.properties

注意:
兩個文件中的端口號必須一致,。
修改后的端口號必須是沒有被使用的。

問題2: 出現(xiàn)Try increasing heap size with java option '-Xmx'

原因: 出現(xiàn)這個錯誤是由于電腦內(nèi)存不足,;
解決方法:在命令行分別執(zhí)行以下三條語句,,然后繼續(xù)編譯;

# export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g" 
# ./prebuilts/sdk/tools/jack-admin kill-server 
# ./prebuilts/sdk/tools/jack-admin start-server

問題3: BISON_PKGDATADIR=external/bison/data prebuilts/misc/darwin-x86/bison/bison -d

在log中出現(xiàn)BSION等字樣,;

原因:網(wǎng)上說這個bsion的一個bug,;
解決方法:拉取新的分支,重新編譯 bison:

#cd external/bison
#git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160

如果這步驟發(fā)生錯誤了(比如之前刪除了.repo文件夾)
這時候我們就把bison這個文件夾刪除,,下載一個新的:

wget https://android./platform/external/bison/+archive/c0c852bd6fe462b148475476d9124fd740eba160.tar.gz

解壓后進入bison文件夾,,執(zhí)行:

# mm
# cp out/host/darwin-x86/bin/bison prebuilts/misc/darwin-x86/bison/

結(jié)束

最后一切順利的話,經(jīng)過漫長的編譯后,,最終會出現(xiàn)以下畫面則說明編譯Android系統(tǒng)成功了,。
Xnip2019-05-18_22-22-31

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多