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