經驗分享:從事 Android 開發六年,我學到的那些事

你的代碼質量應該隨著經驗的增加而提高,在本文作者基於 Android 開發者六年間,其都學到了什麼?

經驗分享:從事 Android 開發六年,我學到的那些事

六年來,我為多家公司編寫過各種應用程序。你編寫代碼或處理代碼庫的文化和方式會隨著你的經驗而不斷變化。

你的代碼質量應該隨著經驗的增加而提高,否則就需要反思了。

選擇正確的架構

如果你是從頭開始開發應用程序,那麼就會有許多優勢。

其中之一就是選擇正確的體系結構。通常,我們喜歡將所有內容都寫在同一個activity文件中,因為這樣做很容易。但是,當你的代碼量增多時,這就會成問題。你的代碼庫會變得十分龐大,每個文件包含的代碼行數也會非常龐大。

考慮到代碼的性能和維護,在早期階段選擇正確的體系結構,才是明智的做法。

MVC、MVP、MVVM和MVI等許多體系結構可幫助 Android 開發人員輕鬆維護、測試和開發新功能。

經驗分享:從事 Android 開發六年,我學到的那些事

上圖說明了在設計完應用程序後,所有模塊應如何相互交互。儘管這完全取決於你的組織,但你也有可能會有機會選擇適合應用程序的體系結構。

但是,強烈建議你選擇適合需求的特定體系結構。

關於哪種架構最好這個話題也是眾說紛紜。

根據開發人員指南:

“沒有任何一種方法能夠編寫出適用於每種情況的最佳應用程序。話雖如此,對於大多數情況和工作流來說,這種推薦的體系結構都是一個很好的起點。”

善加利用Android Studio

Android 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 的功能包括:

  • 查看APK中文件的絕對大小和相對大小,例如DEX和Android資源文件。
  • 瞭解DEX文件的組成。
  • 並排比較兩個APK。
經驗分享:從事 Android 開發六年,我學到的那些事

Fast Emulator

如果你需要應對各種版本的 Android, 而且還希望在各種 API 級別上測試你的應用,那麼這款模擬器甚至比真正的設備還好。

這款模擬器提供了Android設備所具備的所有功能。你可以模擬打電話和發短信、指定設備的位置、模擬不同的網絡速度、模擬旋轉和其他硬件傳感器、訪問 Google 應用商店等等。

與在物理設備上的測試相比,從某種程度上來說,在模擬器中測試應用程序更快捷、更方便。

Profilers

Android Profiler工具提供了實時數據,可以幫助你瞭解應用使用CPU、內存、網絡和電池資源的情況。

經驗分享:從事 Android 開發六年,我學到的那些事

雖然我們有各種的分析器,例如CPU分析器、內存分析器、網絡分析器和能耗分析器。

但 Android Profiler 可以兼容Android 5.0(API級別21)及更高版本。你可以使用 Android Studio 中的高級事件探查器來監視應用會話消耗CPU資源和內存的狀況。

內存探查器可以幫助我們使用Leak Canary調試內存洩漏。

配置構建變化

你可以使用構建變化為你的應用創建不同的版本,還可以正確管理依賴項和簽名配置。

大多數組織都有測試和生產環境。如果想針對每種環境構建不同的應用程序,你可以利用不同的構建類型指定不同的基本URL。

經驗分享:從事 Android 開發六年,我學到的那些事

你還可以根據API級別或其他設備變化,為不同的設備構建應用程序的不同版本。

使用 Lint Checks 改進代碼

這個 lint 工具可以幫助你找出結構不良的代碼,而這些代碼可能會影響應用程序的可靠性和效率。

Lint會告訴你佈局中是否存在佔用大量空間的命名空間。

它還告訴你其他結構性的問題,例如使用了棄用的元素或目標API版本不支持的API調用。它還會建議你使用所有庫的最新版本。

