首先感謝各位兄弟姐妹們的耐心等待。本書預計在3月中旬上市發售。從今天開始,我將在博客中連載此書的一些內容。注意,此處連載的是未經出版社編輯的原始稿件,因此樣子會有些非專業。android
附錄爲筆者和審稿專家之一的吳勁良先生關於本書定位、學習方法等方面的討論。相信這些討論內容能引發讀者的共鳴。面試
附錄的內容來自筆者和吳勁良先生的幾份討論郵件,此處略有修改。安全
[-->筆者發給吳勁良先生的郵件]網絡
吳兄:架構
我有幾個問題想和你深層次討論下,就是關於這本書的定位:socket
我先說說個人見解:post
1)對於初學者(就是徹底沒有wifi,nfc,gps經驗的人),這本書確定是入門書,可是它的難度比普通意義上認爲的入門書難。學習
2)對於中級學者,這些人定位在1-2年或者那些有過實際改bug的經驗,可是缺少全局理解的人,那麼這本書也合適。不過,可能有部份內容對他們來講比較簡單。另外,關於NFC和GPS的知識,從咱們統計的狀況來看,NFC和GPS的問題很是少。從面試狀況來看,對NFC芯片的datasheet的瞭解(GPS應該是沒有這方面公開的資料)也很重要。不過本書沒有考慮NFC,GPS以及Wi-Fi HAL層的內容。一方面我感受Wi-Fi驅動層和協議結合很是緊密,有點鑽研精神的讀者在本書基礎上,再加上一些驅動經驗就能夠搞定。而NFC HAL層將來發展趨勢可能會和wpa_supplicant同樣,即不會出現NXP,Broadcom這樣太過特定的內容。GPS通常不太可能讓外人看到驅動的代碼了吧?我專門看過QC開源項目Codeaurora[①]中GPS的HAL代碼。它是C/S架構的,只有Client端內容,並且都是簡單的發些命令,而後接收回復,沒有核心的東西。測試
3)對於高級學者,例如那些經驗和理論知識都比較到位的人,那這本書惟一的優點可能就是當作參考書來看了,不過內容相對會淺顯點。spa
另外,昨天和Eva溝通後,以爲本書沒有太多實際經驗,確實如此。我本身定位這本書仍是想打通整個知識面,實際經驗的話,須要理論聯繫實踐。如今不少工程師只有實踐,沒有理論,或者理論關注較少。另外一方面,若是專門講實踐,這種書反而價值不高,由於可操做性過低。它不像網管類的書籍,一步一步跟着作就好了。
這是我對本書定位的一些見解,吳兄,你可否從一線工程師,培養新人等多個方面講下你的感覺麼?不足之處也提出來哈。
最後,寫完這本書後,我感受在Wi-Fi、NFC和GPS這幾塊,核心都是芯片廠商作好了,咱們惟一可作的就是改改bug,攢足實戰經驗,彷佛可發揮的地方很是少(NFC CE模式還有不少發揮空間,尤爲是安全交付解決方案之類的)。吳兄,對這個問題又怎麼看呢?
誠摯歡迎吳兄的金玉良言!
Br
鄧凡平
[-->吳勁良先生的回覆]
鄧兄:
1)正如鄧兄說提到,這本書對不一樣知識深度的學者而言,會有各自的收穫,可引初學者入門,可給中級學者問題分析的線索,可給高級學者一個知識思索的機會(對比本身的理解和補充下知識),書就起拋磚引玉的做用,不一樣的讀者收中收穫多少還得看我的,多思考的讀者還能夠從書中學習到鄧兄分析問題的思路、會反思如何提高本身的搜索的技巧。
2)這本書是理論分析爲主,沒具體問題的解答,可是我以爲夠了。這不是一本Q&A的書,WiFi、NFC、GPS這三大部分,Android涉及的主幹支知識都有,讀者能夠作選擇性的深刻分析,各我的對知識點的追求都不同,很難知足全部人的需求,就我的而言,我會對android Wi-Fi的休眠策略、Location的網絡定位感興趣,這跟實際工做遇到的問題相關。
3)「NFC和GPS問題很是少」,這會跟功能模塊是否被普遍使用和應用的廣度有關,被使用多了可能會暴露多些問題,應用場景多也會促使功能的開發,天然會引出新問題。GPS HAL的代碼各廠家都不提供,Broadcom、MTK、RDA均只是提供so,有多是涉及到核心技術,估計是一些Command的實現,GPS通常是UART接口,UART只負責上層與模組的數據通信。
4)對於負責無線模組的新人,我對他們工做的安排是:先作功能的驗證測試,讓他從測試中加深對功能點的理解,知道哪些點是容易出問題;而後會給一些已經調試ok的模組讓其單獨去調試,目的是熟悉調試一個模塊須要作哪些工做;最後會漸漸的讓其承擔一些實際任務。學習的安排是:學習NL802.11,USB、SDIO、UART和I2C等模組接口驅動的分析,而後會從內核往Android學習,如:Wi-Fi driver->netd->wpa_supplicant->HAL->framework,Android會安排一些核心知識點的學習,主要是理清工做的機制。最終是但願新人在頭腦有有一幅Android網絡結構圖,並能將其畫出來。
5)因爲須要先確保相關的外圍模組能配合主控使用,這也決定日常無線工做的重點會在模組的移植調試上,涉及的內核驅動的調試較多,如今android作得愈來愈完善,大問題不多,小問題仍是有,但解起來還好(Android4.4上Wi-Fi目前測試出原生代碼有幾個bug,較嚴重的一個是在關閉Wi-Fi時沒關閉supplicant建立的socket,每次打開Wi-Fi時又建立,socket打開個數累積超過65536時,後續操做將失敗)。
6)無線模塊Wi-Fi、BT、NFC和GPS,核心的技術是在芯片廠,並且是在芯片設計中,driver的編寫只是其中的很小一部分,即便是相對複雜的Wi-Fi Driver,投入兩三我的,花兩個月的時間把driver寫出來是徹底沒問題。這個我也認同發揮的地方不多,除非是從應用角度去開發新的功能或作一些功能創新。但從工做的角度看,要把這些無線模塊支持好,也不是不容易,調一款新的Wi-Fi就像在弄一個小系統,須要把系統調穩,沒有bug並能夠達到量產的標準,這每每會耗上一兩個月的時間。雖然發揮的地方是少,但當前看這方便的技術人員的需求仍是挺大的。
Br.
吳勁良
[①]https://www.codeaurora.org/,上面可下載高通參考設計(QC Reference Design)的代碼。