1. 程式人生 > >使用Android studio檢視Android原始碼

使用Android studio檢視Android原始碼

轉載自 http://blog.csdn.net/Easyhood/article/details/53466648

一,準備工作

在使用Android Studio檢視原始碼之前,你需要做下面幾件事:

下載Android原始碼

進行過一次完整編譯(不編譯是無法進行原始碼匯入工作的)

以上操作可以參考Google 官方教程 以確保萬無一失(呵呵).上面的幾個連結需要翻牆才可以訪問,不過有興趣看這篇文章的人,大部分應該都是知道VPN的.

或者沒有VPN不會翻牆的,速度去賣一個VPN,能花錢解決的事情,就不要花時間.

二,開始

進入Android 原始碼根目錄 
執行 
mmm development/tools/idegen/ 
這行命令的意思是編譯

idegen這個專案,生成idegen.jar檔案.生成成功後,會顯示這個jar包的位置,並顯示 #### make completed successfully (43 seconds) #### ,如果編譯失敗了,後面會講到這種情況(比較少見) 
執行 
sh ./development/tools/idegen/idegen.sh 
這行命令的意思是生成對應的檔案:android.iws, android.ipr, android.iml .如果生成失敗,後面也會講到這種情況. 
生成對應的檔案後,開啟Android Studio,選擇開啟一個現有的Android Studio專案,選擇Android原始碼的根目錄,匯入即可(起作用的是android.irp檔案).在配置sdk版本之後就可以檢視Android 原始碼了.

三,異常情況

執行第一個命令的時候編譯不過,出現這種情況的原因有好幾種:

    Android 原始碼沒有下載完全

    沒有進行全部編譯

    環境變數配置有問題

    解決方法依問題而定,網上對應的帖子很多,可以自己去找. 推薦這種問題還是去Google 和StackOverFlow 上去問.

執行第二個命令的時候,碰到下面的問題:

    Exception in thread "main" java.io.FileNotFoundException: ./out/target/product/hammerhead/obj/GYP/shared_intermediates/res.java (Is a directory)

    at java.io.FileInputStream.open(Native Method)

    at java.io.FileInputStream.<init>(FileInputStream.java:138)

    at java.io.FileReader.<init>(FileReader.java:72)

    at Configuration.parsePackageName(Configuration.java:204)

    at Configuration.rootOf(Configuration.java:180)

    at Configuration.traverse(Configuration.java:140)

    at Configuration.traverse(Configuration.java:167)

    at Configuration.traverse(Configuration.java:167)

    at Configuration.traverse(Configuration.java:167)

    at Configuration.traverse(Configuration.java:167)

    at Configuration.traverse(Configuration.java:167)

    at Configuration.traverse(Configuration.java:167)

    at Configuration.traverse(Configuration.java:167)

    at Configuration.<init>(Configuration.java:72)

    at Main.main(Main.java:37)      

    解決辦法是將

    ./out/target/product/hammerhead/obj/GYP/shared_intermediates/res.java

    修改為:

    ./out/target/product/hammerhead/obj/GYP/shared_intermediates/res.j

即可.