第1章 新手任務(1 / 2)

林晚榮興奮至極,心髒砰砰直跳,幾乎要躍出胸腔。

那個bug,狀態機切換時序問題,他前世也遇到了,但是當時初來乍到,完全不熟悉指紋,拖了三天之後,求助了sh研究所的一個同事,最後解決了問題。也正是因此,以為白菜價招到大神的鏟車漸漸開始對他懷疑,五次三番的失敗後終於耐心耗盡。重活一世,如今的他在程序猿的基本功上也許和前世沒什麼兩樣,但指紋這一塊的業務邏輯至少已經吃得七七八八。這個問題有必現路徑,也就是程序中必然會出現問題的那個場景;難點在於從紛繁的現象中找到這個路徑,進而確認這個問題的原因。這個新手任務,可以說是十拿九穩了。

林晚榮連上手機usb,飛快的按照前世記憶中的必現路徑操作著,設置指紋快捷支付,連續的黑屏解鎖,然後指紋支付,再亮屏解鎖……

果不其然,在一連串複雜而看似毫無邏輯可言的操作中,隨著林晚榮最後一錘定音在power鍵上的一按,手機徹底黑屏,然後無論如何也無法再用指紋解鎖了。

林晚榮輕車熟路的進行分析,然後給出解決方案,整個時間隻花費了十分鍾。

往任務完成度上一看,完成度已經達到了15%。

“不對不對,還缺了什麼?前世,那個sh的同事最後就是給出了這個方案,新增了一個狀態,解決了問題的。這個方案提出來,完成度怎麼隻有15%?”

林晚榮興奮的心髒如同被打了一錘,一瞬間漏跳了兩拍:“哦,對了,這個hal層狀態機的時序問題確實是存在的,但是問題的發起點來自keyguard的性能優化,導致接口調用不當……”

他仔細回憶著前世直到兩個月之後才偶然被發現的另一處bug,事實證明,指紋這一塊簡直稀爛,到處都是簍子。他前世就是被密密麻麻的bug坑死了,如同趟地雷陣的步兵一般粉身碎骨。

飛速的敲打著鍵盤,將這個hal層接口調用不當的問題修正過來,林晚榮又看了一眼,果不其然,完成度上漲了10%,達到25%。

“看來,發現了兩處問題相關的漏洞,一處是10%的進度,還有5%,應該是先前必現路徑的進度。”林晚榮暗忖道:“問題解決的流程,接下來還有代碼評審,方案上庫,回歸驗證。”

他想起前世的同事,某位大牛永哥,每次解決bug,都會輸出一份詳盡的案例。“不知道輸出案例有沒有完成度?隨後完成宣講培訓,然後歸檔呢?這樣算起來,60%的最低完成度應該是夠了。”

既然及格線已經穩了,林晚榮的一顆心總算是平複了許多,看看時間,將將過去四十分鍾。

“我前世覺得指紋這個模塊,bug眾多,根因在於keyguard關聯太多,幾個模塊,lcd,power,keyguard,wm,policy,fido,設置,gatekeeper,devicepolicy……猶如九省通衢。沒有善用設計模式,google原生代碼良莠不齊,有眾多的標記位,一旦進行性能優化,將串行改為並行,必然出現大量問題。”

林晚榮暗想:“前世的我發覺這一點,已經是一個月後;那時積重難返,直到我穿越回來,也是越改越多,防不勝防。我何不趁這個機會,向組長提議?首先,是可以實施的一些小修改,重構我們訂製的keyguard代碼,把全部訂製的方法轉移到子類;然後,並發過程中,注意消息阻塞,把handler調用改為直接調用;然後,適當增加動畫時間……這些小改動都治標不治本,最後,把keyguard的指紋處理機製改為狀態機模式。”

林晚榮搖搖頭,這些隻能算是提議,他初來乍到,公司也不會允許他做出這樣多的修改。甚至後世他看護指紋,也不得不學習了keyguard模塊,他知道,keyguard的處理,最根本的痛處不在這些代碼的寫法,也不在那些參數,甚至不在於流程是串行還是並行,而是在於整個係統中不得不給它分配了一個特殊的地位。

它不是一個activity,它是一個特殊的存在。