Android學習系列(6)–App模組化及工程擴充

來源:互聯網
上載者:User

這篇文章是android開發人員的必備知識,是我特別為大家整理和總結的,不求完美,但是有用。

1.需求
    無論是在.net還是java平台,合理的分層架構是最普遍的模組化思路之一。
    dll,jar檔案無不風靡盛行,無處不在。
    一天,tx團隊和我說,我們現在要做android上做三個論壇的用戶端,一個是新聞論壇,一個是文學論壇,一個是音樂論壇。除了資料,介面和很少的模組不一樣,其他的都一摸一樣。
    jar是我第一刻就想到的東西,但是共用的jar檔案無法方便的共用資源或者覆蓋資源。
    而我們也不會傻傻的單獨做三個用戶端的吧,也不會傻傻的做3個用戶端再傻傻的copy3份,依次修改吧。

2.問題
   在Android工程中如何開發一個共用Framework,能共用資源,代碼,但是也能擴充? 

3.使用寫入程式碼判斷
   有人提出了一種方案, 在代碼裡面判斷:

if(新聞論壇) {   //載入新聞論壇的資源   //執行新聞論壇的代碼   //顯示新聞論壇的效果}else if(文學論壇) {   //載入文學論壇的資源   //執行文學論壇的代碼   //顯示文學論壇的效果}else if(音樂論壇) {   //載入音樂論壇的資源   //執行音樂論壇的代碼   //顯示音樂論壇的效果}PS:這是一種很無奈的辦法,代碼醜陋,擴充性差,有沒有更好的辦法呢?

4.使用Android Library分離工程
    Android Library提供了一個類似於其他平台的庫的概念,這個庫不僅能公用代碼,還能共用資源,還能覆寫資源。
    Android Library是以工程的顆粒來複用,引用它的工程,其實就是引用它的代碼,然後產生R.java和主工程需要的資源,而剔除Library中被覆蓋的資源。其中Library中的AndroidManifest.xml不能複用,也就是說主工程必須重新定義AndroidManifest.xml,這個也很容易理解,AndroidManifest.xml本來就是工程的一個設定檔,一般來說不具備共用的庫的通用性。
    步驟如下:
    第一步:建立Android工程common。
    第二步:右鍵common,選擇Properties,在Android標籤頁,選中"Is Library" ,如。
 
    第三步: 建立主工程新聞論壇tianxianews。
    第四步: 右鍵tianxianews,選擇Properties,在Android標籤頁,點擊Add,選中common。如。
    查看最後的工程結構:
    此時此刻,common工程天衣無縫成了tianxianews工程的一部分。
    我們展開tianxianews工程的gen目錄:
    
    eclipse為了產生了兩個R.java,一個是common工程的,一個tianxianews工程的,但是內容是一摸一樣的,這樣做的好處是:R.java裡面的內容包括兩個工程資源,第一,tianxianews工程通過R.java能調用到common工程的資源;第二,如果有覆寫的資源,產生apk的時候,tianxianews工程覆蓋common工程的資源,因為兩個R.java內容一樣,common代碼調用的R.java中的資源,實際上調用的是tianxianews資源,這個屬性類別似如物件導向的繼承的概念。
    我們還可以另外建立tianxiamusic,tianxialiterature工程,都引用common,這樣我們三個工程就能共用common,這樣我們就可以只在common一個工程中開發了。
    在這裡,具體的使用步驟我沒有出來,主要是沒什麼技術,也沒什麼好說的,就是兩個字:覆蓋。 

5.小結
    Android Library為Android模組化和工程擴充提供了一個很好的工具或者方式。隨著項目的增大,資源的共用,模組化和擴充的這種需求更是日益凸顯,它不僅去掉了代碼的醜陋,而且減少了開發量,帶來的益處不少。同時由此我們也可以看出來Android的不成熟,他們為我們大型工程提供的方案還是太少,這可能也有源自手機平台本身的局限性吧,我們期待Android市場走向更強大,技術走向更強悍。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.