編輯:關於Android編程
第三方庫的分類和區別。
如何導入這些庫
一丶第三方庫分類和區別:
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給別人,無非也就是給別人提供這些。後面的內容會給大家講如何將我們的庫打包出來提供給別人用。
做了微信支付,下載了Demo,發現和之前有所改動,v3.0的版本,也許有的朋友還在摸索,這裡我已經成功支付,話不多說,直接進入主題:一、首先要在微信開發平台注冊賬號,新增
UI效果圖:最終的效果是可以滑動刻度來選取金額,並且滑動停止後必須定位到某個金額上,不能停留在中間。分析:決定用listview來實現上述效果分析UI圖,發現有三種類型的
Java代碼 /** * 打開文件 * @param file */ private void openFile(File file){ Intent inte
上節學習了如何在手機內部存儲中讀寫文件,本節學習如何在手機的外部存儲中讀寫文件。那就是如何在Sdcard中讀寫文件。那我們還是用以前登錄界面的例子舉例說明,(登錄界面請看