以下是一个简易的引用演示:
dependencies {
//
compile 'com.android.support:appcompat-v7:24.2.1'
}
就算是公司内部自行开发的 Library,也能在编译、输出 jar 后,上传到私有的 Repository 中。再经由同样的模式,在 build.gradle
中新增私有 Repository、要引用的 Library 资讯,就可以于 Coding 时使用 Library 中的功能。
例如:
repositories {
maven {
//
url "http://192.168.1.1”
}
}
所幸在 Gradle 的设定中,除了使用 Repository 之外,还提供直接引用 jar 的配置方法。在 Android Studio 预设产生的 build.gradle
中都会有以下的内容:
dependencies {
//
compile fileTree(include: ['*.jar'], dir: 'libs')
}
这个内容代表了只要把 jar 的文件放到 Project 结构中名为 libs
的目录下,在 Coding 时就可以直接使用 jar 内提供的功能。
只是光这样还是会有一些不足之处,若是以开发为业,势必不可能只有一个 Project。团队内部共用的 jar 在每开一个 Project 就要再复制一份到其下的 libs
目录中,似乎不是一个好的 Dependency 管理模式,而把 jar 集中在所有项目之外的需求就应运而生。
这时就出现了一个疑问,原先的配置只有把 jar 放在 Project 内的 libs
之下,在 Project 之外的 jar 要如何设定 Dependency?
面对这一个问题,其实解决的方法也很简单。之前 build.gradle
的例子中,dir: 'libs'
代表的是相对于 Project 的位置,也就是在 Project 之下的 libs 路径。当 jar 在 Project 之外时,只要调整内容为 Project 之上的路径即可。
dependencies {
//
compile fileTree(include: ['*.jar'], dir: ‘../../shared’)
}
以上面的例子来说,是假定所有的共用 jar 都被放在与 Project 平行的 shared
路径之下,以下是目录结构的示意:
+ Project A
+ app
+ libs
+ src
+ androidTest
+ main
+ test
+ Project B
+ app
+ libs
+ src
+ androidTest
+ main
+ test
+ shared
- *.jar
透过以上的方式,就可以达成类似 Repository 的效果,当 shared
内的 jar 被更新后,Project A 与 Project B 都可以在 Source Code 中使用最新的功能。而当这二个 Project 所使用的 jar 有版本不一致的情况时,只要分别把对应版本的 jar 放到所属 Project 的 libs 路径下即可。