開發現狀
目前,移動開發已經處於飽和的階段,Android開發也不如當年盛況,已經不再像前幾年前那麼火爆。以前是隻要你會Android四大元件的都是個香餑餑,那樣的時代已經過去了,隨著人機互動的體驗要求,App的使用者體驗的要求、流暢度等等,已經不可同日而語。在這樣的大環境下,那麼對我們的Android開發工程師也是同樣的改變。
在這樣的情況下,由於飽和,隨處都能招到初級的工程師,公司有了選擇的餘地,所以肯定會去選擇更加優秀的,這就必然導致了我們經常說的,Android開發者已經爛大街了,其實不然,只是公司的要求變高,市場飽和,門檻變高而已。所以這就要求我們更加的精於技術,據我了解,中、高階的工程師還是很受歡迎的。
跨平臺開發目前移動端跨平臺開發中,大致歸納為以下幾種情況:
1.react native、weex均使用JavaScript作為程式語言,目前JavaScript在跨平臺開發中,可謂佔據半壁江山,大有“一統天下”的趨勢。react native 用了 react 的設計模式,但UI渲染、動畫效果、網路請求等均由原生端實現。開發者編寫的js程式碼,通過 react native 的中間層轉化為原生控制元件和操作,比ionic等跨平臺應用,大大提高了的使用者體驗。weex基於 Vue 設計模式,支援 web、android、ios 三端,原生端同樣通過中間層轉化,將控制元件和操作轉化為原生邏輯來提高使用者體驗。
2.Flutter 是 Google 力推的跨平臺框架,將是未來的 Google Fuchsia OS 下開發應用的主要技術框架。谷歌對 Flutter 的投入非常大,SDK 的更新頻率也很高。2019 年 5 月 8 號,谷歌剛剛釋出了 Flutter 1.5 穩定版。Flutter 的開發將不僅僅侷限於移動跨平臺,目前已經支援 Web 開發、後端開發、PC 桌面應用開發(內測中)、嵌入式開發(內測中)。其實,撇開個人開發者,許多大公司早就率先嚐試了 Flutter。國內的阿里巴巴、騰訊、愛奇藝等大公司已經把 Flutter 應用在實際開發中,例如閒魚團隊已經把 Flutter 技術應用在閒魚應用上。
學習的方向KotlinKotlin 作為 Android 開發語言是大勢所趨。在此之前很早,Kotlin 就有“Android 世界的 Swift ”的稱號。當然在這之前大家這樣說難免有些底氣不足,與其說是一種事實不如說是一種願望。而現在這麼說就理直氣壯多了。Kotlin 語言相對 Java有很多優勢,比如官網介紹的簡潔、安全。Kotlin具有現代靜態程式語言的很多特點,如型別推斷、多正規化支援、可空性表達、擴充套件函式、DSL支援等。另外對於安卓開發還提供了 Kotlin 安卓擴充套件和 Anko 庫,參見 Kotlin 用於 Android 。關於與 Java 互操作,尤其是 Java 呼叫 Kotlin 是大家普遍覺得坑的地方,除了預設 final外,還有一個主要原因應該就是名字修飾,解決方式可以按照它修飾後名字去引用,或者在 Kotlin 端使用 @JvmName 註解來生成便於 Java 使用的名字。具體參見 Java 中呼叫 Kotlin 。
JetpackJetpack 是一套庫、工具和指南,可幫助開發者更輕鬆地編寫優質應用。這些元件可幫助您遵循最佳做法、讓您擺脫編寫樣板程式碼的工作並簡化複雜任務,以便您將精力集中放在所需的程式碼上。
元件可以單獨採用(不過這些元件是為協同工作而構建的),同時利用 Kotlin 語言功能幫助您提高工作效率。
Android Jetpack 可管理繁瑣的 Activity(如後臺任務、導航和生命週期管理),以便您可以專注於如何讓自己的應用出類拔萃。
Android Jetpack 元件圍繞現代化設計實踐構建而成,具有向後相容性,可以減少崩潰和記憶體洩漏。
元件化設計
音視訊方向將一個app分成多個模組,每個模組都是一個元件(Module),開發的過程中我們可以讓這些元件相互依賴或者單獨除錯部分元件等,但是最終釋出的時候是將這些元件合併統一成一個apk,這就是元件化開發。元件化開發中認為元件作為系統的一部分,是可獨立執行的服務。
現在很多公司面試都會問到元件化的問題,因為很多公司前期在做app的時候都沒有考慮過在業務量發展到一定的瓶頸的時候,app會變得十分臃腫,難以維護,又或者公司有其他的發展方向,需要做一個新的app,但是需要用到現有app的一部分業務功能,隨著公司發展,可能兩個app互相引用的業務模組會越來越多,為了適應公司未來的發展,加快開發速度,元件化是不得不進行的一步。
感想這個一個很不錯的方向,特別是在直播、短視訊等風口讓這個方向變得很紅熱,我算是半個音視訊開發的從業者,因為 GitHub 開源的 CarGuo/GSYVideoPlayer 使用者還不少,所以被逼著成了半桶水的音視訊開發。
未來 5G 時代音視訊方向肯定會繼續紅火。然而事實上一旦做了音視訊開發,你就會發現音視訊方向其實和 Android 沒有太大的必然聯絡,因為音視訊開發是服務於 Android ,而非用 Android 去開發音視訊。
音視訊開發首要的是需要學習C++,學習FFMpeg開源專案,了解音視訊的編碼協議、容器封裝和網路協議,最後對於 Android來說就是NDK開發,然後還需要給iOS等其他平臺音視訊服務,因為如果音視訊專案只服務於Android是不現實的,所以選擇音視訊開發就要讓自己不侷限於 Android ,並且這個方向會是偏低層的學習,所以會比較累但是技術會相對穩定。
行情好不好,還是靠自己的能力說話。Android開發人員要想邁向光明之路,必須得苦練內功,把自己從菜鳥修煉成大佬、甚至神仙,到時候自然會有大批公司搶著要。有一句老話說的好:“比你優秀的對手在學習,你的仇人在磨刀,你的閨蜜在減肥,隔壁老王在練腰,我們必須不斷學習,否則我們將被學習者超越。”