在這裏咱們默認你們已經下載好了Android系統的源代碼,關於如何下載,網上有不少詳盡的教程,我這裏就再也不過多的贅述,不會的同窗能夠自行百度。android
使用Android Studio導入系統源代碼須要對代碼進行必定的編譯操做,若是有些同窗使用的是Windows系統,能夠嘗試在Cygwin下進行編譯,或者將在Linux下編譯生成的三個產物拷貝到Windows的源代碼根目錄下,也能夠起到同樣的效果。markdown
這裏須要執行如下四條命令:ionic
"source build/envsetup.sh" (source能夠用 . 代替,即". build/envsetup.sh")編輯器
"lunch",並選擇要編譯的項目。ide
"make idegen -j4" (這裏的 -j4 表示用4線程來編譯,能夠不加)性能
"sudo development/tools/idegen/idegen.sh"ui
下面進行分步講解:google
進入系統源碼的根目錄(便可以看到frameworks、kernel等等文件夾的那一級目錄),執行". build/envsetup.sh"命令url
繼續執行"lunch"命令,並選擇你想要編譯的那個項目.個人系統是FireFly Rk3399開發版提供的系統,可編譯的比較多。spa
選擇9,編譯rk3399_firefly-userdebug
3. 前面兩步是對編譯環境進行配置,接下來執行"make idegen -j4"
完成以上四個步驟以後,會發如今源碼根目錄下出現了三個新的文件(也有多是兩個)
android.iml (記錄項目所包含的module、依賴關係、SDK版本等等,相似一個XML文件)
android.ipr (工程的具體配置,代碼以及依賴的lib等信息,相似於Visual Studio的sln文件)
android.iws (主要包含一些我的的配置信息,也有可能在執行上述操做後沒有生成,這個不要緊,在打開過一次項目以後就會自動生成了)
"android.iml"和"android.ipr"通常是"只讀"的屬性,咱們這裏建議你們,把這兩個文件改爲可讀可寫,不然,在更改一些項目配置的時候可能會出現沒法保存的狀況,執行以下兩條命令便可。
sudo chmod 777 android.iml
sudo chmod 777 android.ipr
複製代碼
若是你的電腦性能足夠好(內存大於16G,代碼下載在SSD上),那麼能夠直接打開Android Studio,點擊"Open an existing Android Studio project"選項,找到並選中剛剛生成的"android.ipr"文件,點擊OK,就能夠開始導入項目了。 第一次導入,這個過程可能會持續好久,幾十分鐘或者超過一個小時。不過成功以後,之後再打開項目就會快不少了。
若是電腦性能通常的話,我建議,能夠在導入項目前,手動對"android.iml"文件進行一下修改,可使咱們導入的時間儘量的縮短一些。
首先,要保證"android.iml"文件已經添加了"可寫入"的屬性(上文中已經介紹瞭如何修改文件屬性)。
接下來,使用文本編輯器打開"android.iml"文件,並執行如下修改(僅表明個人我的習慣,也能夠根據同窗們的喜愛本身調整):
......
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="inheritedJdk" />
<orderEntryProperties />
</component>
</module>
複製代碼
等項目加載完成後,咱們還能夠經過Android Studio對Exclude的Module進行調整,因此也不用懼怕這裏Exclude掉了有用的代碼,或少Exclude了一部分代碼,在項目加載完之後再進行調整就好了。
如下是個人配置,你們能夠參考(因爲我比較關注Framework以及Telephony相關的代碼,因此重點保留了這兩部分,而其餘一些如kernel、bootloader的代碼,我就Exclude掉了,同窗們也能夠根據本身的需求來進行修改)。
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<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$/compatibility" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/developers/samples" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device/google" />
<excludeFolder url="file://$MODULE_DIR$/device/sample" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/flashing-files" />
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
<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$/prebuilt" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/shortcut-fe" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
複製代碼
完成以後,按照上面說的步驟,使用Android Studio選中"android.ipr"打開項目便可。