你永遠都會慶幸自己從一開始就選擇了一個恰當?shù)募軜嫛?/div>
你可以使用MVP(Model-View-Presenter)架構,它可以把你的代碼解耦成不同的層便于管理,從而提高代碼的靈活性并極大的減小維護的時間成本。
可以參考一個demo項目。如果覺得很難掌握,可以看看這篇針對初學者的指南。
福利:務必看看這里,這里尤其是這里。它們將為你實現(xiàn)MVP提供極大的幫助。
7.用戶界面就像笑話,如果還需要解釋那就糟糕了
如果你是在公司,做的是純安卓開發(fā),你很可能不需要關心這個問題,因為有UI/UX設計師管這個問題。
但是如果你是一個獨立開發(fā)者,你就需要考慮它了。我曾經(jīng)見過一些把app功能做的很好,但是用戶體驗很恐怖的開發(fā)者。
要設計一個干凈,簡單直觀的界面,你不要站在開發(fā)者的角度思考問題,而要挖掘自己內心中埋藏的設計師的潛力。
盡量嘗試設計一個漂亮的界面,讓你的用戶持續(xù)保持印象,這樣用戶回到你的app的次數(shù)就比別人多,從而產(chǎn)生更多的收獲(也許是購買高級版本)。
你應該樂于去減少元素,而不是增加。保持簡潔和小巧。
福利:你可以從Dribble或者MaterialUp的熱門設計師那里獲得靈感。如果你對設計感興趣,你很可能會喜歡這本書。
8.分析是你最好的朋友
如果你想創(chuàng)建一個真正令人驚嘆的app,你需要重度依賴分析工具去分析app不同部分的性能和用例。
對于分析,我借助于crash reporting和app usage tracking。
不管你怎么做,永遠無法做到完美。當真實的用戶開始在各種各樣的設備以及版本上使用你的app的時候,你會發(fā)現(xiàn)即時寫的最好的代碼也難以保證不出岔子。
一旦發(fā)生崩潰,Crash reporting工具可以幫助你跟蹤與修復它們。
你必須學會像銷售那樣思考問題并分析app不同模塊的使用。這樣可以幫助你減小產(chǎn)品和用戶實際需求之間的落差。
小貼士:使用FirebaseCrash Reporting以及Analytics tools。
9.做一個營銷專家
如果你是一個個人開發(fā)者,你必須超出作為開發(fā)者的思維,去理解市場。
我見過一些很好的產(chǎn)品因為缺乏正確的市場營銷而失敗,同時也見過并不怎么樣的產(chǎn)品因為牛逼的市場營銷而取得極大成功。
如果你對你的工作是認真的希望它能獲得可觀的用戶,你必須把在市場營銷上花費必要的時間和金錢。但是在營銷活動開始之前,確保app已經(jīng)完全穩(wěn)定,功能已經(jīng)完善。
花時間研究誰是你的競爭對手以及如何打敗他們。確定一個可以立即打敗的以及一個將來會打敗的。
小貼士:這里是一個價錢合理的市場分析工具,我比較喜歡用。
10.是時候優(yōu)化你的app了
這是一個大多數(shù)人都不會去做的事情,但是你應該做。
寫代碼與寫高性能的代碼之間有很大的區(qū)別。高性能的代碼是指運行速度快,內存和存儲消耗更少的代碼。
一個未經(jīng)優(yōu)化的的app也許在普通情況下運行良好,但是當放在各種壓力情景中,它就原形畢露了。檢查你app的內存使用情況看看有沒有內存泄漏存在。記住小漏不補沉大船。花時間弄懂Java的內存回收機制是怎么回事,創(chuàng)建并分析你的活對象。
小貼士:可以使用Leak Canary檢測你的內存泄漏。它可以節(jié)省你不少時間。
11.每周在Gradle編譯上最少節(jié)省5小時
你極有可能正在使用Android Studio開發(fā)app,編譯系統(tǒng)使用的是Gradle。Gradle很棒但是也很慢,當項目顯著增大的時候慢得根蝸牛樣。
有時候工作忙的時候我還需要在Gradle編譯上浪費差不多一個小時。
但是,總有加速的辦法。
你可以照著這篇以及這篇文章的做法顯著提高編譯速度。經(jīng)過優(yōu)化之后我的編譯時間從4分鐘降到了30秒鐘。
12.測試,測試,再測試!
沒有什么比測試更重要的了。它應該是你的首要任務。
盡可能全面的測試你的app;〞r間寫自動化測試用例,創(chuàng)造各種極端的條件,看看你的app是否能經(jīng)受住考驗。
我曾經(jīng)犯過未經(jīng)充分測試就發(fā)布app的錯誤。等用戶報告bug然后修復。
不要那樣做。你可能通過砍掉測試時間而節(jié)省了一兩天或者一周,但是以后你很可能會花雙倍的時間。
做任何事都要不慌不忙,從容應對并長遠打算。做一個有遠見的人。此時播種,以后總會有收獲。
13.安卓的碎片化是魔鬼
碎片化可能是安卓最大的問題了。而谷歌似乎并不愿意修復它,你必須適應。
安卓設備種類繁多,不同屏幕尺寸,不同硬件配置以及各個廠商的自定義系統(tǒng)。
除此之外,谷歌在不同版本上還莫名其妙的添加或者刪除API,進一步加重了你的工作量(這里是一個例子)。
比如,幾乎每個開發(fā)者都需要使用SharedPreferences API來完成一個app,它是如此常見,但是在Android 2.2版本的Samsung Galaxy S上還是出問題了(bug報告這里)。
花更多的時間為不同屏幕尺寸的設備創(chuàng)建不同的布局。在不同版本,不同定制,不同OEM廠商的設備上測試。
永遠別覺得某個東西看似可行就不去測試了。
14.從今天開始使用git!
如果你還沒有使用Git,從現(xiàn)在開始吧。
當我開始安卓開發(fā)的時候,悲劇的我并不知道git是什么東西。我每天都拷貝整個項目,一個備份在硬盤上,一個備份在云盤上。看起來很傻是嗎?是的,的確很傻。
Git可以極大的提高你的工作效率。如果叫我說出一個我每天都要使用并且離不開的工具的名字,那就是Git了。
在你使用幾天之后,你很可能會愛上它,并好奇Git的內部工作原理。建議你看看這個。
過了一段時間之后,你可能開始了一個大項目,對于如何維護一個分支模型感到困惑,那么可以看看這個。
福利:如果你剛剛開始,還付不起GitHub的私人倉庫的月費,你可以試試BitBucket。國內用戶的選擇更多,oschina的git服務也不錯-譯者注。
15.為黑客制造麻煩
安卓的開源特性讓其易受攻擊。每個安卓app都可以輕易的被反編譯,逆向分析。
你不希望你的app發(fā)生這種事對吧?
你需要知道如何安全的存儲app中的API keys。如果你要處理用戶的敏感數(shù)據(jù),你必須知道如何加密,選擇何種加密算法(安全且快速)。
你還應該安全的把密鑰存儲在本地或者服務器上。應該防止app數(shù)據(jù)被人用ADB備份。如果你在數(shù)據(jù)庫中存儲敏感數(shù)據(jù),要考慮做適當?shù)膫窝b。
如果你的app有高級版本,被別人破解免費發(fā)布就損失大了。
有幾種方法可以避免你的app被人篡改。但并不是100&安全。任何一個技術扎實,決心堅決的黑客只要有正確的資源,工具和耐心都可以破解你的app。
你能做的就是盡量讓黑客的破解變得困難,及其困難。
福利:可以從閱讀這個和這個開始。
16.在低端手機上開發(fā)
每個人都喜歡使用一個高端安卓手機,我也是。但是記得只作為個人使用,而不是開發(fā)的目的。
高端機會隱藏app的許多缺陷。假設你在UI線程上做了導致卡頓的事情,但是因為手機過于強大,可能導致你無法察覺。
17.學習設計模式
這是一項終生受益的投資。
在開發(fā)大型app的時候,你會遇到一些已經(jīng)被比你牛逼的人所解決了的問題。
從今天開始就花點時間去學習設計模式。Here是一個演示了所有已知設計模式的的Github項目。
可以從最常見的開始,比如單例,適配器模式,工廠方法模式,迭代模式,依賴注入模式,事件驅動架構,建造者模式,回調,策略模式,外觀模式以及生產(chǎn)消費者模式。
看起來很多是吧?實際上并不多。一旦深入你就會愛上它們的。
小貼士:閱讀一些書籍,比如GoF的Design Patterns,Martin Fowler的重構以及Joshua Bloch的Effective Java。
18.回饋
你得承認,我們都曾從別人和互聯(lián)網(wǎng)那得到許多幫助。
每當你遇到問題的時候,你會做的第一件事就是谷歌,發(fā)現(xiàn)第一條來自StackOverflow的鏈接。有時候你很忙,結果直接拷貝粘貼得分 的答案。
你有沒有想過Github上那些開源庫其實也是別人花時間創(chuàng)建然后貢獻給社區(qū)的。
當你被一個難以理解的概念卡住或者遇到一個新的東西時,你發(fā)現(xiàn)一篇讓你豁然開朗的博客,這個時候記住是某人犧牲了約炮時間而寫了這篇文章。
所以也該你回饋了。給予的越多,得到的也就越多。
投稿郵箱:chuanbeiol@163.com 詳情請訪問川北在線:http://m.fishbao.com.cn/