8.20.2010

[舊稿] [Q&A] Layout of blogger 版面配置

發現這篇從08年年底到現在一直在草稿狀態,雖然只有一點點,不過還是貼上來好了,因為接下來不知道什麼時候才有時間更新...

偶爾嘗試點不同的寫作風格,就先用這篇開刀好了。本來想用敘事的方式來說明一下這個blog的排版原因和某些小細節,不過寫一寫發現有點難閱讀,所以改用Q&A的方式看看會不會有所改善。以下是左腦跟右腦的訪談:

Q:感謝你接受我的訪問,能不能請你大概聊一下整個版面的設計理念?
A:我希望我的讀者能在第一眼就很清楚文章的位置在哪裡,尤其是使用手持式裝置(PDA、SmartPhone甚至PSP)的讀者,這樣的讀者已經愈來愈多了。當然我也想提供行動裝置版的版面,不過在Blogger現有的template下是蠻難實現的。除此之外,在右側我放了一些Gadget,主要是希望能多些人交流。

Q:那配色呢,有什麼特別的原因嗎?
A:我想藍色是很貼近科技本質的一種顏色,所以我就用它當標題的顏色了。我曾經在白底黑字跟深底淺字兩種方式做徘徊,深底淺字的好處包括對行動裝置來說比較省電、對眼睛來說比較溫和,但是白底黑字才是大多數習慣閱讀的方式,另一方面由於blog可能會出現大量的貼圖,我不太喜歡貼圖跟背景色的反差太大(我想很多人都有在深色投影片貼過圖的經驗),所以最後選擇的是白底黑字。

在Framework中加入自己開發的API

大家好久不見,今天要分享的是如何將自有API跟系統一起build並且能將build出來的SDK放在Eclipse裡面用,不過這招不適合要放到android market上的程式,如果是這種情況,你需要的是git並且做好管理(包括把Eclipse的sync選項打開,好像越扯越遠...)

我想很多人應該也跟我一樣,開發程式時會寫出很多共用的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。
4. 照下列順序來build code:
  1. 先確認你不是用root權限來build code!
  2. 裝好所有toolchain及下載android source code(騙一點篇幅,雖然沒稿費...)
  3. 切換到android目錄下打". build/envsetup.sh",請注意最前面那個"點"
  4. lunch sdk-eng
  5. make sdk
5. 接下來就可以先去運動一陣子(除非你的電腦配有12 core CPU+SSD RAID+16GB以上的RAM)

如果你的code沒寫錯,應該就可以看到SDK已經build完並且壓成zip檔了,接下來只要將這個zip檔解開,然後在Eclipse中指定SDK的位置到這個目錄就可以了。另外也建議在Eclipse的project中選clean將project重新build一次才能知道有沒有成功。

講一些題外話,最近一直在想要不要去應徵聯發科的android工程師,不過應該會被打槍吧,不知道還有沒有其他android相關的工作...