附Kotlin乾貨PPT下載l如何高效使用Kotlin?



近日,個推TechDay攜手GDG廣州,邀請了多位跨領域的Android開發專家,以「Kotlin Everywhere,演進Android開發生態」爲主題,與在場觀衆一同探索Android開發領域的前沿技術及實踐方法。緩存


如下是廣州站分享嘉賓的精華提煉安全

(文章結尾附講師PPT下載)性能優化


伍裕平,匯豐軟件工程師微信

《Kotlin Multi-platform開發踩坑記》網絡



伍裕平的演講主要圍繞「如何入‘Kotlin Multi-platform’坑」、「如何踩坑和填坑」進行展開。他說道,選擇Kotlin Multi-Platform是由於該項目能夠將一份 Kotlin 代碼同時編譯成JVM 的 class 文件和 JavaScript 文件,從而減小開發中的重複勞做。閉包


伍裕平爲你們梳理了他在開始一個Kotlin Multi-Platform項目中所踩過的各類坑,併爲你們提供了對應的填坑方案。架構


在Kotlin 編譯成 JavaScript過程當中,他指出首先要避免「plugin 1.3.31 及之前默認不模塊化」這個坑,要在build.gradle的kotlin閉包里加一句指定模塊化方式。框架


用模塊化(如AMD、CommonJS方式)的話,在JavaScript中使用Kotlin中的類是要用「導入對象+包+類名」。模塊化


其次,因爲JavaScript 不支持泛型和函數重載,Kotlin在編譯過程當中會默認在函數名後加一個哈希串,而這會致使調用的時候不夠便利,因此他提出了用JsName指定變成相應的函數名稱的解決方案。函數


在Kotlin 編譯成 Java過程當中,Kotlin默認丟掉默認參數,能夠經過加「JvmOverloads」的方式把默認值予以保留。


將 Java API 遷移到 Kotlin過程當中,坑主要有如下兩種:

一、Kotlin 編譯成 Java class 時,默認把非 private 屬性變爲 private 屬性 + getter & setter。開發者經過「把屬性改成 private,把非 private 訪問修飾符放在 getter / setter 上」的方法進行填坑。


二、Kotlin 自己沒有 static。要解決這個問題,開發者能夠在Static上加一個「JvmStatic」。


李健民,個推Android高級研發工程師


《移動應用安全》



李健民闡述了移動安全中移動惡意攻擊的四個主要方向:網絡安全、數據安全、代碼安全、設備安全。


網絡安全

網絡安全分爲四個部分:數據防泄露、請求防重放、內容防篡改、身份防假裝。解決數據防泄露的關鍵在於必定要對數據進行加密處理。請求防重放則能夠經過請求時在參數中攜帶時間戳、隨機數、流水號、「時間戳+流水號」這四種方式措施來予以防禦。


數據安全

針對存儲的安全防禦,咱們在數據落地的時候必定要進行加密處理,防止他人拿到重要的敏感數據。其次,咱們要建立私有類型數據,儘可能用(private)的建立方式,而不是全局的建立方式。


代碼安全

常見逆向工程套路主要分爲三種:反編譯、脫殼、動態分析。如下四種方式能夠防止代碼反編譯:代碼混淆、簽名驗證、利用反編譯工具漏洞進行防禦、加固。防動態分析則能夠從反調試、反xposed、反root三個維度進行入手。


設備安全

開發者能夠經過檢查設備所處的環境來判斷設備是否處於異常的狀態。若是設備狀態異常,則極可能處於黑產工具的控制下。黑產的攻擊場景主要有如下四種:渠道推廣、登陸註冊、營銷活動、社區互動。APP開發者能夠經過檢測設備上的相應的風控信息,經過多維度的風控檢測模型標識高風險的用戶,並將風險等級告知客戶端,以此進行一些防禦。


個推做爲專業的數據智能服務商,擁有海量數據資源,在移動安全領域也推出了相應的數據解決方案-個驗。個驗是個推旗下的「一鍵認證」產品,能夠幫助APP開發者實現高效、極速、安全穩定的認證登陸過程,優化用戶體驗。


此外,個驗還爲APP開發者提供風險識別與風險防禦的系列方案。在風險識別方面,個驗能夠經過設備、網絡、行爲等多維度識別設備風險。準確識別出風險用戶後,企業可在業務上對風險用戶進行限制。在風險防禦方面,個驗在不影響正經常使用戶使用的狀況下,經過動畫驗證碼阻止惡意自動化程序的進一步操做。


Nicky, 阿里巴巴創新事業部高級工程師


《移動出海的困局與對策——開發者篇》



