android項目依賴


本文引用:http://www.myexception.cn/android/1493696.html

1、Android工程依賴:

  android中打包含有Activity以及資源文件的jar包在工程中調用,在開發java工程時,一個大的項目可能分為多個模塊,為了實現模塊間的解耦和獨立,提高模塊的復用性,通常將該項目按模塊分為多個java工程進行開發,最后通過jar包等工程依賴的方式實現系統集成,提高模塊的解耦和復用。

        現在開發android項目,通過實踐開發的總結,發現這種方式特別有必要。比如,開發一個android端視頻應用,肯定有播放和下載模塊,之前放在一個工程里,不斷添加新的功能,產品里的每一個研發都不斷改動和添加功能,最后維護越來越難,bug越來越多,並相互推諉。這種方式能避免這種情況,此為第一優點。

        其二,下載模塊是很多app都會用到的模塊,獨立出來,並不斷完善和優化,可以變成一個通用組件,給不同的app使用,這就是提高了模塊和代碼的解耦,提高了復用性,提高了工作效率。現在很多公司都是這樣做的。

        比如,下拉刷新,android沒有提供下拉刷新,很多項目

那么,如果實現這種設計和需求呢?即已經有一個 Android工程 A 。  現在的工程 B 中 需要集成A工程作為一個模塊?

         首先想到 B工程中能否直接  包含 A的apk文件, 發現不可行。然后又想着將其中一個項目(含有res資源)打包成jar包,另一個項目來引用。但是多次嘗試總是發現找不到資源。

         這是因為android的特殊性,android不僅有java文件還有res文件,需要研究如何將資源以及activity文件打包成jar文件供其他項目調用,最終多方嘗試,找到如下兩種方案。方案二是從android的官方文檔中找到的完美解決方案。方案二更優,方案一要求兩個工程包名最好一樣,而方案二不需要包名一致。

 

 

第一步,把普通的android project設置成庫項目

     庫項目也是一個標准的android項目,因此你先創建一個普通的android項目。 這個項目可以起任何的名稱,任何的報名,設置其他需要設置的字段等,如圖1所示。

接着把項目設置成庫項目,步驟如下

  1. Package Explorer中, 鼠標右鍵項目文件夾,點擊 Properties.
  2. Properties 窗口, 選擇"Android" ,Library屬性顯示在右下邊.
  3. 把"is Library" 單選框選擇上,再點擊 Apply.
  4. 點擊 OK 關閉Properties 窗口.

     這時,這個項目就變成庫項目了。

     當然,java項目也可以讓其變成一個庫項目,非常簡單,執行上面的四步。其他程序項目就可以引用庫項目了。

 

圖 1.使一個項目為庫項目

    創建manifest文件

    一個庫項目的manifest文件也和標准的android應用程序一樣,聲明所有共享的組件。

    比如APIDemo中的TicTacToeLib 這個例子,庫項目聲明了Activity GameActivity:

<manifest>
  ...
  <application>
    ...
    <activity android:name="GameActivity" />
    ...
  </application>
</manifest>

    第二步 引用庫項目

    如果你開發的應用程序想要包括庫項目中的代碼和資源,非常簡單,引用步驟如下

  1. Package Explorer中, 鼠標右鍵項目文件夾,點擊 Properties.
  2. Properties 窗口, 選擇"Android" ,Library屬性顯示在右下邊.
  3. 點擊Add ,打開了Project Selection對話框.
  4. 從可用庫項目列表選擇一個項目,然后點擊 OK.
  5. 對話框關閉之后點擊 Apply (在Properties窗口).
  6. 點擊 OK 關閉Properties 窗口.

    完成以上六步,Eclipse 會重建項目,把庫項目中的內容包含進去。 如圖2所示

      

圖 2.讓項目引用一個庫項目

      如果你想增加多個庫項目的引用,使用up和down可以設置他們的相對的優先級和合並順序。工具在合並引用的庫的時候順序是從低優先級(列表的下面)到高優先級(列表的上面)。 如果不只一個庫定義了相同的資源ID,這個工具選擇資源時會選擇高優先級的資源。應用程序自身擁有最高的優先級,自身的資源zThe application itself has highest priority and its resources are always used in preference to identical resource IDs defined in libraries.

 

      在menifest文件中聲明庫中的組件

      在manifest文件中必須增加對在當前程序中用到的庫項目中的所有的組件。比如,你必須聲明任何用到的 <activity>, <service>, <receiver>, <provider>等,<permission>, <uses-library>,和其他類似的元素。

聲明庫項目中的組件時,必須使用包含包名的類全名。

      在TicTacToeMain例子中,聲明庫Activity GameActivity :

<manifest>
  ...
  <application>
    ...
    <activity android:name="com.example.android.tictactoe.library.GameActivity" />
    ...
  </application>
</manifest>

    需要了解更多關於androidManifest的信息請參閱 AndroidManifest.xml.

 

     例子參見android-SDK下的\android-sdk\samples\android-x下的兩個例子工程:TicTacToeLib和TicTacToeMain。可以看見兩個工程下的project.properties文件。

 

    庫工程TicTacToeLib的:

     android.library=true

     target=android-3

 

     主工程TicTacToeMain的:

  android.library.reference.1=../TicTacToeLib/

  target=android-8

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM