本篇文章已授權(quán)微信公眾號(hào)code小生發(fā)布
轉(zhuǎn)載請(qǐng)注明出處:http://www.itdecent.cn/p/052d69d72c96
毫無(wú)疑問(wèn),開發(fā)一款自己的App對(duì)于初學(xué)者來(lái)說(shuō),無(wú)論從技術(shù)學(xué)習(xí),還是找工作(或者裝x),都是一大利器。那么如何才能快速上手,開發(fā)一款屬于自己的app。本篇文章僅以自己的一些經(jīng)驗(yàn)給更多的Android新手一些建議。

一、誤區(qū)
在講如何開發(fā)一款app之前,先說(shuō)下一定要避免的一些誤區(qū)。
- 借鑒與copy
- 表面與原理
- 效果與深度
(1)借鑒是為了學(xué)習(xí)
作為一名Android開發(fā)新手,在學(xué)習(xí)開發(fā)一款自己的app之前,參考一些大牛的項(xiàng)目,進(jìn)行借鑒與參考是一個(gè)很好的捷徑。
然而有些新手上手就開始擼代碼,看著一臉懵逼的代碼,不明所以,想著不管三七二十一,敲著敲著就明白了。結(jié)果,最后一出bug就懵逼了,絲毫不理解項(xiàng)目的結(jié)構(gòu)與框架,更不提其中的技術(shù)難點(diǎn)。
所以不要盲目地copy,磨刀不誤砍柴工,要像看源碼一樣學(xué)習(xí)項(xiàng)目。先理清項(xiàng)目中的結(jié)構(gòu),使用的框架,每個(gè)類的功能,以及使用到的技術(shù)點(diǎn),庖丁解牛,逐個(gè)拆分學(xué)習(xí),化為一個(gè)個(gè)的技術(shù)問(wèn)題,這樣才能最終轉(zhuǎn)化為自己的知識(shí)。
(2)從表面深入原理
針對(duì)具體的技術(shù)實(shí)現(xiàn),不要僅僅以實(shí)現(xiàn)為目的,更不要僅僅因?yàn)閷?shí)現(xiàn)了一些炫酷的UI效果而沾沾自喜。
對(duì)于一些技術(shù),要知其然,更要知其所以然。比如:進(jìn)程間通信的實(shí)現(xiàn)方式AIDL,可能照著一些模板就可以實(shí)現(xiàn),達(dá)到目的。再比如說(shuō):RecyclerView或ListView,按照一定的方法就可以快速實(shí)現(xiàn)列表布局。
然而這些實(shí)現(xiàn)不僅在一個(gè)項(xiàng)目或一處使用,而是頻繁高發(fā)的實(shí)現(xiàn),將來(lái)也更是工作或面試中會(huì)遇到的。所以我們要透過(guò)表面學(xué)習(xí)原理,在開發(fā)一款app的同時(shí),通過(guò)這種方式激勵(lì)自己加深對(duì)技術(shù)的理解與實(shí)際應(yīng)用。
比如,針對(duì)AIDL理解binder機(jī)制的實(shí)現(xiàn),更進(jìn)一步理解android中的進(jìn)程間通信方式。針對(duì)RecyclerView或ListView,理解復(fù)用機(jī)制以及如何定制化實(shí)現(xiàn)一些特殊的效果,加深我們自己的技術(shù)深度。
(3)不盲目追求效果
Android開發(fā)的樂(lè)趣在于可以自己實(shí)現(xiàn)app的開發(fā),用技術(shù)創(chuàng)造體驗(yàn)。
然而正是這種樂(lè)趣可能會(huì)導(dǎo)致一些新手盲目注重UI實(shí)現(xiàn)效果,而忽略自身的技術(shù)學(xué)習(xí)。有時(shí)候技術(shù)學(xué)習(xí)與效果并不沖突,然而在自己獨(dú)立開發(fā)app,學(xué)習(xí)技術(shù)的過(guò)程中,可以適當(dāng)較少對(duì)UI效果的追求,專注于對(duì)技術(shù)的追求與學(xué)習(xí)。
當(dāng)然完美主義者(強(qiáng)迫癥)會(huì)不知覺(jué)地傾斜,但也請(qǐng)保持平衡。

