<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          淺談 2022 Android 端技術(shù)趨勢(shì),什么值得學(xué)!

          共 4569字,需瀏覽 10分鐘

           ·

          2022-04-24 10:19


          引言

          回頭去看 2021,過(guò)的似乎那么快,不敢相信我已經(jīng)從事 Android 開(kāi)發(fā)兩年了,不免生出一些感嘆。

          那么 2022 ,Android 端會(huì)有什么技術(shù)趨勢(shì)嗎?或者什么 [新] 技術(shù)值得去學(xué)? 又或者對(duì)我來(lái)說(shuō),現(xiàn)在什么 [值得] 去學(xué)?

          本文將通過(guò)我個(gè)人的技術(shù)學(xué)習(xí)經(jīng)歷去分析我們應(yīng)該怎么選用某個(gè)技術(shù),希望對(duì)大家能有所幫助。

          回頭看

          讓我們把時(shí)間切回過(guò)去,最近幾年我都給自己加了哪些技術(shù)點(diǎn)?

          2019-2020

          • Kotlin,協(xié)程
          • MVP,Hilt,MVVM ,JetPack 相關(guān)
          • 熱修復(fù)
          • Flutter 淺試
          • 自動(dòng)化、持續(xù)集成相關(guān)

          2021-2022

          • JetPack Compose
          • Epoxy+Mvrx , MVI

          看完這個(gè)表,是不是驚嘆于,我靠,你小子 2021 等于啥都沒(méi)學(xué)???

          說(shuō)來(lái)尷尬,當(dāng)我自己從博客記錄從翻閱時(shí),也有這份感嘆,對(duì)于 [新技術(shù)] ,真的好像沒(méi)怎么看了,所以在年終總結(jié)上,我發(fā)出了這樣一句感嘆,今年用的組件都是以前學(xué)過(guò)的,只不過(guò)忘了,又翻出筆記看了一眼。

          但仔細(xì)又想了下,2021新技術(shù)真的好像沒(méi)有多少,對(duì)于 Android 端而言,Compose 算一擊重拳,而 MVI 又是最近因?yàn)?nbsp;Compose 被正式啟用為 Google 推薦 [新] 架構(gòu)標(biāo)準(zhǔn),其他的好像真的沒(méi)有。

          Google今年推過(guò)的技術(shù)

          如果我們只將技術(shù)定義為 [技術(shù)組件] ,那就可能太狹義,所以那就細(xì)細(xì)列舉一下今年 Google 推過(guò)的那些技術(shù)文章:

          如何找到呢,那么 Android開(kāi)發(fā)者 公眾號(hào)就是最優(yōu)先的。所以我們就通過(guò)其發(fā)布過(guò)的文章,大致統(tǒng)計(jì)一下,Android 官方給我們的建議及 [開(kāi)發(fā)指南] ,我排了一個(gè)表,大致如下:

          1. JetPack

            • Navigation 、Hilt、WorkManager、ActivityResult
            • Compose 、Wear OS-Compose 、Wear Os-卡片庫(kù)
            • WindowsManager、RoomPaging3.0、Glance - Alpha
          2. 折疊屏,大屏適配

            推薦了很多次,Android12 上也推了幾次

          3. Kotlin

            Flow、協(xié)程

          4. Android12

            行為變更、隱私安全更新、新的 小組件widget

          5. 安全方面

            數(shù)據(jù)加密與生物特征、App 合規(guī)

          6. Android 啟動(dòng)相關(guān)

            App Startup、延遲初始化

          7. CameraX

          8. Material Desgin

          按照推薦頻率,我將它們分別列在了上面,總共上面這幾大類(lèi)。不難發(fā)現(xiàn),JetPack 仍然是 Android 官方 首推 ,然后就是 折疊屏以及不同屏幕 的適配,接著就是 Kotlin 與 Android12 ,當(dāng)然今年因?yàn)?nbsp;合規(guī) 方面的各種問(wèn)題,Android團(tuán)隊(duì) 對(duì)于安全方面也提到了,最后就是和性能以及 UI 相關(guān)的一些推薦。

          趨勢(shì)預(yù)測(cè)

          折疊屏與大屏適配

          嚴(yán)格上這個(gè)其實(shí)不算是一項(xiàng)技術(shù),而是一項(xiàng)適配工作。但是一直以來(lái),對(duì)于大屏的適配,Android 上基本做的很少。自從三星推出第一個(gè)折疊屏之后,這個(gè)適配就開(kāi)始被重視起來(lái)了。

          廠(chǎng)商方面,目前 oppo,華為小米 也都紛紛推出自己的折疊屏手機(jī),以滿(mǎn)足先行市場(chǎng)。

          官方支持度 方面,如果看過(guò)今年的 IO 大會(huì),就會(huì)發(fā)現(xiàn),折疊屏適配已經(jīng)被專(zhuān)門(mén)放到了一個(gè)欄目,而且專(zhuān)門(mén)講解,官方公眾號(hào)也已經(jīng)推了多次。

          所以我們姑且可以認(rèn)為,折疊屏適配應(yīng)該是2022的一個(gè)趨勢(shì),但目前對(duì)于折疊屏的適配的主流App其實(shí)還沒(méi)有多少,更多的也都是廠(chǎng)商做了相關(guān)適配,app開(kāi)發(fā)方面專(zhuān)門(mén)針對(duì)改動(dòng)做的其實(shí)并不多。

          所以可見(jiàn)在2022隨著折疊屏手機(jī)機(jī)型的愈來(lái)愈多,某些關(guān)鍵業(yè)務(wù)的全面適配工作也將隨之展開(kāi),而不是現(xiàn)在僅僅只是在折疊的時(shí)候,同時(shí)存在兩個(gè)APP,或者某個(gè)頁(yè)面展示在另一個(gè)屏幕。

          技術(shù)支持方面,Android團(tuán)隊(duì) 為此專(zhuān)門(mén)準(zhǔn)備了一個(gè)新的 JetPack 組件,JetPack WindowManager,其主要功能就是監(jiān)聽(tīng)屏幕的折疊狀態(tài),以及當(dāng)前相應(yīng)的屏幕信息,目前主要以可折疊設(shè)備為目標(biāo),不過(guò)未來(lái)將支持更多屏幕類(lèi)型及窗口功能,現(xiàn)在處于 rc 版本,當(dāng)然今年也肯定會(huì)推出穩(wěn)定版。

          JetPack Compose

          Compose 自從發(fā)布第一個(gè)穩(wěn)定版本后,在今年的 IO 大會(huì)上也有專(zhuān)門(mén)的分區(qū)去講。

          其是用于構(gòu)建 原生Android 的一個(gè) 工具包 ,以 聲明式 寫(xiě)法,搭配 Kotlin,可大大簡(jiǎn)化并加快原生的 UI 開(kāi)發(fā)工作。

          目前 Compose 已經(jīng)對(duì)如下幾個(gè)方面做了支持:

          • Android UI 支持
          • Wear 可穿戴設(shè)備支持
          • Android Widget 小組件支持

          非官方方面,jetbrains 也對(duì)桌面版,以及網(wǎng)頁(yè)做了相關(guān)支持,具體見(jiàn):Compose Multiplatform

          桌面版 目前已經(jīng)發(fā)布了正式版本1.0.1

          得益于 Compose 的聲明式開(kāi)發(fā),使得其做折疊屏適配也是較為簡(jiǎn)單。在與原生 View 的交互上,Compose 支持的也非常不錯(cuò)。

          所以我們可以認(rèn)為,2022,如果從事原生開(kāi)發(fā),那么 Compose 勢(shì)必是一個(gè)比較適合你學(xué)習(xí)的新技術(shù),它的上手難度并不大,只要你熟悉Kotlin ,也就能很快上手,只不過(guò)目前其在ide上的 預(yù)覽 功能比較慢,還有待后續(xù)優(yōu)化。

          Kotlin

          協(xié)程

          協(xié)程其實(shí)在前幾年已經(jīng)被廣泛使用,我第一次使用協(xié)程是在2020年,也見(jiàn)證了其逐漸替代 AsyncTask 及相關(guān)線(xiàn)程池工具的過(guò)程。

          Flow

          Flow 今年來(lái)被 Android團(tuán)隊(duì) 推薦了多次,其主要以協(xié)程為基礎(chǔ)構(gòu)建,某種意義上而言,我個(gè)人覺(jué)得其似乎有點(diǎn)替代 RxJava 的意思。得益于 Kotlin 的強(qiáng)大與簡(jiǎn)潔,Flow 今年出現(xiàn)最多的場(chǎng)景反而是 Android團(tuán)隊(duì) 推薦其用于替代 LiveData ,以增強(qiáng)部分情況下的使用。

          當(dāng)然 Flow 不止于此,如果你正在使用 Kotlin ,并且協(xié)程用的也比較多,那么 Flow 肯定是繞不開(kāi)的一個(gè)話(huà)題。

          所以我們可以預(yù)估,在2022,協(xié)程 與 Flow 依然值得學(xué)習(xí),并且也是能很快感受到效益的組件。

          但是相比協(xié)程,Flow 其實(shí)還有很長(zhǎng)一段時(shí)間要走,畢竟常見(jiàn)開(kāi)發(fā)場(chǎng)景里,LiveData 就可以滿(mǎn)足,而 Flow 卻顯得不是那么必需。

          ASM

          這項(xiàng)技術(shù)其實(shí)并不新奇,但是因?yàn)槠浔旧硇枰那皞渲R(shí)挺多,比如 Android打包流程 ,APK打包流程,字節(jié)碼自定義 Gradle 插件,Transform API ,導(dǎo)致細(xì)分為了好多領(lǐng)域,大佬們依然在熱追,而像我這樣的菜鳥(niǎo)其實(shí)還是一臉吃瓜。

          那為什么我認(rèn)為其是一個(gè)技術(shù)趨勢(shì)呢?

          主要是 合規(guī) 帶來(lái)的影響,大的環(huán)境下,可能以后打包時(shí),我們都會(huì)監(jiān)測(cè)相應(yīng)的權(quán)限聲明與隱私調(diào)用,否則如何確保后續(xù)的改動(dòng)不會(huì)導(dǎo)致違規(guī)呢?但如何確定某個(gè) sdk 沒(méi)有調(diào)用?而且我們也不可能每次都讓相關(guān)第三方去檢測(cè)。

          所以,維護(hù)一個(gè)相應(yīng)的監(jiān)測(cè)組件,是大環(huán)境下的必需。而實(shí)現(xiàn)上述插件最好的方式就是 Hook 或者 ASM ,所以如果你目前階段比較高,ASM 依然是你避不開(kāi)的技術(shù)選題。

          什么[值得]你去學(xué)?

          這個(gè)副標(biāo)題其實(shí)有一點(diǎn)夸張,但仔細(xì)想想,其實(shí)就是這樣,我們應(yīng)該明白,到底什么是更適合自己當(dāng)下學(xué)習(xí)的。

          以我個(gè)人為例,大家可以從中體會(huì)一下,自己應(yīng)該關(guān)注哪些技術(shù),當(dāng)然,我個(gè)人的僅只能作為和我一樣的同學(xué)做參考:

          就像最開(kāi)始說(shuō)的,其實(shí)這些新組件,很多我都已經(jīng)用過(guò)或者記錄過(guò),在最開(kāi)始的兩年,我一直在追尋組件越新越好的道路上,所以每當(dāng)新出一個(gè)組件,總會(huì)在項(xiàng)目中進(jìn)行實(shí)踐,去嘗試。

          但是我也逐漸發(fā)現(xiàn)了一些問(wèn)題,當(dāng)經(jīng)歷了[使用工具]的這個(gè)階段,當(dāng)我要去解決某些特定情況下問(wèn)題時(shí),突然發(fā)現(xiàn),自己似乎什么都不會(huì),或者就只會(huì)基礎(chǔ),比如:

          1. 在集成某些 gradle 插件時(shí),如果要滿(mǎn)足 CI 下的一些便捷,要去寫(xiě)一些 Task 去滿(mǎn)足動(dòng)態(tài)集成,而自己對(duì) Gradle 僅僅處于Android常見(jiàn)使用階段,這時(shí)候就需要去學(xué)相關(guān);
          2. 我自己也會(huì)維護(hù)一些組件庫(kù),當(dāng)使用的同學(xué)逐漸增多,大家提到的問(wèn)題也越來(lái)越多,那如何解決這些問(wèn)題,如何優(yōu)雅的兼容,組件的組合方式,如何運(yùn)用合適的設(shè)計(jì)模式去優(yōu)化,這些又是我需要考慮的問(wèn)題;
          3. 當(dāng)我們開(kāi)始對(duì)音視頻組件進(jìn)行相關(guān)優(yōu)化時(shí),此時(shí)又出現(xiàn)了很多方向,最終的方案選型也是需要你再次進(jìn)入一個(gè)未知領(lǐng)域,從0到0.1;

          新技術(shù)會(huì)讓我當(dāng)前編碼變得開(kāi)心,能節(jié)省我很多事,但其不能解決一些非編碼或者復(fù)雜問(wèn)題,而這些問(wèn)題,是每個(gè)同學(xué)前進(jìn)道路上也都會(huì)遇到的,所以我們常常會(huì)看到,做 Android 真難,啥都要會(huì)。

          總體對(duì)我而言,今年會(huì)主要將一些精力放在如下幾個(gè)方面:

          • Gradle 相關(guān)
          • 設(shè)計(jì)模式在三方庫(kù)中的運(yùn)用
          • Android 相關(guān) 源碼 理解

          總結(jié)

          技術(shù)在不斷變化與迭代,有些技術(shù)我們會(huì)發(fā)現(xiàn)為什么好幾年了,今年似乎特別受人關(guān)注,其實(shí)也是因?yàn)樵谀撤N環(huán)境下,其的作用逐漸顯現(xiàn)。而這些技術(shù)正是成為一名優(yōu)秀的 Android工程師 所必須具備的基礎(chǔ)技能。

          我們?cè)谧穼?nbsp;[新] 技術(shù)的,享受快捷的同時(shí),也別忘了 [停] 下來(lái)看看身邊風(fēng)景。

          來(lái)源:Petterp

          https://juejin.cn/post/7053831595576426504

          -End-


          全棧架構(gòu)社區(qū)交流群

           「全棧架構(gòu)社區(qū)」建立了讀者架構(gòu)師交流群,大家可以添加小編微信進(jìn)行加群。歡迎有想法、樂(lè)于分享的朋友們一起交流學(xué)習(xí)。

          掃描添加好友邀你進(jìn)架構(gòu)師群,加我時(shí)注明姓名+公司+職位】
          看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多人
          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产成人 亚洲 欧洲在线 | 大鸡巴操视频 | 大香蕉伊人导航 | 中国美女一级特黄大片视频软件 | 粉嫩人妻 |