Android Studio 匯入 AOSP 原始碼

吳小龍同學發表於2019-02-13

有了 AOSP 原始碼,接下來就是如何看了,可以直接文字看,可以用 Source Insight,我當然選擇 Android Studio,Android Studio 是我熟悉且十分強大的工具。問題來了,如何將 AOSP 原始碼匯入 Android Studio?

安裝 Java

虛擬機器新裝的 Ubutun 一開始是沒有 Java 的,需要先安裝,輸入命令java,報以下錯誤:

Command `java` not found, but can be installed with:

sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless
複製程式碼

輸入以上命令進行安裝,然後整編(關於整編和單編下節細講)程式碼又報錯:

Your version is: openjdk version "10.0.1" 2018-04-17 OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1) OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode).
The required version is: "1.8.x"
複製程式碼

提示 Java 版本只能是 1.8.x,需要指定 Java 版本:

sudo update-alternatives --config java
複製程式碼

輸出:

有 2 個候選項可用於替換 java (提供 /usr/bin/java)。

選擇 路徑 優先順序 狀態
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 自動模式
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 手動模式
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 手動模式

要維持當前值[*]請按<Enter鍵>,或者鍵入選擇的編號:2

複製程式碼

擴充

JDK 也有門派之分的,那就是 Open JDK 和 Oacle JDK,其實我剛開編譯時,用的是 Oracle JDK,整編報錯:

You asked for an OpenJDK based build but your version is
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode).
複製程式碼

idegen.jar

在 Ubuntu 系統下,進入原始碼根目錄,執行如下命令:

source build/envsetup.sh
mmm development/tools/idegen/
複製程式碼

報錯:

Command `make` not found, but can be installed with:

sudo apt install make
sudo apt install make-guile
複製程式碼

命令安裝 make 成功後,再次執行mmm development/tools/idegen/,會在原始碼目錄下的 out/host/linux-x86/framework目錄下生成了 idegen.jar 檔案。

如果命令 mmm development/tools/idegen/ 一直報錯,可以嘗試一下命令 make idegen 依賴編譯下。

android.iml 和 android.ipr

在原始碼目錄下繼續執行如下命令:

development/tools/idegen/idegen.sh
複製程式碼

會在根目錄下生成
android.iml 和 android.ipr 這兩個檔案,這兩個檔案是 Android Studio 的工程配置檔案,這時候其實已經可以直接匯入 Android Studio,但會匯入所有的原始碼模組,會很慢,可以進行過濾,除了 frameworks 模組和 packages 模組,其他都給過濾掉,不匯入 Android Studio,開啟 android.iml 檔案,搜下excludeFolder,在後面加入如下程式碼:

<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
<excludeFolder url="file://$MODULE_DIR$/.repo" />
複製程式碼

匯入 Android Studio

我把 Android 原始碼拷到我的 Mac 上,開啟 Android Studio,選擇 Open an existing Android Studio project,找到原始碼目錄,點選 Android.ipr,Open,大約等 6 分鐘,匯入完畢,Enjoy coding

問題

發現 Android Studio 不停 scanning files to index,我的強迫症又犯了,解決:

1 invalidate and restart 不起作用;

2 右擊專案 –> Open module setting –> Modules –> 找到 gen 資料夾 –> 右鍵選擇 Resources,終於告別煩人的 scanning files to index。

系列部落格

VirtualBox 安裝 Ubuntu

AOSP 原始碼下載

AOSP 原始碼整編單編

參考

blog.csdn.net/HQZ82084401…

www.jianshu.com/p/fb16fa459…

blog.csdn.net/shisanmei91…

公眾號

我的公眾號:吳小龍同學,歡迎交流~

Android Studio 匯入 AOSP 原始碼

相關文章