作為一個Android開發,現在的你已經開發多少年了?
你的程式碼品質有沒有隨著經驗的增加而提高?沒有的話就需要反思了。
現在來分享一個有六年經驗Android開發,都學到了什麼?
一,學習能力想要成長,學習能力尤為重要我們一直有句老話,學如逆水行舟,不進則退。就像我們Android進階,需要學習的高階內容比較多
1)Java語言進階與Android相關技術核心像 泛型,多執行緒,反射,JVM,Java IO,註解,序列化等
2)App開發框架知識體系(app亦物件)Android 2013~2016年的技術,大家網上Copy程式碼習慣了對這塊經常“使用”的程式碼熟悉而又陌生:熟悉的是幾乎天天在和它們打交道,天天在複製這些程式碼;陌生的是雖然天天和這些程式碼打交道,從未深入研究過這些程式碼的原理,程式碼深處的內涵。
我們需要從新的角度去分析這些知識點,深入研究他們,要學習原始碼,模仿原始碼,然後再hook原始碼,
這樣才能說自己懂這塊的知識。這些都是做Android開發,做高階工程師的基礎。3)360° Android app全方位效能調優書寫高效能程式碼,再調優
4)Android前沿技術比如熱升級,熱修復,App Instant,強制更新,元件化路由架構Arouter,RxJava,IOC架構方法,Hook技術等這些技術你不能只會用,你需要知道他的原理
5)NDK 模組開發NDK,其中的關於C/C++,jni,Linux基礎都是需要學習的,除此之外,音視訊的編解碼技術,流媒體協議,ffmpeg這些都是音視訊開發必備技能,而且OpenCV/OpenGl/ 這些又是影象處理必備知識
6)提高開發效率的工具運用想要提高開發效率,需要用工具,這個下文說了下
7)移動架構師專題專案實戰環節學了技術就需要結合專案進行實戰訓練
9)混合開發flutterflutter現在已經逐漸變成了主流的混合開發框架,另外由於阿里系的強大存在,導致阿里 系的公司都在用Weex混合架構,這些都是一個Android工程師開拓視野,走向未來必不可少的基本技能
二,善加利用Android StudioAndroid Studio 提供了最快的工具,可以為每種型別的 Android 裝置構建應用程式。不幸的是,我們僅探索了該IDE的一小部分。Android Studio附帶了許多工具,以下是我們在日常開發中應使用的各種工具。
Visual Layout Editor在這款Layout Editor中,我們可以將UI元素拖到視覺化設計編輯器中,並以此來快速構建佈局,同時無需手動編寫佈局XML。
這款設計編輯器可以在各種 Android 裝置和版本上預覽佈局,而且你還可以動態調整佈局的大小,以確保在各種螢幕尺寸上正常工作。當你使用這款Layout Editor構建新佈局時,尤其能感受到其強大之處。
APK Analyzer我們可以利用 APK Analyzer 減少花在除錯應用程式內DEX檔案和資源問題上的時間,而且還可以減小APK的大小。
此外,你還可以在命令列中使用 APK Analyzer 。APK Analyzer 的功能包括:
Fast Emulator如果你需要應對各種版本的 Android, 而且還希望在各種 API 級別上測試你的應用,那麼這款模擬器甚至比真正的裝置還好。
這款模擬器提供了Android裝置所具備的所有功能。你可以模擬打電話和發簡訊、指定裝置的位置、模擬不同的網路速度、模擬旋轉和其他硬體感測器、訪問 Google 應用商店等等。
與在物理裝置上的測試相比,從某種程度上來說,在模擬器中測試應用程式更快捷、更方便。
ProfilersAndroid Profiler工具提供了實時資料,可以幫助你了解應用使用CPU、記憶體、網路和電池資源的情況。
雖然我們有各種的分析器,例如CPU分析器、記憶體分析器、網路分析器和能耗分析器。但 Android Profiler 可以相容Android 5.0(API級別21)及更高版本。
你可以使用 Android Studio 中的高階事件探查器來監視應用會話消耗CPU資源和記憶體的狀況。記憶體探查器可以幫助我們使用Leak Canary除錯記憶體洩漏。
三,配置構建變化你可以使用構建變化為你的應用建立不同的版本,還可以正確管理依賴項和簽名配置。 大多陣列織都有測試和生產環境。
如果想針對每種環境構建不同的應用程式,你可以利用不同的構建型別指定不同的基本URL。
你還可以根據API級別或其他裝置變化,為不同的裝置構建應用程式的不同版本
四,使用 Lint Checks 改進程式碼這個 lint 工具可以幫助你找出結構不良的程式碼,而這些程式碼可能會影響應用程式的可靠性和效率。
Lint會告訴你佈局中是否存在佔用大量空間的名稱空間。
它還告訴你其他結構性的問題,例如使用了棄用的元素或目標API版本不支援的API呼叫。
它還會建議你使用所有庫的最新版本。使用新的 SparseArray<String>(...) 代替 HashMap,可以獲得更好的效能。SparseArrays 會將整數對映到物件。
與普通的物件陣列不同,下標間可能存在間隙。它比使用 HashMap 將整數對映成物件的效率更高。
五,測試應用程式測試驅動的開發(TDD)是確保你會測試每一行新程式碼的一種方法。
如果採用這種方式,那麼在編寫要實現的程式碼之前,你需要為新增的內容編寫測試。由於時間和資源有限,大多數創業公司可能不會採用測試驅動的開發環境。但是它已被許多公司廣泛接受。
Android 有三種類型的測試。1.單元測試單元測試用於測試方法和小模組。無需模擬器或真實裝置即可執行這些測試,因為它們可以在JVM上執行。JUnit 和 Robolectric 是流行的 Android 單元測試框架,可以在JVM上快速執行測試。
2. 裝置測試裝置測試依賴於Android 框架。由於這種依賴性,你需要模擬器或物理裝置才能執行這種測試。我們使用 Mockito 模擬裝置測試中使用的物件。
3. UI測試我們可以利用UI測試活動的啟動是否正確,或檢視的存在是否正確。Espresso和UI Automater 是UI測試中廣泛使用的工具。以下是應用當前所包含測試的軟體包結構。
Test:單元測試都儲存在這個資料夾中。這些測試在JVM上執行,不需要 Android 裝置或模擬器。
Android test:所有裝置和UI測試都儲存在這個資料夾中。這些測試需要 Android 物理裝置或模擬器才能執行。
六,使用版本控制Git 和 BitBucket 是最常用的版本控制系統。
版本控制可以跟蹤檔案的改動,可以記錄完成的操作,並且可以根據需要恢復特定版本。
但給你與團隊一起工作時,版本控制有利於協作,而且還可以將所有的更改合併到原始碼中。如果沒有版本控制,則你需要進行備份,並將程式碼儲存到安全的地方。
有了Git以後,程式碼就安全了。你可以跟蹤更改,還可以針對某次釋出維護多個程式碼庫。它可以簡化兩個人一起工作時合併程式碼的工作。此外,你也可以利用Git展示你的工作,並向許多開源專案貢獻程式碼。
Git已成為許多公司篩選人才的地方,因為他們可以通過Git檢視候選人的工作成果和個人專案。
七,釋出產品的知識無論你是否是將新版本釋出到生產環境的主要負責人,我都建議你掌握將應用釋出到應用商店的方法。
掌握使用金鑰儲存檔案對APK進行簽名的方法。記下你的金鑰庫密碼和別名。
你甚至可以在Gradle檔案中配置它們,以簡化簽名過程。
八,使用 CrashlyticsCrashlytics 是最強大,最輕便的應用崩潰報告解決方案。
Crashlytics 提供了深刻且可付諸行動的見解,甚至包括應用崩潰時確切的程式碼行號。
你可以使用 crashlytics 來減少識別故障和修復故障的時間。
此外,它還提供了各種分析報告,例如出現頻率最高的崩潰,崩潰百分比等等。
Crashlytics 還包括 Crashlytics Beta,該服務可以讓你輕鬆地將預發行的 iOS 和 Android 應用分發給測試人員,以便快速獲得反饋。
九,選擇正確的架構如果你是從頭開始開發應用程式,那麼就會有許多優勢。其中之一就是選擇正確的體系結構。
通常,我們喜歡將所有內容都寫在同一個activity檔案中,因為這樣做很容易。
但是,當你的程式碼量增多時,這就會成問題。你的程式碼庫會變得十分龐大,每個檔案包含的程式碼行數也會非常龐大。考慮到程式碼的效能和維護,在早期階段選擇正確的體系結構,才是明智的做法。
MVC、MVP、MVVM和MVI等許多體系結構可幫助 Android 開發人員輕鬆維護、測試和開發新功能。
上圖說明了在設計完應用程式後,所有模組應如何相互互動。儘管這完全取決於你的組織,但你也有可能會有機會選擇適合應用程式的體系結構。但是,強烈建議你選擇適合需求的特定體系結構。關於哪種架構最好這個話題也是眾說紛紜。
根據開發人員指南:“沒有任何一種方法能夠編寫出適用於每種情況的最佳應用程式。話雖如此,對於大多數情況和工作流來說,這種推薦的體系結構都是一個很好的起點。
你有什麼經驗,也可以在文下分享,畢竟咱們程式設計師很多都是開源的,眾人拾柴火焰高。
看完之後很多朋友詢問我的學習內容,那我也來分享一波,內容比較多,先把圖放出來大家看一下