Android Studio 使用Gradle引入第三方庫文件的總結(jié)

不知不覺入宦,使用Android Studio開發(fā)App已有一段時間了哺徊,接觸到了各式各樣的第三方庫文件的引入,也是時候總結(jié)一波了乾闰。

使用Android Studio開發(fā)Android應用時唉工,避免不了需要借助Gradle引入各式各樣的第三方庫文件,幫助我們更好的開發(fā)App汹忠,常見的引入方式有:Jar文件淋硝,so文件,Library庫文件宽菜,aar文件谣膳,遠程jcenter、maven倉庫文件铅乡。這幾種引入方式各有利弊继谚,對應的gradle配置也有所不同,本文根據(jù)平時的使用經(jīng)驗阵幸,做一個簡單的總結(jié)花履,幫助大家更好的利用Gradle引入第三方庫文件。

jar文件


將jar文件復制至app module目錄下的libs文件夾下挚赊,然后打開app module目錄下的build.gradle配置文件诡壁,在dependencies項中添加配置命令,這里有兩種配置方式可供選擇:

  • 一次性引入libs目錄下所有jar文件
compile fileTree(include: ['*.jar'], dir: 'libs')
  • 單個逐一引入jar文件
compile files('libs/universal-image-loader-1.8.6-with-sources.jar')

so文件


  • Gradle 舊版本

將so文件(包含arm64等文件夾)復制app module下面的libs文件夾中荠割,和jar文件類似妹卿,然后在build.gradle的android欄目下添加一個task:指定so文件的目錄,并將其轉(zhuǎn)化為Jar文件蔑鹦。命令如下:

task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {  
        destinationDir file("$projectDir/libs")  
        baseName "Native_Libs2"  
        extension "jar"  
        from fileTree(dir: "libs", include: "**/*.so")  
        into "lib"  
    }  
  
    tasks.withType(JavaCompile) {  
        compileTask -> compileTask.dependsOn(nativeLibsToJar)  
    }  
  • Gradle 新版本

新版Gradle實現(xiàn)了自動打包編譯so文件的功能夺克,并且為so文件指定了默認的目錄app/src/main/jniLibs,當然默認是沒有這個文件夾的嚎朽,我們只需要新建一個jniLibs文件夾铺纽,并將so文件復制到該文件夾下,編譯運行即可哟忍。

通常狡门,為了更好地管理第三方庫文件陷寝,或者更簡單地將Eclipse項目轉(zhuǎn)化為Android Studio項目,建議將jar文件和so文件放在一起融撞,統(tǒng)一擱置在app/libs目錄下,此時粗蔚,我們只需要在build.gradle的android一欄中添加如命令尝偎,指定so文件的目錄即可:

    sourceSets {
        main {
                jniLibs.srcDirs = ['libs']
        }
    }

通過這種方式,編譯過后鹏控,將項目目錄切換至Android試圖致扯,可以看到,app目錄下多了一個jniLibs文件夾当辐,里面包含了引入的so文件和jar包抖僵,如下圖所示,表示集成成功缘揪。

Library庫文件


將第三方Library庫文件復制到項目根目錄下耍群,打開項目根目錄下的settings.gradle文件,添加配置命令找筝,如:

include ':app', ':PullToRefresh'

然后打開app module目錄下的build.gradle蹈垢,添加配置命令,如:

compile project(':PullToRefresh')

小技巧:推薦在項目根目錄下新建一個文件夾袖裕,如extras文件夾曹抬,將所有Library庫文件都復制到該文件下,方便統(tǒng)一瀏覽管理急鳄,這樣上面兩步對應的配置命令將變成:

include ':app', ':extras:PullToRefresh'

compile project(':extras:PullToRefresh')

aar文件


aar其實也是一個壓縮文件谤民,相比jar文件,它能夠含帶res資源文件等疾宏,aar文件的引入方式有兩種:

  • Module形式引入

選擇File菜單张足,或者打開Project Structure界面,添加新的Module(New Module...)坎藐,選擇Import .JAR/.AAR Package兢榨,選擇目標aar文件導入。導入之后顺饮,在項目根目錄下會自動生成一個新的文件夾放置aar文件及其配置文件吵聪,如:

