Android源碼目錄結構如下:
|-- Makefile
|-- abi (applicationbinary interface,應用程序二進制接口,生成libgabi++.so相關庫文件)
|-- art (google在4.4后加入用來代替Dalvik的運行時)
|-- bionic (Android的C library,即C庫文件)
|-- bootable (啟動引導相關代碼)
|-- build (存放系統編譯規則及generic等基礎開發配置包)
|-- cts (Android兼容性測試套件標准)
|-- dalvik (dalvik JAVA虛擬機)
|-- developers (開發者用,存放幾個例子)
|-- development (開發者需要的一些例程及工具)
|-- device (設備相關代碼,這是各廠商需要配置和修改的代碼)
|-- docs (介紹開源相關文檔)
|-- external (android使用的一些開源的模組)
|-- frameworks (核心框架——java及C++語言)
|-- hardware (部分廠家開源的硬解適配層HAL代碼)
|-- kernel (驅動內核相關代碼)
|-- libcore (核心庫相關)
|-- libnativehelper (JNI用到的庫)
|-- ndk (ndk相關)
|-- out (編譯完成后的代碼輸出目錄)
|-- packages (應用程序包)
|-- pdk (google用來減少碎片化的東西)
|-- prebuilt (x86和arm架構下預編譯的一些資源)
|-- sdk (sdk及模擬器)
|-- tools (工具)
|-- system (底層文件系統庫、應用及組件——C語言)
|-- vendor (廠商定制代碼)
我們可以發現在源碼根目錄有個development文件夾,里面放了開發者需要的一些例程及工具,要將Android系統源碼導入Android studio就需要用到里面的工具。
首先導入系統源碼需要占用大量的內存所以需要在Android studio安裝目錄下的bin文件夾中的studio64.exe.vmoptions或者studio.exe.vmoptions文件中中-Xms和-Xmx的值改大(根據電腦內存自行修改)。
接下來,執行Android系統代碼編譯環境相關初始化命令后,執行下面命令:
mmm development/tools/idegen/
然后執行
development/tools/idegen/idegen.sh
等出現下面結果
Read excludes: 13ms
Traversed tree: 143977ms
執行完后,會在源碼的根目錄下生成android.ipr和android.iml文件。使用Android studio打開android.ipr文件,就可以導入系統源碼了。
由於Android系統源碼比較龐大,導入比較耗時,建議先修改android.iml排除一些代碼,語法如下:
<excludeFolder url="file://$MODULE_DIR$/.repo" />
比如,我只關注framework中的源碼,我就可以把其他目錄排除(其他目錄只是以文件方式導入,其中的類之間不存在鏈接)。
<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" />
導入源碼后如何設置源碼依賴
首先刪除原來的依賴,只留下下圖紅框項
把SDKs中不必要的SDK項刪除,同時把Android API的classpath和sourcepath下的內容都刪掉
接着點擊加號的JARs or directories將你源碼的frameworks及external和你用到的其他跳轉目錄添加到依賴中,然后apply即可。
參考:
http://www.cnblogs.com/Lefter/p/4176991.html
http://www.jianshu.com/p/c2389cb35565