安卓開發人員必看的一些經驗總結和忠告
譯者:猿妹
程序猿自媒體原創翻譯
英文原文:https://blog.aritraroy.in/what-my-2-years-of-android-development-have-taught-me-the-hard-way-52b495ba5c51
我還記得2014年的那一天,當時我決定開始Android開發這是我人生中最明智的決定之一。距離現在已經有兩年半的時間了,我在Android開發中學習了很多東西。最初開始的時候,我沒有一個導師,也沒有人指導我學習Android開發。在這過程中犯了很多錯誤,導致花費了很多時間去糾正這些錯誤。
一年半以後,我有幸和一些真正有才華、經驗豐富的Android開發人員合作,他們指導我,幫助我以更好的方式來做事情。這兩個階段雖然很艱難,但都讓我學到了很多東西。學會了什麼該做,最重要的是什麼不該做。
在這篇文章中,我將分享我在這幾年收集的一些寶貴經驗。或許可以幫助你更快速的學習安卓開發,少走之前我走過的那些彎路:
1、不要重複造輪子
最初,我不太喜歡使用開源庫。無論我需要什麼,只想著自己做。現在想來這真是個愚蠢的做法。
當你在開發過程中遇到了問題,如果這個問題已經被其他人解決了,那麼為什麼不使用它呢?這樣你可以為自己節省很多時間。
更多地關注應用程序的核心業務邏輯。如果你想在你的應用程序中進行網路調用,你不需要自己寫,可以使用開源庫。
2、明智地選擇開源庫
Github有很多開源庫可免費使用,但也別盲目使用。
檢查開源庫的星號數,越多越好。查看該開源庫的作者是否也創建了其他受歡迎的開源庫。檢查Bug問題(打開和關閉)的解決,這可以讓你更好地了解該庫的穩定性和健壯性。
如果你有足夠時間,你應該深入了解該開源庫的代碼,並檢查是否真正適用自己的項目。
這樣做只是為了確保你將要使用的代碼是可靠的、無bug和高質量的。
建議:嘗試使用Dryrun從命令行直接使用任何庫。
3、讀更多的代碼
我們的大部分時間都是在閱讀別人的代碼而不是寫自己的代碼。如果你沒這樣做,那就從今天開始吧。
你今天能寫的任何代碼都只是因為你在某個地方閱讀並學習了某項技能,這是你已經獲取該項技能的反映,所以你只有通過閱讀和學習他人的代碼來提高自己。
Android的一大優點是它是一個完全開源的平台,深入了解代碼並學習它們是如何實現框架的,Github有成千上萬的開源庫,選擇一個庫,看看開發人員是如何實現它的。這對你將有很大幫助。
4、保持適當的編碼標準
如果將編碼與寫作進行比較,那麼編碼標準就像你的筆跡。
正如你會閱讀其他人的代碼一樣,別人也會閱讀你寫的代碼,如果你在一個公司工作,需要和其他開發者有合作,請特別注意你的這點。
編寫簡短、清晰和可讀的代碼,讓你和閱讀你的代碼的人能夠徹底享受。你的代碼應該像故事一樣閱讀。
5、請使用ProGuard!
ProGuard不僅可以減少你的代碼,還會使你的代碼模糊,從而加大反編譯的難度,不好複製你的代碼。而且它完全免費,並附帶了Android SDK,沒有理由不使用它。
我看到一些開發人員在沒有ProGuard的情況下在市場上發布他們的應用程序,這樣破解這樣的App 對於一個不太熟練的黑客也只需花幾個小時
6、使用合適的項目架構
首先,你會慶幸自己選擇了合適的架構。
你可以使用MVP(model - view - presenter)體系架構,它可以將代碼解耦到不同的易於管理的層,從而提高代碼的靈活性,大大減少維護時間。這裡有一個很好的演示項目讓你學習。如果你覺得很難學,這裡是初學者的詳細指南。
7、用戶界面設計UI考慮
如果你只是純Android開發人員的角色,那麼你不需要太擔心這一點,因為有UI / UX設計師來做這個。
但是,如果你是獨立開發人員,則需要考慮UI。我看到過很多開發人員開發了許多非常好的應用程序,具有很好的功能,但是UI看起來很醜,而UI使開發人員很苦惱。
設計一個乾淨、簡單、美觀的界面,這樣容易吸引眼球。你不應該像開發人員那樣思考,而是應該專註於點燃你內心隱藏的設計者。
試著設計一個漂亮的UI來給你的用戶留下持久的印象,這樣他們就會比其他人更頻繁地回到你的應用程序,並且產生更多的轉換(也許是買你的高級版本)。
你應該從你的設計中刪除元素,做減法,而不是添加元素,保持簡潔和最小狀態。
8、分析是你最好的朋友
如果你想開發一個熱門的應用程序,你需要大量依賴分析工具來分析應用程序不同部分的性能和使用情況。通過崩潰報告和應用程序使用情況來進行分析跟蹤。
無論你做什麼,你永遠可能不會做的完美。當用戶開始使用你的應用程序,你可以使用分析工具進行跟蹤用戶使用情況。
崩潰報告工具可以幫助你跟蹤和修復它們。
你也需要像營銷人員一樣思考,分析應用的不同模塊的使用情況,這將幫助你減小你所做的app和用戶需求之間的差距。
建議:使用Firebase崩潰報告和分析工具(https://firebase.google.com/)
9、成為營銷者
如果你是一個獨立的開發人員,你必須超越「僅僅是一個開發者」的想法,並且還要理解營銷。我看到一些好的產品由於缺乏適當的市場營銷而失敗,而那些不那麼好的產品因為市場營銷而大獲成功。
如果你想要吸引大量用戶,則需要投入時間和金錢來營銷推廣你的應用。但在開始你的營銷活動之前,請確保應用程序絕對穩定,所有功能已經完善。你肯定希望花費的每一分錢都能得到最大的推廣效果,不是嗎?
建議: 推薦一個經濟實惠的市場分析工具,我很喜歡使用。(https://sensortower.com/)
10、優化你的APP
這是我們大多數人通常不會去做的事,但這確實需要做。
編寫代碼和編寫高性能代碼有很大的區別,你應該編寫能夠快速運行,佔用更少的內存並減少設備存儲空間的代碼 。
一個未優化的APP在正常情況下運行良好,但是當處於不同的壓力情況時,就可以顯示出它的真實面目。
檢查應用程序使用的內存數量,並查找內存泄漏。記住,一個微小的泄漏就可以讓你的應用崩潰。花時間了解垃圾收集器如何在Java中工作,創建堆轉儲並分析活動對象。
建議: 使用leakcanary檢測你的內存泄漏。可以節省大量時間
(https://github.com/square/leakcanary)
11、使用 Gradle 每周至少節省5小時
你很有可能正在使用Android Studio開發Android應用程序,並使用Gradle作為構建。Gradle是很好,但是很慢,當你的項目開始不斷變大,它比蝸牛還慢。
記得無數個小時,被我浪費了,只是坐著等Gradle構建完成。每個工作日,我都要容易浪費大約一個小時,只要使用Gradle來構建,每周就要浪費5個小時。 但是,也有辦法加快速度。
可以按照這個和這個帖子來提高構建速度,優化後構建時間從4分鐘下降到不到30秒。(https://zeroturnaround.com/rebellabs/making-gradle-builds-faster/)
12、測試,測試,再測試!
沒有什麼比測試更重要。這應該放在你的工作首位。
儘可能徹底地測試你的應用程序,花時間編寫自動測試用例,為應用創建各種壓力情況,看APP是否能夠撐住。
我曾經犯過一個錯誤,就是匆忙地發布我的應用程序,並沒有花時間充分地測試,最後用戶使用過程中發現bug並報告,然後我再去修復它們。
永遠不要小看測試,沒有測試可能能夠替你節省一兩天甚至一周時間,但是過後你可能需要花雙倍的時間來解決因為沒有測試導致的一系列問題。
GIF/2K
13、Android碎片化問題
碎片是Android中最大的問題之一,Google似乎不願意修復它,你必須接受。
有各種各樣的Android設備,具有不同的屏幕尺寸和硬體規格,來自不同設備製造商,他們將操作系統定製到自己的設備。除此之外,Google添加/刪除API功能的各種Android版本無法進一步增加工作量(這裡是一個例子)。
例如,沒有一個Android開發人員在沒有使用SharedPreferences API的情況下完成了一個應用程序。這是很常見的,但它在三星Galaxy S與Android 2.2(錯誤報告在這裡)被打破了。
花更多時間為不同的屏幕尺寸創建不同的布局。在不同的設備,具有不同的版本,不同的規格和不同的OEM上測試。
14、請開始使用Git!
如果您還沒有使用Git,那就現在開始使用吧。
當我開始Android開發時,我不知道Git是什麼軟體。我曾經每天複製我的整個項目,並在我的硬碟驅動器和在雲盤各保留一個備份。做法好像很愚蠢?確實是這樣。
Git可以顯著提高開發效率。如果有人要求我說一個我每天使用的工具,我會說Git、Git、Git。
也許在使用它幾天後,你會愛上它,並想知道Git的工作原理, 一段時間後,你將自己開始一個大型項目,並對如何維護正確的分支模型感到困惑,那麼你可以去這裡了解。(http://nvie.com/posts/a-successful-git-branching-model/)
15、使黑客很難破解
Android的開源性質使其易受攻擊。每個Android應用程序都可以反編譯,反向設計,輕鬆打開。
你不想讓你的APP發生這樣的事情吧?
你應該知道如何在你的應用程序中安全地存儲API密鑰,如果你正在處理用戶敏感數據,那麼必須知道如何加密,可以選擇 什麼演算法(安全而快速)。
你還應該將加密密鑰安全地存儲在伺服器或本地(如果需要)中。應該使用ADB(Android Debug Bridge)來防止應用數據備份。如果將敏感數據存儲在資料庫中,請考慮對其進行混淆。
當你的應用程序有一個高級版本,被破解並且免費發布後,這樣損失可就,可以做幾件事來防止應用被篡改。其實沒有什麼100%的安全。任何熟練的有決心的黑客,當擁有豐富的資源、工具和耐心都可以破解你的應用程序。
建議:你可以閱讀這個,可能成為保護你APP好的開始(https://www.airpair.com/android/posts/adding-tampering-detection-to-your-android-app)
16、在低端設備開發
每個人都喜歡使用高端的Android智能手機,我也一樣。但請記住,僅供個人使用,不要用在開發上。
高端設備在開發應用程序時會隱藏很多漏洞。假設你在UI線程中做了一些事情,導致出現卡頓問題,但是在一個強大的設備上,你可能永遠不會注意到這個問題。
一個老式的低端設備,被大量的應用程序拋棄,這也使它成為開發設備的最佳選擇。
17、投資學習學習這是一輩子的投資
在開發大而複雜的應用程序時,你將面臨一些常常遇到的問題,這些問題可能其他人已經解決,你需要學習他們的解決方式。
從現在開始花一些時間來學習Java設計模式。這是一個Github項目
(https://github.com/iluwatar/java-design-patterns)演示了所有已知的設計模式。
接著學習最重要的一些單例,如適配器,工廠方法,迭代器,依賴注入,事件驅動架構,構建器,回調,策略,門面和生產者消費者。好像看起來十分繁多?其實不是, 一旦你深入,你就會開始愛上他們。
18、不要吝惜回饋
我們都曾經從網路或者身邊人那裡獲得過幫助,無論何時遇到問題,我們做的第一件事就是是Google,並從StackOverflow中找到第一個鏈接。有時候你很匆忙,你最終複製並粘貼了最高選票的答案。
就連Github上,大大減少你開發時間和工作量的免費開源庫,也都是因為有人創建了它,並貢獻在GitHub。
你給的越多,你得到的回報越多。 我已經分享了在Android開發這個短暫的旅程中學到的一些東西。我也會繼續下去,學習更多,分享更多。我希望它能幫助到一些人。
本文編號210,以後想閱讀這篇文章直接輸入210即可。
輸入m獲取文章目錄
推薦
Java編程
更多推薦《18個技術類微信公眾號》
涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。


TAG:安卓開發 |
※神經官能症經驗總結,總有一條讓你開悟
※護膚達人總結的護膚經驗,別說我沒告訴你
※花園草坪的布局和養護經驗大總結,不看會後悔
※開服裝店的經驗技巧,老闆親身講歷他的經驗(一)
※一個好的櫥櫃,都是這樣安裝,老師傅總結的經驗
※開服裝店的經驗技巧,老闆親身講歷他的經驗(三)
※媒體人親身經驗告訴你:讓人百般揣測的禪修,究竟是怎樣的體驗?
※開服裝店的經驗技巧,老闆親身講歷他的經驗(二)
※乾貨分享:房子裝修經驗總結,都是過來人總結的心得體會啊
※網友們總結出的家庭裝修經驗,切身體驗告訴我們這些坑不能踩!
※黃疸高怎麼辦?寶媽的經驗告訴你,別太聽婆婆的
※郭蔚聰:自招經驗總結和心態調試
※做股票的經驗總結
※飼養柯基犬經驗總結,看完都說難養!
※用人類的邏輯和經驗否定人類邏輯和經驗在認識世界本質過程中的作用
※陌拜老手總結的三個經驗技巧——讓你輕鬆開拓新客源
※美軍只檢討失誤不總結經驗?一場檢討會開成了慶功會
※用古人經驗告訴你正確的養生。難道真的是現在的中醫不行了嗎?
※被商家坑慘的血淚教訓,總結出來的瓷磚辨別經驗,老師傅都佩服
※老人告訴你的「哺乳經驗」靠譜嗎?媽媽別全信,對胎兒發育沒好處