aar文件引入方式一.png

然后打開app module目錄下的build.gradle配置文件,在dependencies依賴項中添加配置即可:

compile project(':qiniu-android-sdk-7.2.0')

注意:這種引入方式無法查看aar文件中的代碼和資源等文件兼雄。

  • libs目錄中引入

將aar文件復制到app module目錄下的libs文件夾中吟逝,然后打開app module目錄下的build.gradle配置文件,在android一欄中添加依賴:

repositories {
    flatDir {
        dirs 'libs'
    }
}

然后再在dependencies一欄中添加:

compile(name:'qiniu-android-sdk-7.2.0', ext:'aar')

對應完整的app module目錄下的build.gradle配置文件如:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.feng.demo"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    repositories {
        flatDir {
            dirs 'libs'
        }
    }

}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile project(':extras:PullToRefresh')
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
    compile(name:'qiniu-android-sdk-7.2.0', ext:'aar')
}

重新同步赦肋,編譯工程块攒,然后可以在app的build目錄下生成對應aar的臨時文件励稳,可以看到aar文件中的jar文件、資源文件等囱井,看上去更像是一個解壓縮文件夾:

aar文件引入方式二.png

jcenter驹尼、maven倉庫文件


在項目根目錄的build.gradle文件中添加倉庫,如:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

然后再各個Module的build.gradle配置文件的dependencies項中添加依賴庞呕,格式為`compile 'name:version'`新翎,如:

compile 'com.squareup.okhttp3:okhttp:3.2.0'

總結(jié)


以上便是針對Android Studio引入第三方庫文件的幾種方式,它們各有利弊住练,總結(jié)來看地啰,就是在包含內(nèi)容、源碼修改讲逛、版本更新三方面上的差異亏吝。Jar文件只包含java代碼,不像aar等其他文件能夠包含res資源文件盏混;Library文件形式的引入可以讓開發(fā)人員根據(jù)自己的需求修改庫文件源碼蔚鸥,以達到適應自己項目的目的;而遠程倉庫形式的引入可以實現(xiàn)版本的自動檢測更新许赃,保證自己項目使用的第三方庫文件始終是最新版本株茶。

當然,一個優(yōu)秀的第三方庫一般會提供多種方式的引入图焰,考慮到Eclipse和AS用戶启盛,至少要包含Jar文件和Gradle構建這兩種,其他一些供應者會根據(jù)自己的功能模式提供其他引入方式技羔,比如七牛云存儲便提供了aar的引入方式僵闯。大家可以根據(jù)自己的項目需求選擇合適的引入方式,畢竟藤滥,適合自己的才是最好的鳖粟。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拙绊,隨后出現(xiàn)的幾起案子向图,更是在濱河造成了極大的恐慌,老刑警劉巖标沪,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榄攀,死亡現(xiàn)場離奇詭異,居然都是意外死亡金句,警方通過查閱死者的電腦和手機檩赢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來违寞,“玉大人贞瞒,你說我怎么就攤上這事偶房。” “怎么了军浆?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵棕洋,是天一觀的道長。 經(jīng)常有香客問我乒融,道長掰盘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任簇抵,我火速辦了婚禮庆杜,結(jié)果婚禮上射众,老公的妹妹穿的比我還像新娘碟摆。我一直安慰自己,他們只是感情好叨橱,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布典蜕。 她就那樣靜靜地躺著,像睡著了一般罗洗。 火紅的嫁衣襯著肌膚如雪愉舔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天伙菜,我揣著相機與錄音轩缤,去河邊找鬼。 笑死贩绕,一個胖子當著我的面吹牛火的,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淑倾,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼馏鹤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了娇哆?” 一聲冷哼從身側(cè)響起湃累,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碍讨,沒想到半個月后治力,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡勃黍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年琴许,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溉躲。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡榜田,死狀恐怖益兄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箭券,我是刑警寧澤净捅,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站辩块,受9級特大地震影響蛔六,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜废亭,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一国章、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧豆村,春花似錦液兽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽府瞄。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滞项,已是汗流浹背宝与。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工镇辉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雕沿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓妖碉,卻偏偏與公主長得像涌庭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嗅绸,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容