1. 程式人生 > >[Android]Android Studio 匯入FWK 和 packages app 等原始碼

[Android]Android Studio 匯入FWK 和 packages app 等原始碼

start:

之前一直用source insight + opengrok組合看android原始碼,包括Java,C/C++等,覺得挺方便了的。

最近負責的模組重點轉向FWK,想加一個工具Android studio。

用 AS 載入 FWK / packages_app等 java,XML檔案來檢視Android 上層原始碼,發揮AS 的實用性。

本文將AS匯入android原始碼的step加以記錄。

1.  準備好原始碼。可參考如下配置,不能文明上網的,可以用國內的Android的映象源。

https://source.android.com/source/downloading.html

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

可以在命令後面加上 --depth=1 ,指定接下來的repo sync指令, 我們只需要下載 repo init命令中所指定分支的最後一版資料。

如果某個project要下載完整的,可以在對應的project下(比如 Frameworks/base)執行 git fetch --unshallow

 

2.  編譯原始碼。

source build/envsetup.sh

lunch xxx_userdebug

time make -j32 2>&1 | tee build_userdebug.log; date

 

3.生成IEDA工程配置檔案。

mmm development/tools/idegen/
sudo ./development/tools/idegen/idegen.sh

用命令在android根目錄下生成以下三個檔案:

android.ipr:通常是儲存工程相關的設定,比如編譯器配置,入口,相關的libraries等
android.iml:則是主要是描述了modules,比如modules的路徑,依賴關係等.
android.iws:則主要是包含了一些個人工作區的設定.

 

4.Android studio載入。

使用AS開啟android.ipr檔案,就可以匯入系統原始碼了。
由於Android系統原始碼比較龐大,匯入比較耗時,建議先修改android.iml排除一些程式碼。

語法如下
<excludeFolder url="file://$MODULE_DIR$/.repo" />

如果只檢視FWK,可以如下新增

<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<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$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/ndk" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/packages" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/prebuilt" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/tools" />

另外,如果AS 和 code 在 ubuntu下,直接載入全部的 Java 程式碼, 也不費一頓飯的時間,親測。

Windows下,卡卡卡,親測。

end.