所谓多工程,就是指一个工程依赖于另外一个android-library工程。
工程目录
+AppModule
+lib //各种jar包的位置
+libmodule //android-library工程
+……//各种安卓工程文件
+build.gradle //android-library工程的构建文件
+……//各种安卓工程文件
+settings.gradle //gradle构建配置。用来标示android-library工程的位置
+build.gradle //gradle构建文件
工程目录很重要,settings.gradle 和build.gradle 位置如果搞错了很麻烦。名字也很重要,搞错了名字也会报无厘头的错误。
使用方法:
1. Appmodule/settings.gradle
include 'libmodule' // 标示需要引入的library工程。如果不行,build的时候会找不到。
2. libmodule/build.gradle
/*
* Copyright (C) 2015 Baidu, Inc. All Rights Reserved.
*/
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
apply plugin: 'android'
android {
compileSdkVersion 20
buildToolsVersion "22.0.1"
defaultConfig {
versionCode 12
versionName "2xyx"
minSdkVersion 8
targetSdkVersion 17
}
dependencies {
compile files('libs/mathutil.jar') //标示需要引入的jar包
compile project('libmodule') //标示需要引入的工程
}
sourceSets { // 配置文件及文件夹路径
main {
manifest {
srcFile 'AndroidManifest.xml'
}
res {
srcDir 'res'
}
java {
srcDir 'src'
}
assets {
srcDir 'assets'
}
}
}
buildTypes {
release {
minifyEnabled false
}
}
}
line:28 compile project(‘libmodule’) //这里需要写成library工程的目录。
3. Appmodule/build.gradle
/*
* Copyright (C) 2015 Baidu, Inc. All Rights Reserved.
*/
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
apply plugin: 'android-library' //标示工程为library工程
android {
compileSdkVersion 20
buildToolsVersion "22.0.1"
defaultConfig {
versionCode 12
versionName "4"
minSdkVersion 8
targetSdkVersion 17
proguardFile "proguard-peoject.txt"
}
dependencies {
provided files('libs/mathutil.jar')//引入的jar包
}
sourceSets {
main {
manifest {
srcFile 'AndroidManifest.xml'
}
res {
srcDir 'res'
}
java {
srcDir 'src'
}
}
}
buildTypes {
release {
minifyEnabled false
}
}
}
line 13: 标示这个工程是library工程。
line 30: 标示引入的jar包。由于Appmodule里边已经包含了这个jar包,故此处用provided引入,标示只有编译依赖,导出时不包含这个jar包。(运行在平台上的插件经常会碰到这种情况,故此处特别说明一下)
完成上面3步的配置,你的工程就可以跑了。这里说的比较简单。下面是我的工程,有需要的童鞋下载后,直接gradle clean + gradle build就行了。命令后面加上–daemon可以大大提高运行速度,效果还是挺给力的。
工程地址是:https://github.com/LiangChaoPossible/AppModule
希望对大家有帮助。