天天看點

android第三方庫格式,【原創】Android 引用第三方庫檔案大全

【原創】Android 引用第三方庫檔案大全

【原創】Android 引用第三方庫檔案大全

不知不覺,使用Android Studio開發App已有一段時間了,接觸到了各式各樣的第三方庫檔案的引入,也是時候總結一波了。

使用android Studio開發Android應用時,避免不了需要借助Gradle引入各式各樣的第三方庫檔案,幫助我們更好的開發App,常見的引入方式有:Jar檔案,so檔案,Library庫檔案,aar檔案,遠端jcenter、maven倉庫檔案。這幾種引入方式各有利弊,對應的gradle配置也有所不同,本文根據平時的使用經驗,做一個簡單的總結,幫助大家更好的利用Gradle引入第三方庫檔案。

jar檔案

将jar檔案複制至app module目錄下的libs檔案夾下,然後打開app module目錄下的build.gradle配置檔案,在dependencies項中添加配置指令,這裡有兩種配置方式可供選擇:

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

so檔案

Gradle 舊版本

将so檔案(包含arm64等檔案夾)複制app module下面的libs檔案夾中,和jar檔案類似,然後在build.gradle的android欄目下添加一個task:指定so檔案的目錄,并将其轉化為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)

}1

2

3

4

5

6

7

8

9

10

111

2

3

4

5

6

7

8

9

10

11Gradle 新版本

新版Gradle實作了自動打包編譯so檔案的功能,并且為so檔案指定了預設的目錄app/src/main/jniLibs,當然預設是沒有這個檔案夾的,我們隻需要建立一個jniLibs檔案夾,并将so檔案複制到該檔案夾下,編譯運作即可。

通常,為了更好地管理第三方庫檔案,或者更簡單地将Eclipse項目轉化為Android Studio項目,建議将jar檔案和so檔案放在一起,統一擱置在app/libs目錄下,此時,我們隻需要在build.gradle的android一欄中添加如指令,指定so檔案的目錄即可:

sourceSets {

main {

jniLibs.srcDirs = ['libs']

}

}1

2

3

4

51

2

3

4

5

通過這種方式,編譯過後,将項目目錄切換至Android試圖,可以看到,app目錄下多了一個jniLibs檔案夾,裡面包含了引入的so檔案和jar包,如下圖所示,表示內建成功。

android第三方庫格式,【原創】Android 引用第三方庫檔案大全

Library庫檔案

将第三方Library庫檔案複制到項目根目錄下,打開項目根目錄下的settings.gradle檔案,添加配置指令,如:

include ':app', ':PullToRefresh'11

然後打開app module目錄下的build.gradle,添加配置指令,如:

compile project(':PullToRefresh')11

小技巧:推薦在項目根目錄下建立一個檔案夾,如extras檔案夾,将所有Library庫檔案都複制到該檔案下,友善統一浏覽管理,這樣上面兩步對應的配置指令将變成:

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

compile project(':extras:PullToRefresh')11

aar檔案

aar其實也是一個壓縮檔案,相比jar檔案,它能夠含帶res資源檔案等,aar檔案的引入方式有兩種:

Module形式引入

選擇File菜單,或者打開Project Structure界面,添加新的Module(New Module…),選擇Import

.JAR/.AAR Package,選擇目标aar檔案導入。導入之後,在項目根目錄下會自動生成一個新的檔案夾放置aar檔案及其配置檔案,如:

android第三方庫格式,【原創】Android 引用第三方庫檔案大全

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

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

注意:這種引入方式無法檢視aar檔案中的代碼和資源等檔案。

libs目錄中引入

将aar檔案複制到app module目錄下的libs檔案夾中,然後打開app module目錄下的build.gradle配置檔案,在android一欄中添加依賴:

repositories {

flatDir {

dirs 'libs'

}

}1

2

3

4

51

2

3

4

5

然後再在dependencies一欄中添加:

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

對應完整的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')

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

381

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

重新同步,編譯工程,然後可以在app的build目錄下生成對應aar的臨時檔案,可以看到aar檔案中的jar檔案、資源檔案等,看上去更像是一個解壓縮檔案夾:

android第三方庫格式,【原創】Android 引用第三方庫檔案大全

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

}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

181

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

然後再各個Module的build.gradle配置檔案的dependencies項中添加依賴,格式為`compile

‘name:version’`,如:

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

因為AndroidStuduio加入對Library Module的安全管理機制,是以不能直接右鍵項目找到Delete(Delete菜單壓根找不到)進行删除。

解決辦法:在項目清單直接右鍵你要删除的Library Module(其他類型Module也可以這樣操作),找到菜單Open Module Settings,在彈出的Project Structure視窗中找到要删除的Library Module,點選左上角的 - 号圖示,移除後點選OK,這時Library Module 失去依賴,最後右鍵項目中的Library Module 這時可以看到Delete菜單了,點選進行最後一步的删除,搞定!

11

因為AndroidStuduio加入對Library Module的安全管理機制,是以不能直接右鍵項目找到Delete(Delete菜單壓根找不到)進行删除。

解決辦法:在項目清單直接右鍵你要删除的Library Module(其他類型Module也可以這樣操作),找到菜單Open Module Settings,在彈出的Project Structure視窗中找到要删除的Library Module,點選左上角的 - 号圖示,移除後點選OK,這時Library

Module 失去依賴,最後右鍵項目中的Library Module 這時可以看到Delete菜單了,點選進行最後一步的删除,搞定!

因為AndroidStuduio加入對Library Module的安全管理機制,是以不能直接右鍵項目找到Delete(Delete菜單壓根找不到)進行删除。

【原創】Android 引用第三方庫檔案大全相關教程