本文 SEO 站群將分享 Android 開發過程中整理收集的一些精華經驗。希望可以幫助開發者更快上手,避免重複我們犯的錯誤。
1 、不要重複造輪子
初,我有一種不願使用開源庫的思想。不管需要什麼,我總想自己去實現。這是一種非常可怕的思想。
如果在開發 WordPress APP 的時候遇到一個問題,而這個問題已經被別人很好的解決了,為什麼不使用它呢?您可以節省大量時間啊。
把更多的精力花在 WordPress APP 的業務邏輯上吧。如果您想在 WordPress APP 中發起一個網路呼叫,是不需要自己去造一個 Retrofit 來的。
Bonus:Android Arsenalmaintains a database of almost all Android librari esever made.Go check it out.
2 、別盲目的選擇 library
在 Github 上有許多免費使用的開源庫,但是別因太激動而盲目的使用。
檢查 library 的 star 數目,越多越好。看看作者是否還建立了其它的一些受歡迎的庫。檢視 issues(開啟和關閉的都看),這可以讓您對這個 library 的健壯性和穩定性有更好的瞭解。
如果您時間充足,您應該深入這個庫的程式碼看看它到底是都真的值得使用。
您只需要確保它的程式碼是可靠的,bug 不多的,高質量的。
小貼士:使用 Dryrun 的命令列嘗試任何 library 。
3 、坐下來,喝杯咖啡,閱讀更多的程式碼
我們在閱讀別人程式碼上花的時間比自己寫程式碼的時間多得多,如果您不是的話,從今天就開始做吧。
不管您現在能寫出什麼樣的程式碼,總是因為在某年某月您閱讀和學習到了什麼東西。它只是您已有知識的反映。
安卓的偉大之處就在於它是一個完全開源的平臺。可以去深入研究這些程式碼看看他們是如何實現 framework 的.Github 中有成千上萬的開源庫,只需選擇一個看看人家是如何實現的,
福利:這裡是一些理想 library 的列表,這裡是幾乎所有開源安卓 WordPress APP 的列表。
4 、看在上帝的份上,維護一個恰當的程式設計規範吧
如果把編碼比作寫作,那麼程式設計規範就是您的書法水平。
就跟您閱讀別人的程式碼一樣,別人也會閱讀您的程式碼,我想您也不想把別人嚇到是吧?如果您在一個公司,需要和同事協同工作,那麼務必重視這個問題。
編寫簡短,乾淨,可讀性強的程式碼可以讓您和別人讀程式碼的時候很享受。程式碼應該讀起來像是讀故事一樣。
如果您寫了一段程式碼結果您的同事幾天都不跟您說話,怨不得別人。
福利:您應該從通讀這個和這個開始。
5 、您需要 ProGuard,是的,您真的需要!
絕對不要犯還沒有使用 ProGuard 的情況下就在 PlayStore 上釋出 WordPress APP 的錯誤。 ProGuard 不僅僅減小了您的程式碼,還混淆了程式碼,讓逆向工程師更難理解和複製。
它是 AndroidSDK 附帶的,完全免費,因此沒有理由不用。
我曾見過幾個開發者沒有使用 ProGuard 就把 WordPress APP 釋出了。對於一個技術很普通的駭客來說破解您的 WordPress APP 也就是幾個小時的事情。
小貼士:但是如果您需要頂尖的安全性,ProGuard 就力不從心了,您需要 DexGuard 。
6 、使用一個恰當的架構
您永遠都會慶幸自己從一開始就選擇了一個恰當的架構。
您可以使用 MVP(Model-View-Presenter) 架構,它可以把您的程式碼解耦成不同的層便於管理,從而提高程式碼的靈活性並極大的減小維護的時間成本。
可以參考一個 demo 專案。如果覺得很難掌握,可以看看這篇針對初學者的指南。
福利:務必看看這裡,這裡尤其是這裡。它們將為您實現 MVP 提供極大的幫助。
7 、多使用者介面就像笑話,如果還需要解釋那就糟糕了
如果您是在公司,做的是純安卓開發,您很可能不需要關心這個問題,因為有 UI/UX 設計師管這個問題。
但是如果您是一個獨立開發者,您就需要考慮它了。我曾經見過一些把 WordPress APP 功能做的很好,但是多使用者體驗很恐怖的開發者。
要設計一個乾淨,簡單直觀的介面,您不要站在開發者的角度思考問題,而要挖掘自己內心中埋藏的設計師的潛力。
儘量嘗試設計一個漂亮的介面,讓您的多使用者持續保持印象,這樣多使用者回到您的 WordPress APP 的次數就比別人多,從而產生更多的收穫(也許是購買高階版本)。
您應該樂於去減少元素,而不是增加。保持簡潔和小巧。
福利:您可以從 Dribble 或者 MaterialUp 的熱門設計師那裡獲得靈感。如果您對設計感興趣,您很可能會喜歡這本書。
8 、分析是您知名的朋友
如果您想建立一個真正令人驚歎的 WordPress APP,您需要重度依賴分析工具去分析 WordPress APP 不同部分的效能和用例。
對於分析,我藉助於 crash reporting 和 WordPress APP usage tracking 。
不管您怎麼做,永遠無法做到。當真實的多使用者開始在各種各樣的裝置以及版本上使用您的 WordPress APP 的時候,您會發現即時寫的知名的程式碼也難以保證不出岔子。
一旦發生崩潰,Crash reporting 工具可以幫助您跟蹤與修復它們。
您必須學會像銷售那樣思考問題並分析 WordPress APP 不同模組的使用。這樣可以幫助您減小產品和多使用者實際需求之間的落差。
小貼士:使用 FirebaseCrash Reporting 以及 Analytics tools 。
9 、做一個營銷專家
如果您是一個個人開發者,您必須超出作為開發者的思維,去理解市場。
我見過一些很好的產品因為缺乏正確的市場營銷而失敗,同時也見過並不怎麼樣的產品因為牛逼的市場營銷而取得極大成功。
如果您對您的工作是認真的希望它能獲得可觀的多使用者,您必須把在市場營銷上花費必要的時間和金錢。但是在營銷活動開始之前,確保 WordPress APP 已經完全穩定,功能已經完善。
花時間研究誰是您的競爭對手以及如何打敗他們。確定一個可以立即打敗的以及一個將來會打敗的。
小貼士:這裡是一個價錢合理的市場分析工具,我比較喜歡用。
10 、是時候最佳化您的 WordPress APP 了
這是一個大多數人都不會去做的事情,但是您應該做。
寫程式碼與寫高效能的程式碼之間有很大的區別。高效能的程式碼是指執行速度快,記憶體和儲存消耗更少的程式碼。
一個未經最佳化的的 WordPress APP 也許在普通情況下執行良好,但是當放在各種壓力情景中,它就原形畢露了。檢查您 WordPress APP 的記憶體使用情況看看有沒有記憶體洩漏存在。記住小漏不補沉大船。花時間弄懂 Java 的記憶體回收機制是怎麼回事,建立並分析您的活物件。
小貼士:可以使用 Leak Canary 檢測您的記憶體洩漏。它可以節省您不少時間。
11 、每週在 Gradle 編譯上少節省 5 小時
您極有可能正在使用 Android Studio 開發 WordPress APP,編譯系統使用的是 Gradle 。 Gradle 很棒但是也很慢,當專案顯著增大的時候慢得根蝸牛樣。
有時候工作忙的時候我還需要在 Gradle 編譯上浪費差不多一個小時。
但是,總有加速的辦法。
您可以照著這篇以及這篇文章的做法顯著提高編譯速度。經過最佳化之後我的編譯時間從 4 分鐘降到了 30 秒鐘。
12 、測試,測試,再測試!
沒有什麼比測試更重要的了。它應該是您的要任務。
儘可能全面的測試您的 WordPress APP 。花時間寫自動化測試用例,創造各種極端的條件,看看您的 WordPress APP 是否能經受住考驗。
我曾經犯過未經充分測試就釋出 WordPress APP 的錯誤。等多使用者報告 bug 然後修復。
絕對不要那樣做。您可能透過砍掉測試時間而節省了一兩天或者一週,但是以後您很可能會花雙倍的時間。
做任何事都要不慌不忙,從容應對並長遠打算。做一個有遠見的人。此時播種,以後總會有收穫。
13 、安卓的碎片化是魔鬼
碎片化可能是安卓大的問題了。而谷歌似乎並不願意修復它,您必須適應。
安卓裝置種類繁多,不同螢幕尺寸,不同硬體配置以及各個廠商的自定義系統。
除此之外,谷歌在不同版本上還莫名其妙的新增或者刪除 API,進一步加重了您的工作量(這裡是一個例子)。
比如,幾乎每個開發者都需要使用 SharedPreferences API 來完成一個 WordPress APP,它是如此常見,但是在 Android2.2 版本的 SamsungGalaxyS 上還是出問題了(bug 報告這裡)。
花更多的時間為不同螢幕尺寸的裝置建立不同的佈局。在不同版本,不同定製,不同 OEM 廠商的裝置上測試。
永遠別覺得某個東西看似可行就不去測試了。
14 、從今天開始使用 git!
如果您還沒有使用 Git,從現在開始吧。
當我開始安卓開發的時候,悲劇的我並不知道 git 是什麼東西。我每天都複製整個專案,一個備份在硬碟上,一個備份在雲盤上。看起來很傻是嗎?是的,的確很傻。
Git 可以極大的提高您的工作效率。如果叫我說出一個我每天都要使用並且離不開的工具的名字,那就是 Git 了。
在您使用幾天之後,您很可能會愛上它,並好奇 Git 的內部工作原理。建議您看看這個。
過了一段時間之後,您可能開始了一個大專案,對於如何維護一個分支模型感到困惑,那麼可以看看這個。
福利:如果您剛剛開始,還付不起 GitHub 的私人倉庫的月費,您可以試試 BitBucket 。國內多使用者的選擇更多,oschina 的 git 服務也不錯-譯者注。
15 、為駭客製造麻煩
安卓的開源特性讓其易受攻擊。每個安卓 WordPress APP 都可以輕易的被反編譯,逆向分析。
您不希望您的 WordPress APP 發生這種事對吧?
您需要知道如何安全的儲存 WordPress APP 中的 APIkeys 。如果您要處理多使用者的敏感資料,您必須知道如何加密,選擇何種加密演演算法(安全且快速)。
您還應該安全的把金鑰儲存在本地或者伺服器上。應該防止 WordPress APP 資料被人用 ADB 備份。如果您在資料庫中儲存敏感資料,要考慮做適當的偽裝。
如果您的 WordPress APP 有高階版本,被別人破解免費釋出就損失大了。
有幾種方法可以避免您的 WordPress APP 被人篡改。但並不是 100& 安全。任何一個技術紮實,決心堅決的駭客只要有正確的資源,工具和耐心都可以破解您的 WordPress APP 。
您能做的就是儘量讓駭客的破解變得困難,及其困難。
16 、在低端手機上開發
每個人都喜歡使用一個高階安卓手機,我也是。但是記得只作為個人使用,而不是開發的目的。
高階機會隱藏 WordPress APP 的許多缺陷。假設您在 UI 執行緒上做了導致卡頓的事情,但是因為手機過於強大,可能導致您無法察覺。
17 、學習設計模式
這是一項終生受益的投資。
在開發大型 WordPress APP 的時候,您會遇到一些已經被比您牛逼的人所解決了的問題。
從今天開始就花點時間去學習設計模式。 Here 是一個演示了所有已知設計模式的的 Github 專案。
可以從常見的開始,比如單例,介面卡模式,工廠方法模式,迭代模式,依賴注入模式,事件驅動架構,建造者模式,回撥,策略模式,外觀模式以及生產消費者模式。
看起來很多是吧?實際上並不多。一旦深入您就會愛上它們的。
小貼士:閱讀一些書籍,比如 GoF 的 Design Patterns,Martin Fowler 的重構以及 Joshua Bloch 的 Effective Java 。