2010年12月18日 星期六

Android 原始碼徹底研究

Android Source Code Internals
閱讀及追蹤 Android 的原始碼,是提昇你 Android 程式設計功力最好的方式之一。
可惜的是,在現今講求速食主義的年代,凡事都講求效率,大家都想直接找到解決問題的答案,而不想從打好基礎開始。別說是閱讀 Android 原始碼,連 Java 都還不會,就想一步登天的,也不在少數。以致於我看過不少,捨本逐末,事倍功半的例子。雖然你能找到解決的方法,可是在未能融會貫通的情況下,總是知其 然,而不知其所以然。下次遇到類似的問題,當然還是無法自己獨立解決。
要跨入 Android 的設計殿堂,第一步是容易的。你只要會用 Eclipse 及 ADT 提供的 wizard,再加上一本範例大全在手,要寫個簡單的程式應該都不是問題。可是以這樣的經驗與訓練,要真正想要寫一個 "好" 程式,還是有很大的距離。如果你真的想要學寫一個好程式,一窺 這殿堂的奧妙之美,以我的經驗來說,還是得按部就班來,先具備一定的基礎,仍然是先決的要素。
我會建議你至少要具備以下的基礎:
  • Java core language 和 Object-Orient programming
  • 熟讀 SDK 中的 The Developer's Guide 和練習 tutorial
  • 至少要瀏覽 Android framework APIs Reference 一遍
  • 自己出些題目,練習 Android 程式
  • 在寫程式的過程中,有問題時,不要急著問,先要求自己從 The Developer's Guide 和 API Reference 中找答案
如果你已經有 OOP (C++, C# 等) 的程式設計經驗,要具備我上頭講的這些基礎,要花多久的時間?
我想為自己留三個月時間,應該就綽綽有餘。
在這些基礎都具備的情況下,想要再進一步提升你的程式設計功力,除了要想辦法讓自己多增加些程式設計經驗外,閱讀及追蹤別人寫的程式碼,更是最好的方法。不過網路上,每個人的程式功力高低不同,寫出來的程式也有好有差。讀到不良的程式,看不懂還不打緊,如果誤導你的觀念,那可就得不償失。因此,當你底子還不足以判斷好壞程式時,我會建議你直接閱讀 Android 的原始碼。根本不用捨近求遠,Android 原始碼,就是你學習 Android 程式設計時,最好的導師。
要在 Linux 中下載 Android 原始碼,應該不是問題。習慣在 Windows 下生活的你,我在 如何在 Windows 平台上下載 Android 的原始碼 中,有介紹如何在 Windows 中下載 Android 原始碼。
有了原始碼,應該從何看起,還是個問題。如果你一頭就栽進,Android framework 中的原始碼,在沒有目標與頭緒的情況下,很容易就迷失在眾多 framework 原始碼中。根據我自身的經驗,我會建議你先從 platform\packages\apps 開始,那裡面有 Android 一些內建的應用程式原始碼。像是網頁瀏覽器,計算機,鬧鐘,聯絡人,行事曆,媒體播放器,甚至於桌面程式都有。因為這些應用程式,你看得見,也摸得著,要 追蹤這些的原始碼,會比較有感覺些。甚至於你還可以當場做實驗,改程式,看結果。
為了幫想要更進一步提升 Android 程式設計功力的你,在接下來的日子,我會帶領大家導讀 Android 的原始碼。想要跟隨者,先照我講的,打好你應該具備的基礎;並下載一份 Android 原始碼,到你的電腦上。
下次,我們先從 Android 的鬧鐘 (Alarm Clock) 原始碼開始看起。

資料來源:
http://ysl-paradise.blogspot.com/2009/06/android.html

沒有留言:

張貼留言