http://quanminchaoren.iteye.com/blog/836905
此文不同于官方文檔給出的方案,之所以如此,基于以下考慮幾點考慮:我們之所以拿源碼進行增量開發,一般而言,不是為了整個工程,而是為了其中某個特定的模塊,比如說 Contacts , Luancher 等;其次,官方方案有一個巨大的缺陷——優化后的模塊打包成 apk 很有可能無法在其他系統上安裝,因為它有系統權限,并且一直簽 rom 的簽名,而這個簽名在其他系統上是拿不到的。換句話說,除非你想做嵌入式,否則別這么干。
具體步驟:
編譯源碼:由于這些模塊依賴的包中有一部分是不開放的,所以,只能把整個源碼編譯一遍,然后拿出相關的 jar 包。
關于如何編譯源碼網上有很多說明,都是用 git 把源碼下載下來( 4G 左右),然后配下相應的編譯環境。請參照: Justin 的 Build Android Platform 。通常會遇到一些錯誤,編譯停止,這些錯誤通常都是一些庫函數找不到,這時候你只需要將相應的庫函數下載下來,也就是完善一下你的編譯環境,比如說這個錯誤:“
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
”
這個錯誤我曾經試了很多種方法,最后才發現就是
缺少 lib32z1-dev, 安裝即可 :apt-get install lib32z1-dev
源文檔 < http://0123.blog.163.com/blog/static/47883120101024104416786/ >
所以,如果有相應的錯誤,就把 cannot find 后面那個東西,去掉“ -l ”,也就是相應的庫函數了,如上面就是缺少了 z 函數。然后上網搜。
另外,據說我比較好運用的是 64 位系統 Ubuntu ,且內存比較大, CPU 也比較 OK ,所以編譯時錯誤比較少,編譯時間也比較短,大概 1 個鐘,而一般來說都要 2 個鐘,所以大家做好心理準備。
有相關編譯問題請咨詢: ernest.he2009@gmail.com
開始 Eclipse 之旅:
找到相關 jar 包,這個你如果熟悉 Java 肯定很容易就知道, Android 中不開放的包一般在 frameworks 底下很容易找到,具體路徑就是: out/target/common/obj/JAVA_INTERMEDIATE/frameworks_intermediate ,拿到 class.jar 就可以了。但是在 Contacts 中比較特殊,需要另一個 phone 包,這個一樣可以拿到。
關鍵是拿到之后怎么辦的問題。處理不當就會造成 Eclipse 掛掉。這里就需要通過 User Libraries 來解決(參照下面的解決方案)。
這樣開發環境建立起來以后就是編譯了。為了能夠成功編譯運行。請參照以下解決方案:
解決方案 。