使用新的 SparseArray<string>(...) 代替 HashMap,可以獲得更好的性能。SparseArrays 會將整數映射到對象。與普通的對象數組不同,下標間可能存在間隙。/<string>

它比使用 HashMap 將整數映射成對象的效率更高。

測試應用程序

測試驅動的開發(TDD)是確保你會測試每一行新代碼的一種方法。如果採用這種方式,那麼在編寫要實現的代碼之前,你需要為添加的內容編寫測試。

由於時間和資源有限,大多數創業公司可能不會採用測試驅動的開發環境。但是它已被許多公司廣泛接受。

經驗分享:從事 Android 開發六年,我學到的那些事

Android 有三種類型的測試。

1.單元測試

單元測試用於測試方法和小模塊。無需模擬器或真實設備即可運行這些測試,因為它們可以在JVM上運行。

JUnit 和 Robolectric 是流行的 Android 單元測試框架,可以在JVM上快速運行測試。

2. 設備測試

設備測試依賴於Android 框架。由於這種依賴性,你需要模擬器或物理設備才能運行這種測試。我們使用 Mockito 模擬設備測試中使用的對象。

3. UI測試

我們可以利用UI測試活動的啟動是否正確,或視圖的存在是否正確。Espresso和UI Automater 是UI測試中廣泛使用的工具。

以下是應用當前所包含測試的軟件包結構。

經驗分享:從事 Android 開發六年,我學到的那些事

Test:單元測試都保存在這個文件夾中。這些測試在JVM上運行,不需要 Android 設備或模擬器。

Android test:所有設備和UI測試都保存在這個文件夾中。這些測試需要 Android 物理設備或模擬器才能運行。

使用版本控制

Git 和 BitBucket 是最常用的版本控制系統。

版本控制可以跟蹤文件的改動,可以記錄完成的操作,並且可以根據需要恢復特定版本。

但給你與團隊一起工作時,版本控制有利於協作,而且還可以將所有的更改合併到源代碼中。如果沒有版本控制,則你需要進行備份,並將代碼存儲到安全的地方。

有了Git以後,代碼就安全了。你可以跟蹤更改,還可以針對某次發佈維護多個代碼庫。它可以簡化兩個人一起工作時合併代碼的工作。

此外,你也可以利用Git展示你的工作,並向許多開源項目貢獻代碼。Git已成為許多公司篩選人才的地方,因為他們可以通過Git查看候選人的工作成果和個人項目。

發佈產品的知識

無論你是否是將新版本發佈到生產環境的主要負責人,我都建議你掌握將應用發佈到應用商店的方法。

掌握使用密鑰存儲文件對APK進行簽名的方法。記下你的密鑰庫密碼和別名。你甚至可以在Gradle文件中配置它們,以簡化簽名過程。

使用 Crashlytics

Crashlytics 是最強大,最輕便的應用崩潰報告解決方案。

Crashlytics 提供了深刻且可付諸行動的見解,甚至包括應用崩潰時確切的代碼行號。你可以使用 crashlytics 來減少識別故障和修復故障的時間。

此外,它還提供了各種分析報告,例如出現頻率最高的崩潰,崩潰百分比等等。

Crashlytics 還包括 Crashlytics Beta,該服務可以讓你輕鬆地將預發行的 iOS 和 Android 應用分發給測試人員,以便快速獲得反饋。

經常抽時間學習

在這我分享一份自己收錄整理的Android學習PDF+架構視頻+面試文檔+源碼筆記,還有

高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料這些都是我閒暇還會反覆翻閱的精品資料

總之也是在這裡幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習

如果你有需要的話,可以點贊+評論+轉發關注我,然後私信我【進階】我發給你

經驗分享:從事 Android 開發六年,我學到的那些事

經驗分享:從事 Android 開發六年,我學到的那些事

經驗分享:從事 Android 開發六年,我學到的那些事

經驗分享:從事 Android 開發六年,我學到的那些事


分享到:


相關文章: