本文作為 Android Framework 學習的開篇,主要介紹了在Mac環境下的原始碼下載、編譯、執行、匯入閱讀、除錯等步驟。裡面更多是整理不同文章的資訊,由於是一些配置較多的東西,所以這篇文章更多是記錄和供參考。
1 環境準備
- Mac 系統版本號
10.12.6
- XCode 版本號
8.3.3
我之前的系統是 Mac
10.13
,後來在編譯的過程中遇到各種問題,雖然大部分都解決了,但是在後面的虛擬機器執行中又遇到HAXM not support
等問題,所以最後選擇降級系統。Max系統降級可以參考該文章 手欠MacBook升級OS V10.13失敗,教你蘋果系統降級自救的方法
然後用一塊行動硬碟專門存放原始碼。這裡要對硬碟進行分割槽,分割槽型別選擇 Mac OS 擴充套件(區分大小寫,日誌式)
。大概要分出 250GB
大小。
2 原始碼下載
參見 github-android-open-source-project-analysis(2 下載repo工具 、3 下載原始碼)
3 編譯
下載完成後進入原始碼目錄,開始編譯。首先要切換shell,要使用 bash
進行編譯
chsh -s /bin/bash
複製程式碼
清空之前build的檔案
make clobber
複製程式碼
3.1 完整編譯
編譯需要設定環境變數和選擇打出image的版本
source build/envsetup.sh
lunch aosp_x86_64-userdebug //打出的img小一點 虛擬機器執行起來快一點
make -j8 //根據我的cpu執行緒數決定
複製程式碼
如果出現 JDK 沒有設定的錯誤,則執行
export ANDROID_JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
複製程式碼
參考 macOS(Sierra 10.12)上Android原始碼(AOSP)的下載、編譯與匯入到Android Studio - 編譯
參考 Android FrameWork學習(一)Android 7.0系統原始碼下載\編譯
3.2 部分編譯
當修改了部分模組後,不需要整體重新編譯,只需要編譯想應模組即可。
編譯需要設定環境變數和選擇打出image的版本
source build/envsetup.sh
lunch aosp_x86_64-userdebug
mmm ./packages/experimental/HelloAndroid/
make snod
複製程式碼
參考 進擊的程式設計師-1.6.1 匯入單獨編譯模組的mmm命令
4 執行
虛擬機器執行
emulator -partition-size 4096 -memory 2048
複製程式碼
5 匯入 Android Studio
先生成專案檔案
source build/envsetup.sh
mmm development/tools/idegen/
./development/tools/idegen/idegen.sh
複製程式碼
參考 Android FrameWork學習(二)Android系統原始碼除錯
跳轉問題:dependence順序要提到最上面
6 除錯debug
參考 Android FrameWork學習(二)Android系統原始碼除錯
7 aosp架構目錄簡介
https://blog.csdn.net/itachi85/article/details/54695046