構建 Android 應用程序一定要繞過的 30 個坑
學習領域有兩類人 – 一類是那些通過艱苦努力一步一步學習的人,一類是學習別人的經驗教訓走捷徑的人。在此,我想分享一些自己的經驗給大家:
- 添加使用第三方依賴庫前,請再三思考,它絕對是一個慎重的決定;
- 如果用戶看不見有些界面, 請一定不要繪制它 !;
- 除非真的需要,否則不要使用數據庫;
- 應用程序中 65k 方法數的限制很快就能達到,我意思是真的很快! 不過 multidexing 能拯救你 ;
- RxJava 是對 AsyncTask 和其它異步任務類 最好的替代品;
- Retrofit 是目前 android 最好的處理網絡事務的依賴庫
- 使用 Retrolambda 來精簡你的代碼;
- 把 RxJava 與 Retrofit 和 Retrolambda 整合在一起來達到最佳效果!;
- EventBus 非常好用, 但是我不會使用太多因為它會讓代碼庫變得更混亂;
- 按照應用功能來封裝,而非所屬類別 ;
- 把 每一個事務 都從應用程序主線程移除;
- lint 這個工具能幫助優化你的界面和層級,所以你能識別出哪些是可能被移除的重復視圖;
- 如果你正在用 gradle ,盡你所能加速它的執行效率 ;
- 執行一個Profile report / 構建分析報告來檢查下構建的過程中時間都花費在哪里了;
- 使用一個眾所周知的代碼架構 ;
- 測試會花費很多時間,一旦你被某個問題困住,你就會明白有了測試用例會讓你提高開發效率并且增加應用程序的健壯性。 ;
- 請使用依賴注入來使你的應用程序更模塊化,因此它也更加容易被測試;
- 收聽Fragmented 播客會大大幫助你;
- 永遠不要使用你的個人email作為android應用發布市場的賬號名 ;
- 請一直使用合適的 輸入類型;
- 使用Analytics來查找可用的模式和分離 bug;
- 保持最新的依賴庫(使用dryrun 來更快的測試他們);
- 你的服務應該盡快執行所需要的任務并且及時被終止;
- 使用Account Manager來提示登錄的用戶名和 email 地址;
- 使用CI(持續集成) 來構建和分發你的測試和生產環境的 apk ;
- 請不要建立和運行你自己的CI服務器,維護這個服務器是很耗時的,因為會有磁盤空間問題,磁盤安全性問題 / 升級服務器來避免來自SSL 漏洞的攻擊,等等。可以使用circleci,travis,shippable,他們不是很貴并且只需要關注價格就行;
- 使用playstore 來自動化你的發布過程;
- 如果一個依賴庫很龐大并且你只是使用其中一小部分的功能,你應該考慮一些其他更精簡的選擇 (比如可以依賴 proguard );
- 不要使用你不需要的模塊。如果那個 模塊并不需要常常修改,考慮從零開始構建的時間是很重要的(使用 CI 構建就是一個很好的例子),或者檢查之前那個單獨構建的模塊是否是最新的,相比起來只是簡單的裝載那些二進制的.jar/.aar 依賴庫,它能帶來 4 倍的提升;
- 開始考慮用 SVG 替換 PNG ;
- 如果你只需要改變一個地方(例如, AppLogger.d(“message”) 能包含Log.d(TAG, message) 并且之后發現 Timber.d(message) 會是一個更好的解決方案),為依賴庫制作抽象的類會讓切換到新庫變得很容易;
- 監視連接狀態和連接的種類 (在 WIFI 連接狀態下,是不是有更多的數據更新?);
- 監視電源和電池 (在充電的過程中,是不是有更多的數據更新? 當電池電量低的時候,更新過程會不會被暫緩);
- 如果一個笑話是需要解釋才能明白的話,那肯定是一個失敗的笑話,用戶界面亦是如此;
- 測試能帶來性能的提升: 慢工出細活(并且保證內容的正確性),之后驗證優化,這不會影響任何測試內容。
來自:http://www.androidchina.net/6011.html
本文由用戶 Yangtzeu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!