亚洲欧美成A在线视频-亚洲欧美中文日韩二区-亚洲人香蕉一区三区四区-国产91对白叫床清晰在线播放-亚洲国产精品-午夜亚洲A无码高潮片苍井空-国产大学生稀缺视频盗摄-国产精品婷婷午夜在线观看-蜜桃国产乱码精品一区二区三区-国产精品久久久久精品…

Call Us Now! 020-87540245

App開發(fā)工程結(jié)構(gòu)搭建:幾種常見Android代碼架構(gòu)分

時間:2014-12-15 16:05來源:廣州移樂

移樂信息技術(shù)總監(jiān)分析稱:小米應(yīng)用包括3個應(yīng)用,小米分享,小米閱讀,小米標簽,從實際代碼開發(fā)來看,感覺不是同一個團隊,或者同一組人開發(fā)的。 這種情況下,他們的架構(gòu)又使如何?

2011062610021614.png

2011062610022797.png

上面的結(jié)構(gòu)以及結(jié)構(gòu)內(nèi)部的細節(jié)其實很多地方我都是不大茍同的,但是能做出來好東西就是值得大家學(xué)習(xí)的,所以我只把其中我認為最值得學(xué)習(xí)的一點拿出來說。

首先,widget,provider這些特殊模塊分類建立單獨的模塊包即可,這里久不多說什么。

第二,通過觀察,我們發(fā)現(xiàn)小米分享中每個應(yīng)用都有common包,不僅有應(yīng)用程序級別的common包,而且有應(yīng)用程序內(nèi)級別的common包。我想說的 是,android開發(fā)中隨著項目開發(fā)的積累,確能提取到很多公用的方法、類、功能模塊。各個項目之間如此,各個項目內(nèi)部也是如此,所以針對項目類被各個 模塊調(diào)用的方法,類也可以提取出相應(yīng)的公用庫。

那么這里有個問題,公用common包的內(nèi)部包可能涉及到很多的內(nèi)容,是否要分包分級呢,又如何分包分級?我覺得,這個因情況而已,一般來說移動開發(fā),為 了減少包的大小,我們會控制common包的膨脹,往往common包僅僅包括一些最簡潔最經(jīng)典的東西,東西又很少的話就無需分包,但是如果貴公司開發(fā)成 百上千,每個項目都用到行為分析,意見反饋等公用模塊,分一下包會更清楚一點。總而言之,分不分包無關(guān)緊要,盡量讓你的代碼結(jié)構(gòu)清晰,思路了然就好。

5. 聚各家之長,集大家之成

上面粗略的分析之后,我們應(yīng)該對android程序的架構(gòu)有一個感覺,清晰而雜亂。我也沒有去了看更多其他應(yīng)用的結(jié)構(gòu),暫時就總結(jié)一下,得出一個我們自己的通用的工程結(jié)構(gòu)。

假如公司名為tianxia,目前公司準備開發(fā)讀書應(yīng)用,交友應(yīng)用,生活服務(wù)應(yīng)用。

第一時間我們應(yīng)該得出下面這種整個的架構(gòu)(具體的app開發(fā)當(dāng)然要分開):

2011062610544467.png

公司下開發(fā)3個應(yīng)用reader,friend,life,其中common包為這三個應(yīng)用共用,config,oauth為可選,view存放一些最通 用的自定義view,比如對話框,定制的列表等,如果你覺得有些view可能不會通用,最好把它放在應(yīng)用程序類的common包下。

如果各位看過Android學(xué)習(xí)系列(6)--App模塊化及工程擴展的話,對于這種多應(yīng)用模式,應(yīng)該存在android庫共用情況,來解決資源替換,工程復(fù)用的問題。所以我又修改如下:

2011062612094744.png

其中BaseApplication做一些所有app都會用到的基礎(chǔ)初始化或者配置。之后其他應(yīng)用的application應(yīng)該都繼承此BaseApplication。

base是一個android庫,也是一個完整的android工程,而common只是一個jar文件,當(dāng)然你也可以根據(jù)需要作為android庫來開發(fā)。其他主工程reader,friend,life應(yīng)該引用base工程。

ad包存放公司自定義的一些軟廣告。

feedback包下存儲一些用戶反饋等通用功能模塊。

其實,很多情況下,upgrade模塊也可以添加到base工程下,制定統(tǒng)一的軟件升級機制。

接下來我們以reader為例子,來詳細完成它的工程結(jié)構(gòu)的設(shè)計。

2011062612384522.png

其中,config包下的AppConfig.java存放應(yīng)用程序的根配置,比如版本,目錄配置等等。

module包下分為各個模塊,blog為博客模塊,bbs為論壇模塊,person為整站個人信息模塊,widget表示一種特殊功能模塊。

common包下存放一些工具類,本應(yīng)用程序的一些自定義View等等。

再結(jié)合之前所講的內(nèi)容,我們把整個串起來,完善一個reader的最后的架構(gòu)如下(兩外兩個freind和life亦是類似如此):

2011062614353019.png

注意:1).功能模塊和類型模塊均可以劃分,如果沒有需要的話,模塊的劃分都可以省略。

2).activity和service這類組件劃分,如果沒有需要的話,組件的劃分都可以省略。

3).所有的劃分,如果沒有需要的話,所有的劃分都可以省略。

但是,但是,這種分類,我個人還是覺得層次清晰,架構(gòu)明朗,值得參考的,當(dāng)然其中很多細節(jié)我也沒有仔考慮,如有不妥,還請發(fā)現(xiàn)者指出。

廣州移樂信息有限公司(www.appnios.com)
廣州移樂信息科技有限公司主營手機APP開發(fā)、移動應(yīng)用開發(fā)、手機客戶端開發(fā)、手機軟件開發(fā)、APP、APP開發(fā)、APP開發(fā)公司、安桌開發(fā)、ios開發(fā)、APP托管、微信公眾平臺、APP推廣、微信推廣、APP定制、APP推廣服務(wù)。歡迎撥打24小時咨詢熱線:020-87540245。

下一篇:沒有了
0