做爲一個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技術等
這些技術你不能只會用,你須要知道他的原理app
5)NDK 模塊開發
NDK,其中的關於C/C++,jni,Linux基礎都是須要學習的,除此以外,音視頻的編解碼技術,流媒體協議,ffmpeg這些都是音視頻開發必備技能,並且OpenCV/OpenGl/ 這些又是圖像處理必備知識
6)提升開發效率的工具運用
想要提升開發效率,須要用工具,這個下文說了下
7)移動架構師專題項目實戰環節
學了技術就須要結合項目進行實戰訓練
8)移動架構師不可不學習微信小程序
9)混合開發flutter
flutter如今已經逐漸變成了主流的混合開發框架,另外因爲阿里系的強大存在,致使阿里 系的公司都在用Weex混合架構,這些都是一個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文件的組成。
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文件中配置它們,以簡化簽名過程。
八,使用 Crashlytics
Crashlytics 是最強大,最輕便的應用崩潰報告解決方案。
Crashlytics 提供了深入且可付諸行動的看法,甚至包括應用崩潰時確切的代碼行號。
你可使用 crashlytics 來減小識別故障和修復故障的時間。
此外,它還提供了各類分析報告,例如出現頻率最高的崩潰,崩潰百分比等等。
Crashlytics 還包括 Crashlytics Beta,該服務可讓你輕鬆地將預發行的 iOS 和 Android 應用分發給測試人員,以便快速得到反饋。
九,選擇正確的架構
若是你是從頭開始開發應用程序,那麼就會有許多優點。其中之一就是選擇正確的體系結構。
一般,咱們喜歡將全部內容都寫在同一個activity文件中,由於這樣作很容易。
可是,當你的代碼量增多時,這就會成問題。你的代碼庫會變得十分龐大,每一個文件包含的代碼行數也會很是龐大。考慮到代碼的性能和維護,在早期階段選擇正確的體系結構,纔是明智的作法。
MVC、MVP、MVVM和MVI等許多體系結構可幫助 Android 開發人員輕鬆維護、測試和開發新功能。
上圖說明了在設計完應用程序後,全部模塊應如何相互交互。儘管這徹底取決於你的組織,但你也有可能會有機會選擇適合應用程序的體系結構。可是,強烈建議你選擇適合需求的特定體系結構。關於哪一種架構最好這個話題也是衆說紛紜。
根據開發人員指南:「沒有任何一種方法可以編寫出適用於每種狀況的最佳應用程序。話雖如此,對於大多數狀況和工做流來講,這種推薦的體系結構都是一個很好的起點。
十,學習能力
做爲一個Android開發,看完以後得但願能夠給你點啓發,順便點個贊給我點鼓勵,關注我會常常分享。
你有什麼經驗,也能夠在文下分享,畢竟我們程序員不少都是開源的,衆人拾柴火焰高。
看完以後不少朋友詢問個人學習內容,那我也來分享一波,內容比較多,先把圖放出來你們看一下
詳情瞭解關注我,私信安卓送