Nicky 主要從三方面解讀「移動出海」:出海浪潮、出海的困局、出海的對策。手機廠商藉助預裝形式,爲移動互聯網出海帶來了新的增加空間。Nicky 認爲,中國移動互聯網出海的發展歷程能夠分爲五個階段:開端、探索期、發展期、爆發期、升級期。


出海的困局能夠歸結爲三點:一是沒法判斷設備的好壞;二是沒法定義當前網絡的好壞;三是沒法找到其餘工具利器來爲APP提供良好的海外體驗。


針對這三大困局,Nicky一一提供瞭解決對策:


如何判斷設備的好壞?

Facebook給出year維度來評估機器性能,但不夠直觀,沒法解決開發者想要了解機器的高中低狀況或者佔比的問題。咱們能夠修改源碼,定義某些參數維度是高端機,中端,低端,這樣作性能交流也更直觀了。


如何定義當前網絡的好壞?

能夠藉助用Facebook的networkclass開源工具類來判斷當前的網絡情況。相似日常作的電信網絡測速同樣,networkclass經過屢次測試,測出平均值,再給出一個標準,會根據當前一兆每秒,幾百K等等,來定義出當前網絡的好壞。


如何用其餘工具爲APP提供良好的海外體驗?

Google 提供了Android One、Android Go、KaiOS三大工具。Android One的特色爲價格親民、系統易用。Android Go的優點在於會根據用戶的機器性能狀況來推薦相匹配的APP版本,讓高端機、低端機都能有更好的使用體驗。KiaOs做爲世界第三大移動系統,經過低價的切入點打入低端用戶,把更多的國際用戶拉到互聯網人羣來作信息的傳遞。


Nicky總結道,開發者在移動出海過程當中應不斷強化三點:一是藉助平臺進行本地環境測試;二是藉助平臺進行設備分析和網絡分析;三是在性能優化同時,兼顧業務數據與ROI。



林起釗,軟通動力安卓工程師


《跨平臺演進之路》



林起釗的演講圍繞三方面展開:C和Java實現跨平臺原理簡析、熱門跨平臺技術簡介、安卓系統中使用的跨平臺技術。


林起釗認爲C語言實現跨平臺主要是靠各個平臺上的編譯器,但系統調用(進程、線程、文件操做、內存管理等)須要單獨適配。而Java跨平臺是創建在「虛擬機」的基礎上的,它經過JVM在程序運行時將.class文件解釋執行,其字節碼文件只能在裝有JVM的系統上運行。


林起釗指出目前熱門跨平臺技術主要包括Hybrid、React-Native、Flutter、Kotlin四種,並對Flutter、和Kotlin進行了詳細解讀。基於dart語言,Flutter直接經過Skia圖像處理引擎渲染界面,而平臺適配及硬件對接等功能能夠經過Plugin來完成。Flutter平臺適配工做量大,技術生態有限。


Kotlin的出現是爲了可以經過編譯直接轉換爲Java或JavaScript、Objective-C代碼,以及簡化代碼及提升代碼安全性。Google隨後推出了Kotlin Multiplatform實現了跨平臺功能。


安卓系統中使用的跨平臺技術主要爲:AndroidRuntime、Project Treble。AndroidRuntime虛擬機基於寄存器(cpu上的一塊高速緩存),在APK運行以前,就對其包含的Dex字節碼進行翻譯,獲得對應的本地機器指令。


Treble架構是8.0版本推出的新元素,旨在讓供應商實現(由芯片製造商編寫的設備專屬底層軟件),與 Android 操做系統框架分離開來。新的架構之下,framework和hal運行於不一樣的進程,全部的HAL採用新的HIDL技術來對接。


PPT獲取方式


關注【個推技術學院】微信公衆號

(微信號:getuitech)

回覆關鍵詞「廣州

便可領取廣州站完整版嘉賓分享PPT!


廣州站已圓滿結束。本週六,個推TechDay全國巡迴沙龍將走進成都。

活動時間:2019年8月31日 13:30-18:00

活動地點:四川省成都市天府軟件園C1 三樓會議室

活動主題:進階移動開發,技術賦能產業


點擊連接(https://mp.weixin.qq.com/s?__biz=MzU2MDc1MjcyMQ==&mid=2247484432&idx=1&sn=130e54aa5b76811e93e49bba59f58a6e&chksm=fc02752ecb75fc38cee56ac2a882f7cc12cd32dc5cbf1d0fc0be58b9646e627612b83ce6442e&token=573381267&lang=zh_CN#rd)

便可瞭解詳細報名方式,技術乾貨PPT及更多精彩內容請關注 「個推技術學院」公衆號。



相關文章
相關標籤/搜索