把Android原始碼加入SDK

來源:互聯網
上載者:User

各位調試Android程式的時候遇到“source not found”錯誤應該很抓狂吧,Goolge在發布SDK時沒有把原始碼包含進去著實有點讓人費解,對很多人來說Git無疑是個生澀的東西,而 framework中所有Java代碼加起來打個包也就是20多MB。更要命的是,Android Eclipse plugin (ADT)不允許我們在項目屬性中attach原始碼到android.jar上。好在Eric Burke找到了把source加入到SDK中的辦法,通過分析ADT的原始碼我們知道ADT是從SDK目錄下的“sources”目錄來尋找class對應的原始碼,這樣我們只要把原始碼放到sources目錄中ADT就可以自動找到對應的原始碼了。

那麼接下來的問題是,我們需要把哪些原始碼加入到SDK中,我們又如何得到這些原始碼呢?
我之前的文章Android Scripting Environment動手玩中提到過一個fix_android_sdk.py指令碼,用來解決編譯ASE的時候找不到android.os.Exec包的問題,事實上這個指令碼還做了另一件事,即遍曆整個< android-source >目錄,把其中所有的Java代碼複製到了SDK的sources目錄中。ASE Wiki的CompilingASE中 提到,編譯ASE需要Android的代碼樹,而我當時告訴大家了一個取巧的方法,即只要下載frameworks/base的android- 1.5r2這個tag的snapshot就行,因為android.os.Exec包就在其中,這足已解決我們編譯ASE的問題。

回到我們把原始碼加入到SDK上來,有了fix_android_sdk.py指令碼(這裡我們並不需要把android.os.Exec包編譯並添加到android.jar,所以我把指令碼中的這個功能去掉了,點擊下載修改後的指令碼),如果你已經通過repo下載了完整的代碼樹(需要注意版本的對應),那麼一切都很簡單。按照下面的方法,把android原始碼和SDK目錄作為參數傳給它即可。
fix_android_sdk.py < android-source > < android-sdk >
執行完成以後,在\platforms\android-1.5目錄下就會產生一個sources目錄,其中包含了android代碼樹中所有的Java代碼,並且都根據包名存放各自的目錄,再次Debug代碼的時候ADT就可以找到相應的原始碼了。

如果手上沒有完整的代碼樹,又想快速的把原始碼添加到SDK呢?看過Android的代碼樹就會知道,除了frameworks/base以外,還 有很多framework的代碼其實是在Dalvik目錄下,另外還有常用的apache http的包位於external/apache-http目錄下,所以要獲得用於調試的比較完整的framework原始碼,我們至少需要從 Android的程式碼程式庫中下載platform/dalvik.git、platform/frameworks/base.git、platform/external/apache-http.git這 三個project。把下載回來的檔案解壓到同一個目錄下,目錄結構隨意,接下來利用fix_android_sdk.py指令碼就可以把Java檔案提取 出來。用這種方法來提取framework的原始碼比下載整個代碼數來得快很多,而且提取的結果和從完整的代碼樹比較來看,僅僅是少了我們Debug時完 全用不到的Android中捆綁的Application的原始碼,以及jdiff、tagsoup、clearsilver等包的代碼(這3個包我都沒 有接觸過,如果各位覺得有必要,可以自行下載並按上面提到的方法來添加原始碼,它們都在platform/external下)。

最後,如果你連上面這幾個包也懶得下載,懶得裝Python執行環境,那麼Android Forum上有一個討論Source code for android.jar的文章正適合你,文章的第10樓和11樓提供了提取好的Android 1.5 SDK原始碼(雖然未必100%和你的SDK匹配,也總比滿眼的source not found好吧),解壓縮到你SDK下的sources目錄即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.