app的bulid.gradle文件配置详情
apply plugin: 'com.android.application'//说明module的类型,com.android.application为程序,com.android.library为库
android {
compileSdkVersion 22//编译的SDK版本
buildToolsVersion "22.0.1"//编译的Tools版本
defaultConfig {//默认配置
applicationId "com.nd.famlink"//应用程序的包名
minSdkVersion 8//支持的最低版本
targetSdkVersion 19//支持的目标版本
versionCode 52//版本号
versionName "3.0.1"//版本名
}
sourceSets {//目录指向配置
main {
manifest.srcFile 'AndroidManifest.xml'//指定AndroidManifest文件
java.srcDirs = ['src']//指定source目录
resources.srcDirs = ['src']//指定source目录
aidl.srcDirs = ['src']//指定source目录
renderscript.srcDirs = ['src']//指定source目录
res.srcDirs = ['res']//指定资源目录
assets.srcDirs = ['assets']//指定assets目录
jniLibs.srcDirs = ['libs']//指定lib库目录
}
debug.setRoot('build-types/debug')//指定debug模式的路径
release.setRoot('build-types/release')//指定release模式的路径
}
signingConfigs {//签名配置
release {//发布版签名配置
storeFile file("fk.keystore")//密钥文件路径
storePassword "123"//密钥文件密码
keyAlias "fk"//key别名
keyPassword "123"//key密码
}
debug {//debug版签名配置
storeFile file("fk.keystore")
storePassword "123"
keyAlias "fk"
keyPassword "123"
}
}
buildTypes {//build类型
release {//发布
minifyEnabled true//混淆开启
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'//指定混淆规则文件
signingConfig signingConfigs.release//设置签名信息
}
debug {//调试
signingConfig signingConfigs.release
}
}
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/MANIFEST.MF'
}
lintOptions {
abortOnError false//lint时候终止错误上报,防止编译的时候莫名的失败
}
}
dependencies {
compile fileTree(dir: 'libs', exclude: ['android-support*.jar'], include: ['*.jar']) //编译lib目录下的.jar文件
compile project(':Easylink')//编译附加的项目
compile project(':ImageLibrary')
compile project(':ImageResLibrary')
compile project(':Ofdmtransport')
compile project(':PullToRefreshLibrary')
compile project(':RecorderLibrary')
compile project(':WebSocket')
compile project(':WidgetLibrary')
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'//编译来自Jcenter的第三方开源库
}
如果项目过大,需要统一在主工程模块中配置
如果生成独立的私有库,然后在添加依赖
我们可以在主模块中这么配置
config.gradle
//全局扩展参数
ext {
//默认参数配置
config = [GROUP : "com.bulktransit.andlibrary",
NEXUS_RELEASES : "http://nexus.sf-express.com/nexus/content/repositories/releases/",//#发布releases版的地址
NEXUS_SNAPSHOTS : "http://nexus.sf-express.com/nexus/content/repositories/snapshots/",//#发布snapshots版的地址
POM_PACKAGING : "aar",
POM_PACKAGING_AWB : "awb",
NEXUS_USERNAME : "deploy",
NEXUS_PASSWORD : "deploy123",
POM_DEVELOPER_ID : "bulktransit",
POM_DEVELOPER_NAME: "bulktransit"
]
allprojects {
repositories {
maven { url config.NEXUS_RELEASES }
maven { url config.NEXUS_SNAPSHOTS }
}
}
//Android编译版本管理
android = [compileSdkVersion: 25,
buildToolsVersion: "25.0.2",
minSdkVersion : 16,
targetSdkVersion : 25,
versionCode : 1,
versionName : "1.0"]
libsversion = [
mvp : "1.0.01-SNAPSHOT",//mvp基础
unloading : "1.0.11-SNAPSHOT",
sorting : "1.0.11-SNAPSHOT",
httprequest: "1.0.11-SNAPSHOT",
baseutils : "1.0.11-SNAPSHOT",
commui : "1.0.11-SNAPSHOT",
dbres : "1.0.11-SNAPSHOT",
]
libsname = [
mvp : "mvp",
unloading : "unloading",
sorting : "sorting",
httprequest: "httprequest",
baseutils : "baseutils",
commui : "commui",
dbres : "dbres",
]
dependencies = [
//第三方依赖库,所有模块使用的第三方库统一配置在这里
"appcompat-v7" : 'com.android.support:appcompat-v7:25.3.1',
"recyclerview" : 'com.android.support:recyclerview-v7:25.3.1',
/*retrofit*/
"retrofit" : 'com.squareup.retrofit2:retrofit:2.0.2',
"adapter-rxjava" : 'com.squareup.retrofit2:adapter-rxjava:2.0.2',
"okhttp3-logging" : 'com.squareup.okhttp3:logging-interceptor:3.4.1',
"gson" : 'com.google.code.gson:gson:2.+',
"butterknife" : 'com.jakewharton:butterknife:8.5.1',
"butterknife-compiler": 'com.jakewharton:butterknife-compiler:8.5.1',
"greendao" : 'org.greenrobot:greendao:3.2.0',
/*rxjava*/
"rxjava" : 'io.reactivex:rxjava:1.1.0',
"rxandroid" : 'io.reactivex:rxandroid:1.1.0',
//sf公用依赖,比如工具类库,网络请求库
"mvp" : "${config.GROUP}:${libsname.mvp}:${libsversion.mvp}",
"httprequest" : "${config.GROUP}:${libsname.httprequest}:${libsversion.httprequest}",
"baseutils" : "${config.GROUP}:${libsname.baseutils}:${libsversion.baseutils}",
"commui" : "${config.GROUP}:${libsname.commui}:${libsversion.commui}",
//业务模块
"unloading" : "${config.GROUP}:${libsname.unloading}:${libsversion.unloading}",
"sorting" : "${config.GROUP}:${libsname.sorting}:${libsversion.sorting}"
]
}
//打印当前的library的版本号,编译操作者检查,根据此日志在提交的时候要核对版本正确性
ext.libsversion.each { //调用它的each函数,只要传入一个Closure就可以了。
println "###当前版本: ${it}"
而后在app中的build.gradle模块直接引用,比如
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile(rootProject.ext.dependencies["appcompat-v7"])
compile(rootProject.ext.dependencies["greendao"])
}