Macbook Pro下載並編譯Android原始碼並匯入Android Studio
最近嘗試下載並編譯Android的原始碼,過程比較曲折,所以特別的記錄一下。
環境
mac系統:OS X EI Captian 10.11.6
Android原始碼:Android 7.0
JDK: jdk 1.8.0_77
下載原始碼
step1:因為我的mac硬碟空間比較小,所以我直接在行動硬碟上操作的,如果mac的空間夠大也可以在內建硬碟操作。由於mac檔案系統模式預設是不區分大小寫的,但是AOSP託管在git上是區分大小寫的,所以這裡我們需要建立一個映象。具體操作如下:
方法一:使用命令列(AOSP目前比較大,建議至少預留80G+的空間):
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 80g /Volumes/aosp/android.dmg
生成映象的位置是可以自己定義的,我這裡是放在了行動硬碟中。如果需要更大的磁碟空間,可以用下面的命令列來改變磁碟映象的大小:
hdiutil resize -size <new-size-you-want>g /Volumes/aosp/android.dmg
方法二:使用mac自帶的磁碟工具,選擇New Image,分配至少80G大小的空間;保證選擇格式為OSX 擴充套件(區分大小寫,日誌式)的卷。一定要選區分大小寫,日誌式
這時在/Volumes/aosp/下會生成一個android.dmg的映象,雙擊這個映象,將其掛載。這樣在mac Finder中就可以看到我們剛剛的建立的映象了。
Step2 Mac 系統下預設只能同時開啟 1024 個檔案,而在進行 Android 原始碼編譯時有可能會超出這個限制,因此需要解除這個限制。在~/.bash_profile中新增以下內容:
# set the number of open files to be 1024
ulimit -S -n 1024
Step3 安裝repo及同步AOSP原始碼
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
由於眾所周知的原因,我們如果直接使用官方下載會非常的困難,那麼我們可以考慮使用國內的源,比較好用的就是清華映象。按照清華源的步驟去同步就可以了:
cd /Volumes/aosp/ #將當前路徑切換到剛剛掛載的的映象中
wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下載初始化包
tar xf aosp-latest.tar
cd AOSP
repo sync # 正常同步一遍即可得到完整目錄
如果repo沒有配置環境變數,那麼需要把repo的絕對路徑加上,例如剛剛把repo下載到~/bin下了,那麼在同步時應該是~/bin/repo sync。安靜的等待原始碼下載同步完成。
編譯原始碼
step1 在原始碼的當前路徑下:
$ source build/envsetup.sh
如果不出意外會得到以下結果:
step2:接下來就是根據裝置選擇target
我這裡選擇的是5 aosp_x86-eng。每個選項對應的device可以在這裡檢視 如果打不開,我截了張圖,大家可以根據自己的情況選擇
選擇好target後就可以直接進行編譯了
不過在這之前你可能還需要下載驅動(如果只是想檢視原始碼也可以忽略該步)
將下載下來的檔案解壓到原始碼的根目錄會得到三個.sh的檔案,依次執行三個檔案,例如:
$ ./extract-broadcom-hammerhead.sh
The license for this software will now be displayed.
You must agree to this license before using this software.
Press Enter to view the licensels
回車後檢視license,翻到license最後,輸入I ACCEPT後回車,這時會將驅動檔案釋放到vendor目錄。
step3:
$ make -j8
使用make構建,該命令可以通過使用-jN引數來處理並行任務。此處的N,根據所用的計算機的硬體的核數來指定,一般N指定為CPU核心的1到2倍。接下來就是漫長的編譯過程,具體編譯時長得看機器的情況了。並且有可能出現各種問題,這個時候不要著急,可以根據錯誤日誌搜尋,一般都能找到解決辦法。解決之後,在接著執行上邊的make 命令就好,會繼續在你中斷的地方開始編譯。
最後如果出現:
make completed successfully
那麼恭喜你,編譯成功了,因為我這裡選擇的是模擬器的,所以可以通過
$ emulator
直接啟動,剛剛編譯的系統。(如果沒有下載驅動,可能會卡在啟動頁面。)
匯入Android Studio
在編譯玩Android原始碼後,我們繼續編譯生成Android studio工程:
soruce build/envsetup.sh
mmm development/tools/idegen/
sudo ./development/tools/idegen/idegen.sh
其中mmm development/tools/idegen/執行完成後會生成idegen.jar,而sudo ./development/tools/idegen/idegen.sh則會在原始碼目錄下生成IEDA工程配置檔案:android.ipr,android.iml及android.iws.這三個檔案
android.ipr:通常是儲存工程相關的設定,比如編譯器配置,入口,相關的庫等
android.iml:則是主要是描述了modules,比如modules的路徑,依賴關係等.
android.iws:則主要是包含了一些個人工作區的設定.
接下來,開啟Android Studio,點選File->Open,選擇剛才生成的android.ipr檔案即可,然後就是漫長的等待,注意此時是將原始碼完全匯入到AS中了,不出意外,你會覺得AS執行會卡頓。還需要我們忽略掉一些不經常使用的包。
在Android Studio匯入成功之後,專案結構如下:
紅色的表示已經被忽略了,沒有匯入,那麼也可以通過以下方法來對指定的包進行修改是否匯入:
也可以直接在project Structure中進行修改:
在修改完後,我們可以在android.iml可以看到,我們忽略匯入了那些包:
如果熟悉了包的結構,就可以直接在該檔案中,完成忽略匯入的操作,是最快捷的方式。
這樣我們就可以使用Android Studio閱讀原始碼了,在原始碼閱讀過程中可能會出現跳轉到SDK對應的方法中的問題,這個時候,需要先配置一下SDK,然後修改專案依賴就可以了。到這兒,就可以越快的擼原始碼了。Good Luck
相關文章
- Android Studio匯入原始碼Android原始碼
- 手把手教你在Mac OS下載、編譯及匯入Android原始碼Mac編譯Android原始碼
- Android Studio 匯入 AOSP 原始碼Android原始碼
- Ubuntu14.04下編譯Android8.1.0原始碼並刷入到裝置Ubuntu編譯Android原始碼
- Android 11 原始碼下載+編譯教程Android原始碼編譯
- spring framework原始碼下載並匯入eclipseSpringFramework原始碼Eclipse
- Android Studio匯入github下載的工程AndroidGithub
- Ubuntu下Android原始碼以及核心下載與編譯UbuntuAndroid原始碼編譯
- Android學習系列(38)--Android原始碼下載和編譯Android原始碼編譯
- android原始碼學習之原始碼編譯並nexus s真機刷機Android原始碼編譯
- Android Studio匯入Eclipse專案原始碼AndroidEclipse原始碼
- 編譯Android原始碼編譯Android原始碼
- Android 原始碼的下載和編譯環境的安裝及編譯Android原始碼編譯
- Android原始碼編譯--整理Android原始碼編譯
- [Android]Android原始碼下載Android原始碼
- 學習Hibernate原始碼一_下載hibernate原始碼並編譯為eclipse專案原始碼編譯Eclipse
- VasSonic原始碼之並行載入原始碼並行
- android studio生成並引用aarAndroid
- Android 原始碼下載Android原始碼
- 將AOSP原始碼匯入到Android Studio進行檢視原始碼Android
- MacOS X 編譯Android原始碼Mac編譯Android原始碼
- Android FrameWork 之原始碼編譯AndroidFramework原始碼編譯
- Android原始碼閱讀-編譯8.0原始碼Android原始碼編譯
- Spring原始碼學習一_下載Spring專案原始碼並編譯為Eclipse專案Spring原始碼編譯Eclipse
- 編譯並裁剪 FFmpeg 在 Android 上做視訊編輯編譯Android
- Android Studio匯入Demo方法Android
- 原始碼的下載與編譯原始碼編譯
- 在Ubuntu9.10下編譯Android原始碼薦Ubuntu編譯Android原始碼
- Android原始碼下載之《Android新聞client原始碼》Android原始碼client
- Android 原始碼中的編譯命令Android原始碼編譯
- Android原始碼編譯整理總結Android原始碼編譯
- android 反編譯APK取原始碼。Android編譯APK原始碼
- 在windows下匯入react專案並且打包編譯後部署到nginx上WindowsReact編譯Nginx
- Windows下編譯Caffe並編譯Matlab介面Windows編譯Matlab
- windows下基於cmake配置opencv並使用visual studio編譯WindowsOpenCV編譯
- 【轉】編譯Android系統原始碼和核心原始碼編譯Android原始碼
- Android studio 匯入依賴庫Android
- 記一次編譯Android原始碼編譯Android原始碼