Android中的依賴問題(五種依賴、eclipse、AS、添加第三方庫、jar)


這篇文章的主題是:
  1. 依賴是什么
  2. eclipse中的依賴
  3. AS中的依賴(有一篇詳細的文章講得非常好,這里就不再寫了http://blog.csdn.net/yy1300326388/article/details/46422939
另外相關的話題有↓,可以自行查看:
  1. 安卓的support包的歷史
  2. AS中grandle具體的內容
  3. 怎么做一個給別人用的Jar包和lib庫
 (另外,貼圖有點麻煩,所以這里圖片只放了一張,如果有博友覺得本文有幫助而且希望補充圖片,可以留言)
 
依賴是什么
依賴這個東西在安卓開發中是非常有用的,它讓我們可以肆無忌憚地成為一位調包俠
安卓開發中不可能讓你從頭開始寫一個個基礎的功能,我們往往會調用系統提供的方法,使用系統提供的工具,來實現我們的需求,往往我們只需要在JAVA文件的開頭Import一些類就OK了,這種情況其實就是一種依賴,我們寫的代碼依賴系統提供的一些工具包
而這是最簡單的情況,因為這是系統提供的包,我們除了import外,什么都不用干
但當你需要使用一些其他的包,不論是系統提供的附加包還是第三方包,你就需要做更多的事情了
這些事情我們統稱依賴,IDE中對依賴的實現我們稱為依賴機制
 
 
Eclipse中的依賴機制
 
1.工程文件夾
我們來看一個安卓工程(eclipse對於不同的工程,細節會有區別,我們這里特指安卓工程)
 
我目前遇到過的全部的安卓項目中會出現的依賴的形式就是這5種,或者確切地說是這4種
  1. Android6.0
    1. 這是在你新建項目的時候默認直接支持的包,里邊就只有一個叫android的jar包
    2. 它根據版本號的不同,只支持對當前版本號的安卓系統的APP的開發,如果我們不需要兼容性,那我們開發軟件可以不用v4,用這個包里的內容也可以,但是為了兼容性,就會用到v4已經其他的
    3. 這個包里的東西我點開看,有這些:Android包、Java包、Javax包、Dalvik虛擬機包、org包
    4. 它修改最直接的方式是在圖1使用1和2指定,還有默認的設置方式是你一開始設置的目標taget版本
    5. 一般說來它不太會出問題,而且一般都設置到最新
  2. Android Private Libraries / Libs
    1. Android Private Libraries本身的意思是Android項目私有的庫,而它其實就是libs目錄里面的jar包的映射
    2. 添加jar包到libs里面,系統自動把jar加載到android private libraries中,你把libs中的jar包移除 Private Libraries中也就沒有了
    3. 而私有是什么意思我也不太懂,如果是相對下面的Android Dependency,那確實是有點公私區別的意思
    4. 這是最常見最普通的我們引入外部庫的方式,操作也最方便,下面會詳細說
  3. Android Dependency
    1. 這也是一種引入外部庫的歸宿(外部庫存放的位置)
    2. 相比上面那個,這個家伙有三個特點
      1. Android Private Libraries引用的是包只能給自己使用,dependencies是引用的公用的庫,它可以同時被其他的項目引用
      2. 使用dependencies 的操作更復雜,下面會說
      3. Android Private Libraries引用的是jar包,dependencies是引用的libraries
  4. Referenced Libraries
    1. 這好像也是一種引用jar包的方式,我雖然操作過,但我只是按照有的教程的說法做的,而且最后這種方式好像都沒有用,於是我嘗試之后又刪掉了,這種的跟前面的有什么區別我也不知道,不過好像這是舊的使用jar包的方式,是使用libs包之前的方式
    2. 詳細的情況下面會說
 
2.操作方式
推薦而且常用的操作
一個android項目通常由代碼和資源文件組成。如果把代碼和資源文件打成Jar包供其他工程使用,則Jar包中的資源文件將無法被打包到最終的APK文件中,致使程序無法正常運行(直接引用Jar報的話,jar包中的style之類的應該不會自動在R類中生成,所以View中如果使用了資源就會報錯)
於是就有了這兩種方式,一種是引入不帶資源文件的jar包,另一個是引入帶資源的Library
  1. 引入Jar包
    1. 這是最簡單的一種方式,當一個庫被打包成了jar包之后,你可以非常方便的使用:直接把這個jar包用鼠標拖入項目的libs文件夾中,點擊copy to,於是項目會進入libs文件夾,而且同時,系統自動把jar加載到android private libraries中,然后你就可以在代碼中Import相關庫了
    2. Private Libraries 就是libs里面的jar包的映射!你把libs中的jar包移除 Private Libraries中也就沒有了(移除步驟就是這樣,非常簡單)
    3. 大部分成熟的第三方庫都是這個形式,比如我用過的ksoap,mpandroid,以及安卓官方提供的support v4
  2. 引入帶資源的Library
    1. 有些特殊的情況下,這個包是帶資源的,居然說類似這個形式的包就可以使用這種方式引入(如下圖,libs中其實有個Jar包,然后res就是資源),比如support design,我們會使用另一種稍顯復雜的方式來引入
    2. 引入步驟:
      1. 在eclipse中new一個安卓項目,方式使用 ,找到要引入的包,這里的例子就是design包,copy to,這個步驟不會有問題
      2. 引入之后我們彈出這個項目的圖1,選擇3,把它本身作為Library,選了這個之后,這個項目就可以被其他項目引用,並且這個項目本身不能被運行
      3. 然后在我們要引用這個項目的實際工程項目中彈出圖1,點擊5,就能看到剛剛設置為library的項目,選擇之后就會在4中看到我們已經引用了這個項目
      4. 然后在Android Dependency 中就會看到一個以這個項目名稱命名的一個jar包,它是帶資源的
    3. 移除步驟:直接在圖1中使用remove就OK了
    4. 需要這么使用的包不太多,我目前用過的必須要以這種方式引入的有support v7,support design
    5. 包圖:  

       

一般以上步驟完之后需要clean項目
 
上面兩種方式的舊版本
  1. 引用Jar包【等價於上面第一種】
    1. 進入圖2,點擊3,選擇目標jar包
    2. 進入圖3,勾選2,點擊3
  2. 引用library
    1. 進入圖2,點擊2
    2. 選擇“User library”,點擊“下一步”     
    3. 點擊“User librarys”按鈕在出現的界面中點擊“New..”按鈕,在彈出的界面中隨便起一個名字,點擊“確定”   
    4. 點擊“Add jars”按鈕選擇第三方jar包,
    5. 點擊“確定”完成操作
 
然后還有一種方式是右鍵build path
  1. build path
    1. 你把jar包拖入Libs之后,當你右鍵的時候如圖4,在build path中能看到add to build path,當你點擊之后,你的項目下會自動新建Referenced Libraries 文件夾,這個Libs包會出現在下面,但這個時候你還沒有真正引用到它,你需要進入圖3,在1的2中打鈎,甚至有的人說你需要使用3把這個包放Up到最上面
    2. 移除方式:右鍵這個包,delete是灰的,但在圖4中的build path中能看到remove,點擊它就OK了;或是進入圖2,選擇包,並remove
    3. 上面5個工程文件夾中,右鍵的build path中能看到add to build path只有Libs
 
3.操作中可能出現的意外處理
  1. 一般你感覺正確操作完就出現問題,第一件要做的事就是clean和refresh項目,如果問題還在,簡單檢查后也不知道問題出在哪兒,那就重啟eclipse
  2. libs中的Jar包無法刪除
    1. 直接關閉eclipse(關閉項目沒有用)
    2. 手動到Lib文件夾下,刪除
    3. 打開eclipse,右鍵refresh項目
  3. jar包好像無所謂,但是引入帶資源文件的Library時,如果這個Library本身也依賴其他的jar包或者library,這時候可能會發生錯誤,有兩個解決方式可以試試
    1. 把被多次引用的jar包替換成同一個版本的(復制替換)
    2. 保留最底層的引用,上層同樣的包要引用的話干脆刪掉
    3. (還有說法是:如果所開發的類與Android原生的類沖突,可以通過project->properties->java build path-> order and export (up / down)切換jar 編譯時使用的優先級)
如果最后還是有問題無法解決,那請換用AS大法,親測同樣的代碼,在eclipse中報錯,在AS中完美運行,就為這點換的AS! 
 
圖:
  1. 圖1
  2. 彈出方式:右鍵項目名稱,選擇properties,然后彈出
  3. 它跟圖2、圖3其實是一個對話框,可以使用同樣方式彈出
 
  1. 圖2
  2. 彈出方式:如圖4,選擇下面的configure bulid path
  3. 也可以如圖1一樣的方式
  4. 3和4其實差不多,只是可選擇的范圍不同而已。add jars 可選范圍是你的Project目錄,add external jars可選范圍是任何目錄。
  5. Add variables :通過類似於環境變量的方式指定一個引用jar的路徑
  6. Add libraries :將一些已經存在的庫文件添加到引用路徑
  7. Add (External) class folder :添加項目中類所在的文件夾
 
  1. 圖3
  2. 如圖1圖2方式
 
  1. 圖4


免責聲明!

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



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