平安科技移動開發二隊技術周報(第二十一期)
業界新聞
1)XcodeGhost:墻、感染、信任和欺騙
有人在中國網盤和論壇上傳播了一個修改過的Xcode,這個版本的Xcode會在編譯出來的App上面加一些可以被遠程控制的代碼,并且發送數據到某個服務器上。這是iOS出現以來,未越獄系統遭遇的最大安全威脅,在此之前蘋果的Sandbox模式幾乎沒遇到過挑戰,iPhone用戶甚至大量iOS開發者都認為系統固若金湯,不可能遇到問題。
2)如何評價 React Native Android
關于React Native Android的一個知乎問答。
3)C++ 之父宣布推出「C++ 核心準則」,將通過開源協作方式完善
9月21日上午,Bjarne Stroustrup 在 CppCon 大會上宣告了「C++ Core Guidelines | C++ 核心準則」。英文文檔已經在 GitHub 上了,目前還是草案階段,兩個主要的作者是 Bjarne Stroustrup 和 Herb Sutter 。Stroustrup 在呼吁:「We need help!」
Android開發
1)Android程序的反編譯對抗研究
對抗反編譯是指讓apk文件或者dex文件無法正常通過反編譯工具,而且有可能導致工具異常或者崩潰,如apktool、baksmali、dex2jar、JEB等等工具,如下圖dex2jar無法正常工作。
2)Android Log工具類
工欲善其事,必先利其器。在Android開發過程中,相信都會遇到這樣的問題:
- Log太多,不容易找到自己設置打印的內容
- 找到Log但是定位到Java源碼有不是很方便
- 對Log打印需要設置Tag,大多時候Tag就是本類的類名,存在重復的工作
- 發布正式版本需要注釋或者關掉很多Log開關
3)React Native For Android初體驗
React Native For Android提前發布了,代碼托管在Github上面,本文是一個嘗鮮體驗,主要介紹環境配置的過程。目前React Native只支持在OS X系統上面進行開發,其他系統的筒靴們請掩淚飄過。
4)Facebook:我們是如何構建第一個跨平臺的React Native APP
在Facebook我們已經應用React Native在發布的產品有超過一年的時間了。幾乎是整整一年之前,我們的團隊開始規劃開發廣告管理APP。我們的部門是創建一個新的APP來讓數百萬的Facebook廣告主來管理他們的賬號并能創建新的廣告。在完成的時候,這不僅僅是FB的第一個全React Native APP而且是第一個跨平臺的APP.在這篇文章里,我們希望能和你分享我們是如何構建這個APP,React Native是如何讓我們更快的,還有這個過程中我們的經驗。
5)Android 沉浸式狀態欄攻略
Android 沉浸式狀態欄目前只有在大于等于Android 4.4版本才支持,但是4.4和5.0的顯示效果有一定的差異,所有本篇博文內容為:
- 如何實現半透明狀態欄效果在大于4.4版本之上。
- 如何讓4.4的效果與5.0的效果盡可能一致。
iOS開發
1)iOS微信安裝包瘦身
微信經過多次版本迭代,產生不少冗余代碼和無用資源。之前微信也沒有很好的手段知道哪個模塊增量多少。另外去年10月微信開始做ARC支持,目的是為了減少野指針帶來的Crash,但代價是可執行文件增大20%左右。而蘋果規定今年6月提交給Appstore的應用必須支持64位,32位和64位兩個架構的存在使得可執行文件增加了一倍多。安裝包大小優化迫在眉睫。
2)iOS應用架構思考
3)iOS代碼實踐總結
最近一個月除了專門抽時間和精力重構之外,還有就是遇到需要添加功能的模塊的時候,由于項目中的代碼歷史因素比較多,第一件干的事情往往是重構整理代碼,發現很多之前的代碼寫的時候沒有注意的事情特別多,比如全局變量亂用;方法沒有層次感,胡亂添加;對業務不了解的情況下,通過打補丁的方式實現功能等等。所以我決定寫一篇文章,把自己的覺得實踐中需要注意的一些事項,具體總結一下分享給大家。
4)構建內存高效的應用
近年來,移動設備的性能越來越強大。然而,同桌面電腦相比,性能上總還是有一段不小的差距。同時,用戶界面和交互設計的要求也越來越高。所以,為移動設備編寫內存高效的應用仍然很有必要。
5)Xcode 7 UI 測試初窺
單元測試非常適合用來做 app 的邏輯以及網絡接口方面的測試,但是一個 app 所面向的最終人群還是使用的用戶。對于用戶來說,app 的功能和 UI 界面是否正確是判斷這個 app 是否合格的更為直接標準。而傳統的單元測試很難對 app 的功能或者 UI 進行測試。
技術縱橫
1)你為什么不分享
這兩天恰好有我的前boss在朋友圈分享他看到的文章,是關于分享的主題。作者在文章里把新人或者說菜鳥不肯分享的原因總結為害怕被所謂的高手/大牛所打臉而害怕分享。從我的經歷來說,我認為這并非核心原因,僅僅是次要原因之一。因此特意寫此文與大家探討一下。
2)Nicholas C. Zakas:我得到的最佳職業生涯建議
最近我與一同事有一次有意思的討論。我們回憶了各自所走過的職業歷程以及不同個性如何長期消極影響我們的職業。事實情況是,我曾經是那種從大學里走出來的令人討厭的人(有些人可能會說我現在仍然是那種人,但這是另一回事兒)。當時我很傲慢并且很刻薄,是一個十足的憤青。我自以為我很了解自己的性格并且為這種性格感到驕傲。
3)H5性能優化方案
對于一個H5的產品,功能無疑很重要,但是性能同樣是用戶體驗中不可或缺的一環。原本H5的渲染性能就不及native的app,如果不把性能優化做起來,將極大地影響用戶使用產品的積極性。
4)如何高效的學習掌握新技術
學習新技術,就如探索一片新的領域,一般在心態上來說,都會有兩種典型的心態,一種是恐慌和抗拒的,一種是積極和開放的,不同的心態會造成不同的結果。
開源函數庫與工具
1)Swift 開發者周刊(第 0 期)
大家好,踩了各種坑之后,第 0 期《Swift 開發者周刊》終于和大家見面了。
目前周刊由 SwiftGG 翻譯組 維護,每周推送最新的 Swift 文章和開源項目,幫助大家提高 Swift 姿勢水平。
2)FreeBuilder
Google出品的基于注解自動生成Builder模式代碼的函數庫。
3)騰訊 Android 與 iOS 開發工具鏡像服務
XcodeGhost事件之后,開發工具的下載需要慎之又慎。
4)F2etest
阿里巴巴出品的一個面向前端、測試、產品等崗位的多瀏覽器兼容性測試整體解決方案。
文末攝影鑒賞