當前位置:首頁 > 新聞 > 如何快速地開(kāi)發(fā)一款Android App?
如何快速地開(kāi)發(fā)一款Android App?
前言
從開(kāi)發(fā)的角度來介紹如何開(kāi)發(fā)一個Android App,需要說(shuō)明一點是,這(zhè)裡(lǐ)隻是提供一個如何開(kāi)發(fā)一個app的思路,并不會(huì)介紹很多技術上的細節,從整個大局去把握如何去構思一個app的開(kāi)發(fā),讓你對(duì)獨立開(kāi)發(fā)一款app的時(shí)候有個理解,如果有說(shuō)的不對(duì)的地方,歡迎大家拍磚留言讨論。
開(kāi)發(fā)環境
Android應用層使用的開(kāi)發(fā)語言是Java,自然需要用到Java運行環境,無論你在Window是系統還(hái)是Mac系統都(dōu)需要安裝JDK,并且配置它的環境變量,不懂什麼(me)叫(jiào)環境變量的或者不知道(dào)怎麼(me)配的,請利用好(hǎo)自己的百度技能(néng)自行學(xué)習。
開(kāi)發(fā)工具
開(kāi)發(fā)工具,Android因爲曆史原因,前面(miàn)很長(cháng)一段時(shí)間使用的是Eclipse,我們要開(kāi)發(fā)Android應用的時(shí)候需要另外安裝Google爲它開(kāi)發(fā)的插件ADT,Eclipse這(zhè)個開(kāi)源軟件很優秀,也很專業,但僅僅隻是使用它來開(kāi)發(fā)Android就(jiù)顯得有點雞肋了,如果沒(méi)有對(duì)Eclipse進(jìn)行優化的話,會(huì)很卡很卡,後(hòu)面(miàn)Google實在不願意寄人籬下,就(jiù)專門爲我們開(kāi)發(fā)者開(kāi)發(fā)了目前很受廣大開(kāi)發(fā)者推崇的Android Studio,現在2.0預覽版也出來啦,大夥趕緊去下吧。
模拟器
Android自帶的模拟器一直廣受诟病,實在是太卡太慢了,對(duì)比人家IOS模拟器是那麼(me)的流暢,Android開(kāi)發(fā)者直喊好(hǎo)苦逼啊,不過(guò)還(hái)好(hǎo)後(hòu)面(miàn)出了第三方比原生流暢n倍的模拟器Genymotion,大家可以去下一個個人版的夠你平時(shí)開(kāi)發(fā)測試用了。最好(hǎo)的辦法還(hái)是使用真機測試,畢竟真機才是真實的環境。
Android核心基礎
前面(miàn)是準備工作,想開(kāi)發(fā)一款Android app,你最起(qǐ)碼要掌握Android的核心基礎知識,針對(duì)初學(xué)Android的童鞋,想一口吃掉一個胖子是不可能(néng)的,還(hái)是得把基礎打牢之後(hòu)才能(néng)完成(chéng)獨立的開(kāi)發(fā),Android入門不難,學(xué)完基礎你隻是具備開(kāi)發(fā)app的基本條件,想做一個優秀的app還(hái)有很長(cháng)一段路要走,經(jīng)驗是靠不斷實踐堆出來的,找一套系統的課程去認真學(xué)習一下,在線教育的資源很多,比如慕課網,極客學(xué)院都(dōu)有很多不錯的學(xué)習資源,童鞋自己擇優來學(xué)習即可。
産品開(kāi)發(fā)流程
正常的互聯網開(kāi)發(fā)app的流程大緻如下:
- 産品規劃,定産品方向(xiàng)
- 需求調研,産出需求文檔
- 需求評審,修訂需求文檔
- 産品狗畫app線框圖提供給射雞師
- 射雞師根據線框圖設計視覺稿
- 程序猿根據視覺稿搭建UI框架
- 程序猿根據需求文檔開(kāi)發(fā)功能(néng)
- 測試媛編寫測試用例,根據排期進(jìn)行測試
- 程序猿修複回歸測試反饋的bug,提交beta版
- 測試通過(guò),提交給運營喵發(fā)布到渠道(dào)上線
上面(miàn)是筆者的經(jīng)驗總結,可能(néng)有不太準确的地方,但大緻整個流程是這(zhè)樣,我們開(kāi)發(fā)者要清楚自己在整個産品中充當的角色,明白自己的工作職責即可。
快速搭建項目
Android比沒(méi)有想象那麼(me)難,隻是剛開(kāi)始要學(xué)習的東西多,一下子消化不了才會(huì)比較茫然,筆者寫這(zhè)篇博客就(jiù)是想幫助大家整理一下開(kāi)發(fā)思路。
快速搭建項目也算是一項技能(néng),而這(zhè)項技能(néng)隻能(néng)由你自己來完善,剛開(kāi)始做開(kāi)發(fā)的時(shí)候一定會(huì)有很多重複性的工作,如果沒(méi)有意識去提高自己的開(kāi)發(fā)效率的話,可能(néng)你的十年工作經(jīng)驗代表的隻是一年的經(jīng)驗用了十年而已。
那要怎麼(me)做,筆者提供一個自己總結的,僅供參考:
- 定開(kāi)發(fā)規範
- 搭建UI框架
- 選用開(kāi)發(fā)庫集成(chéng)(或自造輪子)
- 第三方服務集成(chéng)(視情況而定)
定開(kāi)發(fā)規範
一個項目一般不會(huì)隻有一個人獨立開(kāi)發(fā),就(jiù)算是獨立開(kāi)發(fā),我們也應該定一下開(kāi)發(fā)規範,一般會(huì)有什麼(me)樣的規範?
- 命名規範
- 代碼規範
- 代碼管理規範
命名規範
命名規範包括:
- 項目命名
- 包命名
- 類命名、成(chéng)員變量命名
- 資源文件命名
我們做每一個産品都(dōu)會(huì)有相應的命名,不要用中文來命名,最好(hǎo)用能(néng)表達中文意思的英文來表示,例如CSDN客戶端,可以用CSDNClient作爲命名,我們創建項目的時(shí)候可以以它作爲Application name。
代碼規範視語言而定,開(kāi)發(fā)android使用的是Java,自然要按照Java的編碼規範進(jìn)行編碼,比如命名采用駝峰命名法,編碼的時(shí)候也要符合Android的開(kāi)發(fā)規範,比如UI線程不做任何耗時(shí)的操作,像網絡請求、數據庫操作都(dōu)需要放到子線程中去做,隻有UI的刷新才在UI線程中做,像這(zhè)些規範,可以根據自身在項目遇到的問題來定,定規範的好(hǎo)處就(jiù)是減少踩坑的幾率,提高開(kāi)發(fā)的質量。
對(duì)于一個經(jīng)常更新叠代的産品,不可能(néng)由頭到尾不變,這(zhè)個時(shí)候我們需要對(duì)代碼進(jìn)行分支管理,最好(hǎo)使用git代碼倉庫對(duì)代碼進(jìn)行管理,作爲一個合格的開(kāi)發(fā)者連git都(dōu)不用實在說(shuō)不過(guò)去,還(hái)用svn的童鞋趕緊放棄它投入git的懷抱,它的好(hǎo)處是不言而喻的,自己去體會(huì)。
搭建UI框架需要我們根據産品的導航模式來設計,市場上常用的導航模式有如下圖幾種(zhǒng):
我們的app如果不出意外一定是其中的一種(zhǒng)導航模式,一般線框圖出來我們就(jiù)應該知道(dào)即將(jiāng)要開(kāi)發(fā)的app長(cháng)什麼(me)樣子,開(kāi)發(fā)者不必等視覺稿和素材出來才開(kāi)始動工,我們先大緻搭個架子,等視覺稿出來之後(hòu)我們再做調整。
選用開(kāi)發(fā)庫
一般我們app涉及到的庫會(huì)有:
- UI框架(比如下拉刷新PullToRefresh、側滑菜單Slidingmenu)
- 網絡請求庫(比如okhtttp、AndroidAsyncHttp、Volley)
- 數據操作庫(比如GreenDao、Ormlite)
- 圖片緩存框架(比如Universal-Imageloader)
- 數據解析庫(比如Gson)
之所以要選用這(zhè)些庫,肯定是爲了避免重複造輪子,在開(kāi)發(fā)效率的角度來說(shuō),選用優秀的開(kāi)源庫能(néng)大大縮短開(kāi)發(fā)周期和提高開(kāi)發(fā)效率,但從個人提升角度來看的話,我們可能(néng)就(jiù)成(chéng)了一個隻會(huì)用API的程序猿了,如果想提升的話,造輪子或者分析這(zhè)些優秀的源代碼是一個不錯的途徑。
第三方服務集成(chéng)
我們開(kāi)發(fā)app的時(shí)候,肯定會(huì)遇到一些需求,比如推送的需求、自動升級、數據統計、社會(huì)化分享、用戶反饋等等,然而對(duì)于一個剛起(qǐ)步的企業或者個人開(kāi)發(fā)者的話,全都(dōu)要自己去開(kāi)發(fā)的話,那豈不是累死,像推送這(zhè)種(zhǒng)有一定的技術門檻,能(néng)做好(hǎo)都(dōu)能(néng)成(chéng)立一家公司了,所以選用一些第三方服務是一個可選之舉。如果說(shuō)你以後(hòu)做大了,用第三方怕不好(hǎo)控制,那就(jiù)自己做呗,有錢任性招兵買馬就(jiù)自己做,誰叫(jiào)咱有錢呢。
前面(miàn)這(zhè)些東西開(kāi)發(fā)一個app夠了,開(kāi)發(fā)出來能(néng)不能(néng)用還(hái)得有靠譜的測試,有沒(méi)有crash,操作流不流暢,體驗好(hǎo)不好(hǎo)才會(huì)有用戶去用。這(zhè)裡(lǐ)不從産品的角度去評判一個app的好(hǎo)與壞,程序員要考慮的是從代碼層面(miàn)、性能(néng)層面(miàn)去讓我們的app變得更好(hǎo)。
雲測
我們開(kāi)發(fā)完畢之後(hòu),需要給測試工程師進(jìn)行基本的功能(néng)需求測試,他們傳統的做法就(jiù)是根據事(shì)先寫好(hǎo)的測試用例來做回歸測試,再把測試出來的bug反饋給工程師,工程師再去修bug,但這(zhè)樣實在是太不靠譜了,有時(shí)候我們太在意功能(néng)而忽略了一些更重要的東西,那就(jiù)是體驗,給用戶最直接的感受就(jiù)是你這(zhè)個app夠不夠驚豔,夠不夠流暢,用戶可能(néng)根本就(jiù)不在乎你這(zhè)個功能(néng)做的有多牛逼。所以我們更應該從非功能(néng)性方向(xiàng)去做測試,我們的目的是讓用戶用的爽,而不是加一些亂七八糟的功能(néng)。那怎麼(me)測非功能(néng)性的一些因素,這(zhè)裡(lǐ)就(jiù)要提到『雲測』這(zhè)個東西,因爲現在設備太多了,如果公司要買一堆設備來做測試,那得多少成(chéng)本,況且設備更新得太快,你根本就(jiù)跟不上,所以就(jiù)有了雲測這(zhè)個東西,它是一個雲測試平台服務,提供了一大批主流機型,我們就(jiù)直接省去購買設備的成(chéng)本,還(hái)能(néng)得到完善的測試報告。
再來說(shuō)一下它的好(hǎo)處:
- 終端雲,省去測試設備購買租賃成(chéng)本
- 高效率 節省測試人員成(chéng)本及時(shí)間
- 包含兼容性測試、性能(néng)測試、功能(néng)測試
- 操作簡單、詳細測試報告生成(chéng)
這(zhè)麼(me)多好(hǎo)處,你在缺少測試工程師的時(shí)候,不去嘗試那實在說(shuō)不過(guò)去。
打包上線
前面(miàn)的開(kāi)發(fā)環節、測試環節都(dōu)沒(méi)問題之後(hòu),你離實現一個app的完整開(kāi)發(fā)就(jiù)不遠了,正常的互聯網公司,會(huì)把簽名打包的apk給到運營,交給他們去寫文案,上傳到應用渠道(dào),讓渠道(dào)給我們去首發(fā)和推廣。如果是個人開(kāi)發(fā)者,這(zhè)些工作就(jiù)得我們自己做了。
總結
從整個app開(kāi)發(fā)流程上去給大家梳理了一遍,沒(méi)有講太多技術上的東西,但理解app流程對(duì)自己把握産品很有益處,雖然我們隻是一個小小的開(kāi)發(fā)者,但如果你有追求,哪天輪到你去負責一個産品的時(shí)候,你就(jiù)應該對(duì)開(kāi)發(fā)的每一個環節都(dōu)了如指掌,因爲出了問題,你也知道(dào)怎麼(me)針對(duì)性的去解決。筆者雖然隻是一個小小的開(kāi)發(fā)者,但也樂于思考,很多時(shí)候不太願意被别人牽著(zhe)鼻子走,因爲我們的人生就(jiù)應該把握在自己手裡(lǐ)。