在Android開發中咱們每每爲了節省開發時間,會用直接引入其餘工程中的module,避免重在新工程中開發,尤爲一個團隊多項目時候用到特別多,固然也有包括引入第三方jar包或者aar文件,有的時候會以jar包形式引入,有的時候以aar包形式引入,那種兩種有啥區別呢,那咱們簡單的來說講這兩個概念...
android
xxx.aar,AAR(Android Archive)是一個Android庫項目的二進制歸檔文件,裏面不只包含工程代碼也還包含工程資源文件,例如各類字體大小,字符串資源,圖片等,固然每一個工程所包含的資源文件不用,最後編譯出來的aar文件裏面包含的內容也不盡相同,例若有的工程有aidl業務處理,可是大部分都包括:AndroidManifest.xml,classes.jar,res,R.txt,你能夠隨便找一個aar文件將後綴名字改爲.zip或者.rar壓縮包形式,而後解壓查看解壓後的內容,網絡
(網上直接引用一張圖片)
app
xxx.jar:只包含了class文件與清單文件,不包含資源文件,如圖片等全部res中的文件,maven
反之 xxx.aar則包含全部資源,class以及res資源文件;學習
因此若是你有資源文件須要,那麼你就以aar文件形式引入到工程中去,反之直接引入jar便可;字體
如何使用別人提升好的jar包和aar文件呢?gradle
xxx.jar文件:將其拷貝到:libs目錄,並在AndroidStudio項目中build.gradle中添加:ui
dependencies {debug
compile fileTree(include: ['*.jar'], dir: 'libs')cdn
}
從新編譯一次項目既可完成加載,(可在工程的External Libraries目錄下查看)。
xxx.aar:有兩種方式,分別爲本地加載以及網絡加載,因爲網絡加載涉及到發佈到mavenCentral託管的問題這裏不作討論;在這裏給你們說一種本地加載的方式,簡單快捷。
第一步:將aar文件拷貝到:libs目錄
第二步:build.gradle 配置文件中更改成
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'xxx', ext:'aar')
}
分別添加了」repositories「與更改了」dependencies「,而後從新編譯一次項目就能夠正常使用了。
一樣編譯成功後能夠在工程的External Libraries目錄下查看;
那麼到此你算成功引入了別人提供的jar文件和aar包了;
那麼就會引用不行啊,有時候須要咱們本身打包文件,那麼下面的步驟就是教你如何打成引用包...請看大屏幕,哦,不對,請看下文...
1.通常咱們的module的build.gradle文件中存在apply plugin和applicationId,是建立時默認生成的,須要對build.gradle(必定是要打的module對應的)進行修改,
如圖:
此時再點擊右側的assembleRelease,看到module層的outputs文件夾下生成了.aar文件,
即:xxx.aar文件位置爲:module(你對應的)/build/outputs/aar/xxx.aar
固然執行右側的assebleDebug腳本則生成debug版的aar文件,執行asseble會生成release和debug兩個版本的aar,名字也會有所體現,目錄仍是在 module(你對應的)/build/outputs/aar/下;
如圖:
看到這裏就已經差很少了,那麼jar文件如何生成的呢?
在module下的intermediates文件夾,也生成了一個bundles文件夾,.jar文件也能夠用這裏生成的,這個就是生成的jar包,如今是否是很明白了;
如圖:
到這兒了其實已經將aar文件打包說完了,固然咱們在建立module的時候能夠直接以Libiary形式建立,具體操做就是在工程中右鍵--選擇Module--選擇Android Library,而後看看咱們module的build.gradle文件,意外又驚喜發現這行代碼 apply plugin: 'com.android.library',由於咱們建立的時候指定了Module類型爲Library形式,這也是爲何咱們要把其餘項目的Module的build.gradle文件Application改爲Library, 此時改Module也沒有ApplicationId,由於Libiary包沒有應用Id;
到此,咱們基本對打aar文件有了總體瞭解;
最後,提早祝你們 新年快樂! 18年即將過去,這一年發生了不少,昨天即將被定格,讓咱們以新的姿態迎接19,但願全部的人都能在19年離夢想更進一步,工做和學習更加順利快樂!
感謝!