我仍在学习 gradle,但根据我所读到的内容,我想知道这是否可能。
我有多个 Android 应用程序(app1、app2、app3),它们依赖于 android 库(L)。 android 库 (L) 将依赖于 volley 等外部库,而应用程序将依赖于 picasso 等外部库。
我不希望每个应用程序有多个库和齐射的副本。这是我认为我的文件夹/gradle 结构的样子:
app1/
settings.gradle
build.gradle
src/
com/
test/
app2/
app3/
library/
settings.gradle
build.gradle
src/
com/
test/
external/
volley/
picasso/
但我不确定 app1 的 build.gradle 文件是什么样子,因为项目依赖项(库)似乎需要位于 app1 文件夹内。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5+'
}
}
apply plugin: 'android'
dependencies {
compile files('libs/android-support-v4.jar')
compile project(':library')
}
android {
buildToolsVersion "17.0"
compileSdkVersion 18
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aild.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
对我来说,使用 gradle 构建项目的最佳方式是什么?
你可以使用这个结构:
app1/
build.gradle
app2/
app3/
library/
src/
main
libs
build.gradle
settings.gradle
在设置.gradle中
include ':library' ,':app1' , ':app2', ':app3'
在app1/build.gradle中
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
}
dependencies {
//Library
compile project(':library')
// Support Libraries
compile 'com.android.support:support-v4:19.0.0'
//OkHttp
compile 'com.squareup.okhttp:okhttp:1.2.1'
//Picasso
compile 'com.squareup.picasso:picasso:2.1.1'
}
在库/build.gradle中
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
使用 maven 中的 aar(如 picasso),Gradle 将检测同一依赖项的多个实例,并为您管理事物。
对于 jar(如 Volley),你必须注意。您不能添加两次。
如果您的 Library 项目对 jar 存在依赖关系,那么 APK 项目将继承此依赖关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)