昨天有一個博友回複,說他已經完成了android系統在windows上的移植,其中比較難的是binder系統的移植。下面是兩個demo網址,我看了後倍有感觸。 http://v.youku.com/v_show/id_XMzIwMDkxOTQ4.html http://v.youku.com/v_show/id_XMzIwNzI2NTg4.html
這才是真正有技術含量的移植啊!
從做android開始,聽到的最多的就是移植+merge了。但總感覺都是:
1 簡單的把人家做好的,放到新的平台上,然後測試,修改。完完全全的改bug。甚至都不需要對系統,程式結構有什麼深入的了解。
2 做linux驅動更是這樣,到處去改參數,調闆子。(個人感覺都被硬體綁架了..)。
什麼後果?居然很多人一年都寫不了幾行代碼!!!我知道google有一個美女程式員,每天都要花4個小時來寫代碼,沒有什麼别的特殊目的,就是為了保持腦子的靈活。
另外,那些剛工作的人,改改bug就完成工作,而又不寫代碼,讓他們誤以為程式員就是這樣工作的,結果不去花時間研究系統(放着linux核心,android系統這種高品質,高複雜度的優秀源碼不看。說實話,代碼量不超過10w行以上的同志,真的懷疑能否看懂代碼的真正意圖,是以google校園招聘的時候,似乎對代碼量有一定的要求),
【這裡也請那些教育訓練學校的老師們,稍微注重下教育品質,教育訓練方法。】
我心目中的移植,是應該建立再對目前平台和目标平台的一個深刻認識上,再加上對要移植代碼本身,程式結構得深入了解上才能做的。看看上面博友的移植,如果隻會改幾個bug,何年何月才能将android系統移植到windows上呢?
下面是我之前做的一份關于完成端口到linux平台上的移植的設計文檔。這個設計由于各種原因,最終沒有被讨論過,也沒有(永遠不會)被采用。
|
回想當時做這個移植,花了很多時間來調研完成端口的實作機制,來研究proactor和reactor的差別,來研究linx平台的特性。考慮到完成端口是Win平台最有效率的IO操作,那麼在linux平台上實作自然也得考慮效率方面的問題。
雖然最終沒有實作該設想,但卻極大加深了對以上知識的認識,對以後的工作有非常大的幫助。
作為本篇的結尾,希望大家認真對待工作,從簡單的移植工作中去發掘背後那塊絕大的金礦,以提高自己的價值。
謝謝大家對《深入了解android 卷I/卷II》的支援。