從事 Android 開發六年,我學到的那些事!

從事 Android 開發六年,我學到的那些事!

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

你的代碼質量應該隨着經驗的增長而提升,不然就須要反思了。面試

選擇正確的架構

若是你是從頭開始開發應用程序,那麼就會有許多優點。數組

其中之一就是選擇正確的體系結構。一般,咱們喜歡將全部內容都寫在同一個activity文件中,由於這樣作很容易。可是,當你的代碼量增多時,這就會成問題。你的代碼庫會變得十分龐大,每一個文件包含的代碼行數也會很是龐大。安全

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

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

從事 Android 開發六年,我學到的那些事!

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

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

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

根據開發人員指南:工具

「沒有任何一種方法可以編寫出適用於每種狀況的最佳應用程序。話雖如此,對於大多數狀況和工做流來講,這種推薦的體系結構都是一個很好的起點。」

善加利用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 會將整數映射到對象。與普通的對象數組不一樣,下標間可能存在間隙。

它比使用 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學習資料,有興趣的朋友們能夠關注下我【主頁的簡介】查看免費領取方式

①Android開發核心知識點筆記

從事 Android 開發六年,我學到的那些事!

②對標「阿里 P7」 40W+年薪企業資深架構師成長學習路線圖

從事 Android 開發六年,我學到的那些事!

③面試精品集錦彙總

④全套體系化高級架構視頻

Android精講視頻領取學習後更加是如虎添翼!進軍BATJ大廠等(備戰)!如今都說互聯網寒冬,其實無非就是你上錯了車,且穿的少(技能),要是你上對車,自身技術能力夠強,公司換掉的代價大,怎麼可能會被裁掉,都是淘汰末端的業務Curd而已!現現在市場上初級程序員氾濫,這套教程針對Android開發工程師1-6年的人員、正處於瓶頸期,想要年後突破本身漲薪的,進階Android中高級、架構師對你更是如魚得水,趕快領取吧!

從事 Android 開發六年,我學到的那些事!

上述【高清技術腦圖】以及【配套的架構技術PDF】能夠 加我wx:X1524478394 免費獲取

相關文章
相關標籤/搜索