二、準(zhǔn)備工作
在進(jìn)行開發(fā)之前,我們要先進(jìn)行足夠的準(zhǔn)備工作,這樣才能事半功倍。
通常而言,新手在開發(fā)第一款app都是來(lái)自于借鑒,站在巨人的肩膀上進(jìn)行學(xué)習(xí),那么如何選擇一款自己想做、技術(shù)難度適當(dāng)、干貨較多的app?
選擇參照app
- 先選擇自己想做的類型,比如:播放器,新聞?lì)惖龋恍┻m合新手開發(fā)的app。然后在Github中搜索(一定要學(xué)會(huì)使用Github)。
- 了解當(dāng)前的流行技術(shù)框架,選擇自己想學(xué)的一些框架,篩選出使用這些框架的app。
- 從滿足以上需求的app中找出一些star較多的項(xiàng)目,因?yàn)槿罕姷难劬κ茄┝恋模@代表該項(xiàng)目是有可取之處的。
- 先大致了解下項(xiàng)目結(jié)構(gòu),不要盲目選一些效果炫酷的實(shí)現(xiàn)。要根據(jù)自己的技術(shù)能力選擇,初學(xué)者不要選擇太過(guò)復(fù)雜的,要循序漸進(jìn),才能事半功倍。
開發(fā)前奏
選擇好了一款或多款參照app后,那么就要開始全面了解這款app。
-
項(xiàng)目結(jié)構(gòu):了解整個(gè)項(xiàng)目的結(jié)構(gòu),各個(gè)功能模塊,以及使用的框架。一般項(xiàng)目結(jié)構(gòu)都會(huì)按照如下結(jié)構(gòu)展開。
框架使用:了解整個(gè)項(xiàng)目使用的框架,然后學(xué)習(xí)該框架的使用。先看相關(guān)文章,了解基礎(chǔ)使用,然后了解原理,最后基于自己的項(xiàng)目進(jìn)行封裝,這樣會(huì)方便后續(xù)快速功能實(shí)現(xiàn)。
三、開發(fā)app
關(guān)于具體開發(fā),僅介紹一些通用的東西,供大家參考。
- 項(xiàng)目構(gòu)建 :一個(gè)優(yōu)秀的Android應(yīng)用從建項(xiàng)目開始,創(chuàng)建項(xiàng)目的一些規(guī)范。
- 工具類:AndroidUtilCode,所有你想用的工具類,都可以從中抽取。
- 基類:構(gòu)建項(xiàng)目中基類,如Activity,Fragment等,可以參考網(wǎng)上的一些實(shí)現(xiàn),但是大而全不一定好,適合自己的才是最好的。
四、個(gè)人經(jīng)驗(yàn)
(1)動(dòng)機(jī)
作為一個(gè)Android新手,我也是在今年2月份才開始想學(xué)習(xí)做一款app,增加自己各方面的能力。
在剛開始,想學(xué)習(xí)一些流行框架的使用,如Retrofit,RxJava,Glide,EventBus以及MVP模式。
在構(gòu)思整個(gè)項(xiàng)目的時(shí)候,想的大而全,想實(shí)現(xiàn)太多的功能,而然做到最后只實(shí)現(xiàn)了新聞瀏覽以及圖片瀏覽的功能,雖然項(xiàng)目不完整,但是仍然學(xué)到了不少東西。
(2)過(guò)程
因?yàn)閷?shí)現(xiàn)的功能比較簡(jiǎn)單,整個(gè)項(xiàng)目的周期大概20多天左右。其實(shí)開發(fā)周期也就10多天,在前10天左右一直在學(xué)習(xí)了解各個(gè)框架的使用及原理。
Read the fucking source code,這個(gè)過(guò)程雖然很枯燥,不過(guò)也是一個(gè)積累與沉淀的過(guò)程。
從我的博客就可以看出我在準(zhǔn)備這個(gè)項(xiàng)目時(shí)的學(xué)習(xí)歷程。博客寫作真的是學(xué)習(xí)的一個(gè)很好方式,可以將很多東西變成自己的,不再留于表面。
RxJava學(xué)習(xí)過(guò)程
手把手教你使用 RxJava 2.0(一)
手把手教你使用 RxJava 2.0(二)
手把手教你使用 RxJava 2.0(三)
Retrofit學(xué)習(xí)過(guò)程
Retrofit配置詳解及封裝,讓你的網(wǎng)絡(luò)請(qǐng)求更簡(jiǎn)單
Retrofit+RxJava網(wǎng)絡(luò)請(qǐng)求異常處理
EventBus學(xué)習(xí)過(guò)程
關(guān)于EventBus,從使用到解析(上)
關(guān)于EventBus,從使用到解析(下)
MVP模式學(xué)習(xí)過(guò)程
Android MVP 的簡(jiǎn)單介紹與使用
具體技術(shù)解決過(guò)程
Android之仿嗶哩嗶哩客戶端首頁(yè)+抽屜式導(dǎo)航
類似支付寶首頁(yè)——RecycleView多布局結(jié)構(gòu)實(shí)現(xiàn)
類似支付寶應(yīng)用管理界面——RecycleView+ItemTouchHelper實(shí)現(xiàn)拖拽滑動(dòng)
ViewPager+TabLayout+Fragment懶加載機(jī)制完全解析
邊做邊寫,一路下來(lái),收獲還是頗豐,小伙伴們可以在暑假試一試,很有效。
(3)結(jié)果
最終完成的項(xiàng)目在現(xiàn)在看來(lái)很low了,不過(guò)確實(shí)是一個(gè)很好的開端。下面展示下具體實(shí)現(xiàn)的效果,紀(jì)念下我的第一款app。



Github地址:https://github.com/LRH1993/LiveCircle
感興趣的看下,覺(jué)得以上介紹不錯(cuò)的可以給個(gè)star支持下。
