一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Android - Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用

Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用

2021-01-13 15:41Android開(kāi)發(fā)網(wǎng) Android

這篇文章是android開(kāi)發(fā)人員的必備知識(shí),是我特別為大家整理和總結(jié)的,不求完美,但是有用

1.需求
    無(wú)論是在.net還是java平臺(tái),合理的分層架構(gòu)是最普遍的模塊化思路之一。
    dll,jar文件無(wú)不風(fēng)靡盛行,無(wú)處不在。
    一天,tx團(tuán)隊(duì)和我說(shuō),我們現(xiàn)在要做android上做三個(gè)論壇的客戶端,一個(gè)是新聞?wù)搲粋€(gè)是文學(xué)論壇,一個(gè)是音樂(lè)論壇。除了數(shù)據(jù),界面和很少的模塊不一樣,其他的都一摸一樣。
    jar是我第一刻就想到的東西,但是共用的jar文件無(wú)法方便的共享資源或者覆蓋資源。
    而我們也不會(huì)傻傻的單獨(dú)做三個(gè)客戶端的吧,也不會(huì)傻傻的做3個(gè)客戶端再傻傻的copy3份,依次修改吧。

2.問(wèn)題
   在android工程中如何開(kāi)發(fā)一個(gè)共用framework,能共用資源,代碼,但是也能擴(kuò)展? 

3.使用硬編碼判斷
   有人提出了一種方案, 在代碼里面判斷:

復(fù)制代碼 代碼如下:

if(新聞?wù)搲? {
   //加載新聞?wù)搲馁Y源
   //執(zhí)行新聞?wù)搲拇a
   //顯示新聞?wù)搲男Ч?br /> }else if(文學(xué)論壇) {
   //加載文學(xué)論壇的資源
   //執(zhí)行文學(xué)論壇的代碼
   //顯示文學(xué)論壇的效果
}else if(音樂(lè)論壇) {
   //加載音樂(lè)論壇的資源
   //執(zhí)行音樂(lè)論壇的代碼
   //顯示音樂(lè)論壇的效果
}
ps:這是一種很無(wú)奈的辦法,代碼丑陋,擴(kuò)展性差,有沒(méi)有更好的辦法呢?


4.使用android library分離工程
    android library提供了一個(gè)類(lèi)似于其他平臺(tái)的庫(kù)的概念,這個(gè)庫(kù)不僅能公用代碼,還能共用資源,還能覆寫(xiě)資源。
    android library是以工程的顆粒來(lái)復(fù)用,引用它的工程,其實(shí)就是引用它的代碼,然后生成r.java和主工程需要的資源,而剔除library中被覆蓋的資源。其中l(wèi)ibrary中的androidmanifest.xml不能復(fù)用,也就是說(shuō)主工程必須重新定義androidmanifest.xml,這個(gè)也很容易理解,androidmanifest.xml本來(lái)就是工程的一個(gè)配置文件,一般來(lái)說(shuō)不具備共用的庫(kù)的通用性。
    步驟如下:
    第一步:新建android工程common。
    第二步:右鍵common,選擇properties,在android標(biāo)簽頁(yè),選中"is library" ,如下圖。

Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用

 
    第三步: 新建主工程新聞?wù)搲痶ianxianews。
    第四步: 右鍵tianxianews,選擇properties,在android標(biāo)簽頁(yè),點(diǎn)擊add,選中common。如下圖。

Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用

    查看最后的工程結(jié)構(gòu):

Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用

    此時(shí)此刻,common工程天衣無(wú)縫成了tianxianews工程的一部分。
    我們展開(kāi)tianxianews工程的gen目錄:
    

Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用


    eclipse為了生成了兩個(gè)r.java,一個(gè)是common工程的,一個(gè)tianxianews工程的,但是內(nèi)容是一摸一樣的,這樣做的好處是:r.java里面的內(nèi)容包括兩個(gè)工程資源,第一,tianxianews工程通過(guò)r.java能調(diào)用到common工程的資源;第二,如果有覆寫(xiě)的資源,生成apk的時(shí)候,tianxianews工程覆蓋common工程的資源,因?yàn)閮蓚€(gè)r.java內(nèi)容一樣,common代碼調(diào)用的r.java中的資源,實(shí)際上調(diào)用的是tianxianews資源,這個(gè)特性類(lèi)似如面向?qū)ο蟮睦^承的概念。
    我們還可以另外新建tianxiamusic,tianxialiterature工程,都引用common,這樣我們?nèi)齻€(gè)工程就能共用common,這樣我們就可以只在common一個(gè)工程中開(kāi)發(fā)了。
    在這里,具體的使用步驟我沒(méi)有截圖出來(lái),主要是沒(méi)什么技術(shù),也沒(méi)什么好說(shuō)的,就是兩個(gè)字:覆蓋。 

 

5.小結(jié)
    android library為android模塊化和工程擴(kuò)展提供了一個(gè)很好的工具或者方式。隨著項(xiàng)目的增大,資源的共享,模塊化和擴(kuò)展的這種需求更是日益凸顯,它不僅去掉了代碼的丑陋,而且減少了開(kāi)發(fā)量,帶來(lái)的益處不少。同時(shí)由此我們也可以看出來(lái)android的不成熟,他們?yōu)槲覀兇笮凸こ烫峁┑姆桨高€是太少,這可能也有源自手機(jī)平臺(tái)本身的局限性吧,我們期待android市場(chǎng)走向更強(qiáng)大,技術(shù)走向更強(qiáng)悍。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本暖暖在线视频 | 法国老妇性xx在线播放 | 女暴露狂校园裸露小说 | 人与动人物aaaa | 国产v视频| 草草视频人人爽 | 日韩专区| 午夜私人影院在线观看 视频 | 91热国内精品永久免费观看 | 国产一级黄色录像 | 日韩日韩日韩手机看片自拍 | 日本激情小说 | 女人与zzzooooxxx| 9191久久| 国产清纯女高中生在线观看 | 欧美夜夜精品一级爽 | 特级老女人淫片高清视频 | 免费视频精品一区二区三区 | 风间由美理论片在线观看 | 69日本xxxx| 欧美国产日本高清不卡 | 日本无遮挡亲吻膜下面免费 | 欧美一卡二卡科技有限公司 | 亚洲国产欧美另类va在线观看 | 深夜免费在线观看 | 国产探花在线视频 | 国产精品视频2020 | 40分钟在线观看免费 | 国产精品毛片va一区二区三区 | 亚洲AV永久无码精品老司机蜜桃 | tiny4k欧美极品在线 | 欧美特级午夜一区二区三区 | 袖珍人与大黑人性视频 | 国产偷啪| 免费日本视频 | 精品亚洲一区二区三区在线播放 | 国产品精人成福利视频 | 动态图啪啪120秒免费看 | 国产精品原创永久在线观看 | 国产精品视频第一区二区 | 无码区国产区在线播放 |