Android Studio Jar、so、library項目依賴


Eclipse跟AS的不同

從Eclipse到AS不要帶着在Eclipse中的主觀色彩去在AS中使用,從項目的構成到構建是不同的,下面列舉在Eclipse和AS中的一些概念的區別:

WorkSpace和Project

Eclipse的WorkSpace和AS的Project說的可以說是一個東西,也就是說你可以把在AS中的Project理解為WorkSpace。
所以你在AS中new一個Project相當於在Eclipse中重開了一個WorkSpace,注意第一個箭頭,顯示模式為Project,建議剛用AS時用這種,方便了解里面的文件結構。

Project和Module

跟上面一樣,Eclipse中的一個個project也就是相當於AS中的一個個module。上圖的module_1和module_2就是我們習慣的eclipse中的一堆project了,把顯示模式換為Android之后就更為直觀了:

最下面的就是AS中整個Project中所有Gradle的配置了,當然包括所有module的配置了,括號的名字就表示build.gradle對應的配置對象。

Properties和Module Setting

Eclipse中的Properties也是跟AS的Module Setting對應的

可以看到這里可以像在Eclipse的Properties中一樣在這里配置一些東西,比如在Module Setting里給Module添加依賴(dependencies)信息也是可以的,並且可以直接搜maven的項目依賴。

jar

明白了上面的三點就可以很快上手了。首先就來說最簡單的添加jar包。

  • 可以跟在Eclipse中一樣,把jar包往Module里扔,再在jar右鍵add as library就可以了,然后最后在你的Module文件夾(像上面的module_1)右鍵make module一下就可以在代碼里用jar里的東西了。
  • 也可以自己手動到module里的build.gradle里添加dependencies,上面的方法做的方法本質上就是這種。
    1
    2
    3
    4
    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile fileTree(dir: 'D:\\repositories\\libs\\java', include: ['*.jar'])
    }

dir可以是電腦上的目錄文件。

library項目

有了前面跟Eclipse的比較后,類似地像在Eclipse中添加項目依賴一樣,被依賴的項目得是作為library。在Eclipse中我們是進入到Properties把這個項目設置為library(as a library),所以在AS中也是類似的,我們需要把一個module作為library(這個module可以自己新建module也可以導入module,此外我們是可以把一個AS的Project導進成module的或者直接導Project里的單個module也可以),完成后到這個module(我這里是把module_2作為library)把apply plugin: 'com.android.application'改為apply plugin: 'com.android.library'再然后去掉(刪除)module_2的build.gradle里的applicationId "com.example.mrzheng.as"(一個library不需要這個,不然make project或make module時會報錯)。
build.gradle(module_2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.2'
}

 

到這里先確認下你的project(AS)的settings.gradle里有沒把module都include進去,沒有的話加上:

1
include ':module_1', ':module_2'

 

最后就可以在module_1里就添加library依賴(module_2)了。進入module_1的build.gradle,找到dependencies加上compile project(':module_2')

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
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
applicationId "com.example.mrzheng.as"
minSdkVersion 10
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile fileTree(dir: 'D:\\repositories\\libs\\java', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.2'
compile project(':module_2')
}

 

現在make module一下就可以使用依賴的項目了(module_2)。

so

之前的版本不知道怎么樣,現在正式版的AS添加so打包進apk里的lib里是很簡單的,我們只需要把so文件放到libs文件夾里的對應cpu文件夾里,最后在module的build.gradle里加上jni的sourceSets配置:jniLibs.srcDirs = ['libs'],完整代碼看上面的build.gradle(module_1)代碼片。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM