談談參加安卓綠色聯盟開發者大會的感受

圖片發自簡書App
參加完安卓綠色聯盟的技術大會,想談談這次的感想。做Android開發已經有4年了,參加大大小小的技術大會或者技術沙龍雙手還是能數的過來,難免有點兩耳不聞窗外事的感覺。
其實,有時候不是不想參加,而是有對於技術沙龍或者技術大會多多少少會有一些保持懷疑的態度,究竟是分享技術還是為了自己的產品做廣告,像一些面向技術的產品,例如:weex,hotfix,360天域和問天等等。這裡並沒有要黑什麼的意思,打廣告這一情況是真實存在的,但不是全部。以技術分享為基礎,並以資料為輔助的推廣。其中還是有很多的 思想和方案是值得學習的 ,不至於一直在井底,適當的看看外面的世界。
接下來簡單地說說大會的內容吧!
開場
演講就講述了綠色聯盟的一個成立背景,眾所周知的Android碎片化問題嚴重;再一個隨著網際網路的發展使用者的隱私,以及資料安全等問題也受到大家的關注,國家在這方也提出了相關的要求和協議。整體聯盟就是為了給廣大開發建立一個良好的發展環境,促進整個android應用行業的發展(大體上就這麼理解,其背後有什麼目的不與探討)。
網易雲音樂
接下來就是網易雲音樂Android團隊負責人樑建分享了網易雲音樂的技術框架

圖片發自簡書App
首先就提出質量,效率,體驗並重均衡的目的,接下來就是app的框架設計

圖片發自簡書App
從上圖中能看出來,框架分為三層能力,服務,業務;能力層也就是基礎的功能並且不具有業務作用的模組,服務層則是單純可以通用的基礎業務,業務層就是純粹的業務模組了。還有一點,各個模組之間都是相互獨立的,雖然這裡表現的是網狀的關係結構。外掛(也就是業務層)使用Fragment實現,而服務與隔層之間的連線則是通過路由或者服務註冊的形式實現。
當然,以上這些並不能達到之前所提出的質量,效率,體驗並重均衡的目的。
在工作的流程中,細分任務,設定節點,只有完成節點的程式碼才能上線。(這裡我只能記得這麼多了,見諒)。關於app質量方面,有建立自己的效能檢測系統,聽起來並不僅僅像bugly,leakcanary只有這些功能,這個系統更加完善,從crash,oom,記憶體(java到native),方法耗時,UI渲染等等進行檢測,並且有一定的指標,能進行有效的反饋。
這裡有一個觀點值得一提,就是 簡單設計 。意思就是要儘量遵循簡單的設計,不要把事情搞複雜,而且還是以各式各樣的分享icon舉例,簡直不要太棒。
還提到AOP打點的程式碼可能開源
手淘
雖然手淘演講的是標題是客戶端高可用平臺實踐,但是整體的內容所描述的解決方案與網易雲音樂的有些類似,從app效能質量穩定性入手所建立的一整套體系,部分問題如下圖:

圖片發自簡書App

圖片發自簡書App
針對考略到的這些問題,手淘的技術人員都作出了檢測問題,收集想關資訊的相應解決方案。所使用的手段從程式碼檢查,到AOP插樁監控,再到hook native方法來監控記憶體,可以說這些事情在一個小團隊中基本無法實現,沒有這樣的一個時間,可能也沒有這樣的一個能力來完成這麼大的app檢測系統。
美團
接下來是美團,下圖是框架簡介

圖片發自簡書App
相似的,講解的也是監控系統,一次來提升app的效能以及穩定性。其中提到使用leak監控處理oom,使用hook和AOP技術為app提供修復能力。有一個亮點,就是建立了相關係統,對於問題上報到相關wiki以及相關資訊關聯的自動化流程,以及迭代。
微博
Pecker-啄木鳥-質量檢測系統
微博所講述的內容,與之前的幾個演講也是大致相似,Pecker相對bugly有更加準確的資料採集、分析;以及細化每個處理步驟
我還記錄這個,Google breakpad 二次開發,但是我已經不太記得這個記錄的是什麼具體內容了T_T!。
QQ音樂
帶來的演講是P適配,本身這是一個不錯的題目,但是這次演講的內容在大會前一天被谷歌開發者公眾號上以文章的形式釋出出來了。這多多少少讓我覺得有點缺乏誠意。這是文章連結 WIFI&abtest_cookie=AwABAAoACwANAAMAJZceAFeZHgCImR4AAAA%3D&lang=zh_CN&pass_ticket=p4FPyXqOkksDUv1zKxm4gxYLAaLDZMJFpLXgKL6kRZs%3D&wx_header=1" target="_blank" rel="nofollow,noindex">用新技術 “派生” 的旋律把耳朵叫醒

圖片發自簡書App
其中有提到兩個技術點,有興趣的可以研究研究,一個是HEIF圖片格式,另一個是ImageDecoder的api。
百度

圖片發自簡書App
接下來就進入的安全的話題,百度帶來的是網路安全的部分,我所記錄的就是一下幾點:
因為我真的不太記得具體的內容了,印象不深刻
360
這一天內,所有的演講當中,演講地最棒的一個,只是說演講。整個過程我沒有記錄任何東西,但是依然從頭聽到尾。有問題丟擲,有資料對比,但是沒有詳細的技術解決方案,因為聽到最後你會發現這其實是廣告。

圖片發自簡書App
上圖是說網路攻擊者和研發者的響應速度的差別。

圖片發自簡書App
這裡其實還有一些點值得一提,從剛開始各個下發app的渠道來處理app的安全和盜版問題,但是這其中會存在誤判的情況,於是有了360客戶端的一個產生。在客戶端可以檢測app的安全已經相關問題,這樣能更好的解決和防範惡意攻擊者。
上午的技術分享就到此結束了。
華為
內容基本分為兩塊,F2FS新型檔案系統和GPU Turbo的介紹。由於本人技術不到家,基本聽不明白演講所描述的技術,所以只是發個圖讓大家看看。

圖片發自簡書App

圖片發自簡書App
新浪
和幾年前在InfoQ所講述的item拆分是同一個話題,無可厚非,畢竟資訊流就是新浪微博的主要業務功能;不過這次更加細緻,對於方案的實現更加的優化了。但是,對於這同一話題還是有些失望的。

圖片發自簡書App
除了對一個大item進行拆分意外,還定義了一個VirtualView的概念,來處理原有item的背景已經點選事件的問題。
有部分忘記了,同時省略了部分廣告。。。
總結:
- 大廠對於技術性能的追求,在資源和技術上都有很大的成本,我們無法照搬或者模仿。借鑑一些思維方式和解決方案還是可以的,例如:手淘為了監測主執行緒,使用AOP接管Looper,重寫SP。一般很少有開發著會這麼做
- 一點程度上,可以使用AOP,hook來做更多的事情;這兩個技術點有興趣可以學一下
- 適合的框架才是好框架,無論一個框架怎麼強大,其目的是為了更好更快的開發,如果違背了這點,可以說這個框架對於你來說不那麼好。
- App的安全問題不容忽視,很多開發者可能都不會留意這一點,但是有必要增強App自身的安全,總不想辛辛苦苦做出來的app被別人拿去賺錢吧!
- Flutter - 對於新技術還是需要保持關注