我想很多人應該也跟我一樣,開發程式時會寫出很多共用的API(通常是utility API),或是很多程式都會去bind同一樣一個service,而這些code(包括AIDL檔)通常會有很多份copy在各個Eclipse的project內,造成sync上的問題。這還不是主要的問題,更主要的問題在於,如果你的程式用到了hidden API,那可是連在Eclipse中build都build不過,更別想直接跑在emulator或是透過新版adb install到target上(因為Eclipse有error就無法產生apk檔)。
為了解決這兩個問題,我想最好的方式就是把code放在frameworks中一起build,而build出來的SDK正好可以給Eclipse用。
假設今天com.blogspot.dejob這個package有a.java及b.aidl要放進framework,那麼請試著這麼做:
1. 把這兩個檔案放在frameworks/base/core/dejob/java/com/blogspot/dejob/底下
2. 更改build/core/pathmap.mk,在FRAMEWORKS_BASE_SUBDIRS最後面加上"dejob \"
3. 更改frameworks/base/Android.mk:
在LOCAL_SRC_FILES這一段的最後加入dejob/java/com/blogspot/dejob/b.aidl,這樣就可以讓AIDL檔build到framework中,但是這樣還不夠,你還需要下一步才能將AIDL檔內的javadoc build到SDK的document內。 在aidl_files這一段的最後加入frameworks/base/dejob/java/com/blogspot/dejob/b.aidl - 在packages_to_document這一段的最後加入com/blogspot,意思是說com.blogspot底下的所有package都build進document。
- 先確認你不是用root權限來build code!
- 裝好所有toolchain及下載android source code(騙一點篇幅,雖然沒稿費...)
- 切換到android目錄下打". build/envsetup.sh",請注意最前面那個"點"
- lunch sdk-eng
- make sdk
如果你的code沒寫錯,應該就可以看到SDK已經build完並且壓成zip檔了,接下來只要將這個zip檔解開,然後在Eclipse中指定SDK的位置到這個目錄就可以了。另外也建議在Eclipse的project中選clean將project重新build一次才能知道有沒有成功。
講一些題外話,最近一直在想要不要去應徵聯發科的android工程師,
3 Comment:
寫得還不錯XD
不知道版主為什麼會失業
感覺版主有相關知識又蠻認真的
其實之前就有說找到工作啦,只是可能又要失業囉
因為金融海嘯的時候待遇不好,今年又沒有調薪
希望可以找到能學習更多android平台的工作
待業期間有什麼研究心得再跟大家交流囉
版主您的心得寫的很好,相信絕對可以在Android的事業上大放異彩的!
張貼留言