Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 關於Andorid的第三方庫導入和其他知識

關於Andorid的第三方庫導入和其他知識

編輯:關於Android編程

關於Andorid的第三方庫導入和其他知識:現在講的都是些基礎的東西,東西會一步步往上升的,知道操作的可以在這裡找找問題 ,順便溫習下。然後不知道的就在這裡學習下。

第三方庫的分類和區別。

如何導入這些庫

一丶第三方庫分類和區別:

jar文件。我們需要了解的是Jar通常都是只包含.class文件和清單文件。不包含資源文件,在Android裡面就是不包含Layout.xml還有其他的資源。當然你也可以包含但是會識別不了。.class是我們.java編譯出來的。這樣比直接提供java少了一層編譯。

2. library文件。工程庫.java和資源文件等。

除了不能運行和progject基本上一樣的。正常情況下是不能獨立運行的, 但是也可以修改gradle來成為獨立工程。通過相互切換可以做組件化開發加快調試。

\

把上面的是說可以運行的工程文件。下面就是library可以修然後運行。

3. aar 文件。先說說aar文件和jar文件的區別吧。jar我們知道的是只有.class文件和清單文件而aar文件裡面可以包含資源文件,說白了專屬的Android jar。面也就是一些.jar+res+assets+R和清單文件等。一些必選和可選文件。我們突然發現了一個問題。這個和library有什麼關系和區別呢?當然是有聯系的。實際上aar是library編譯後的文件的集合。

這裡希望大家了解到一個事情就是library既可以編譯成jar,又可以編譯成aar。如果只是java文件可以選擇導出jar。如果加UI應該導出aar。

來2張bigbang(逼格棒)的圖片。

\
\

這個基本上不用怎麼翻譯了吧。就是我上面說的內容。第一張圖是解釋aar的。第二張圖是說明aar裡面必須要包含什麼文件和可選的包含的文件。

這裡給大家插播一個小知識。res/raw 和assets的異同。

相同點:都會原封不動的的打如apk包中。

不同點:res/raw中的文件會被映射到R.java裡面可以通過 id open流找到並引用。而assets裡面的文件則需要通過AssetManager來調用。還有一個不同的地方就是assets是可以建立二級目錄的而res是不可以的。我現在好想哭,每個裡面都有好多的知識點。還有裡面文件大小的注意點等等無數的點。先了解個大概不要在意這些細節。看樣子後面還得專門用一個篇幅寫這些。

獲取方式:

InputStream is = getResources().openRawResource(R.id.fileName);

AssetManager am = getAssets();

InpusStream is = am.open("fileName");

4.os文件。這個是動態庫文件,這個要講的話很大一個篇幅。先和大家說說大概吧。以後可以專門再用一篇講講這個。我們經常看到引入os的時候會有很多個文件夾,這個其實是不同cpu架構。目前支持7種,而每一種都關聯一個相應的applicationBinary Interface。這個主要是定義了二進制文件如何在相應的系統平台上。這個裡面很多東西。我也只是知道個皮毛。很多設備都支持多於一種的ABI。例如ARM64和x86設備也可以同時運行armeabi-v7a和armeabi的二進制包主要的架構有:armeabi,armeabi-v7a,X86,mips等等。也是大學的技術及組成原理裡面的。

主要是由c。c++編寫的。先了解這些吧。

二丶導入第三方庫,方式和注意點。

A) jar包的導入以fastJson為例子

下載鏈接:http://download.csdn.net/download/pdsyzbaozi/8199419

jar包的導入。這個就很好導入了也基本沒有什麼可以說的了吧。

先找到相應的jar包

工程切換到project模式。放入libs目錄下。然後同步一下工程。理論上這樣是可以了的。如果不行往下面走

\

在這裡這樣寫,意思是將本libs裡面的所有的以jar結尾的文件導入到工程裡面來。

逗逼朋友們。如果沒有libs目錄怎麼辦,在app目錄下自己創建。

示例圖(fastJson):

\
\

大功告成

B) Library的導入和注意:以PullToRefreshListView為例子

下載鏈接:https://github.com/chrisbanes/Android-PullToRefresh

找到並且下載並且解壓

\
\

一步步往後next就可以了, 然後就會遇到這個問題

\

是說沒有找到這個版本的的sdk要麼點擊下載,要麼去求改library的gradle文件,修改很簡單。compileSdkVersion就是說編譯版本,你電腦上有哪個就添加哪個,最好就是用你主工程裡面的。 buildeToolsVersion也是直接復制過來。然後同步一下工程就不會問題了。

\

完美。

c. 打開project Structure

找到你要添加lib就可以了。

\
\

哦哦對了出現了小插曲,這個方進來用不了會報錯。不是導包的問題,是包的問題。修改下就可以了。

\
\

C) .os文件的導入以高德地圖為例子

還是得先下載下來os。

\

和java在同一個目錄層級新建一個jniLibs,然後把文件全部拽進去,在有的時候我們看到在gradle有這樣的配置

SourceSets {

main{

JniLibs.srcDirs = [‘libs’]

}

}

這個是為什麼呢。這裡的話是因為我們沒有將os文件放到jniLibs下面直接放到了libs下面和jar包在同一個目錄,這樣的話就得在gradle裡面說明os路徑,不然會找不到的。

配置好高德的一些配置然後運行就可以了。

\

但是在這個過程中又出現了小插曲。這個是調試後的結果.

給大家看看插曲

當我運行在模擬器上面的時候

\

說當前的native libs不支持當前的cup架構。然後修改模擬器cpu架構就可以。這個就說明了上面的為什麼os分那麼多包,是不同cpu架構調度不同的方法和什麼對齊方式的。我知道一般arm是精簡指令集,X86是復雜指令集的代表。是大學計算機組成裡面了解的一點點。哦對了教大家看手機cpu架構

\

adb shell

cat /proc/cupinfo

不要問我adb shell 怎麼不是內部命令,不要問我cat的意思。

D)aar的導入

aar的導入方式一:Maven遠程倉庫

compile'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'

直接這樣就可以了。

b.arr的導入方式二:本地aar包

1.直接本地aar包這個和jar一樣放入libs裡面就可以了。

2.然後在gradle裡面加入到工程裡面

3.compile(name:'fileName',ext:'aar')

補充說明:1.aar實際上就是Android專屬的jar,建議將module都打成aar可以提高as的速度。因為裡面主要是.class而不是.java不用編譯。2.我們需找庫導入的時候可以直接通過Project Structure裡面選擇Choose Library Dependncy找,先在我基本都是這樣的。

像如果將我們自己開發的庫打包成SDK給別人,無非也就是給別人提供這些。後面的內容會給大家講如何將我們的庫打包出來提供給別人用。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved