Android Studio 中 Gradle 依赖的统一管理

转载至http://blog.csdn.net/wolfking0608/article/details/79230026

为什么要对 Gradle 统一管理

在实际项目中,经常会出现一个 Project 中有多个 Module 的情况,如果每个 Module 又同时拥有相同的依赖,比如 v4 包,那么,每次 v4 包升级的时候修改多个 Module 中的 build.gradle 文件,更新其版本都是一件麻烦的事情,而且很有可能忘记某个 Module。所以,将依赖进行统一管理,对于一个 Project 下拥有多个 Module 的情况来说是非常必要的。

  代码如下:

      build.gradle

[html]  view plain  copy
  1. apply plugin: 'com.android.application'  
  2. //apply plugin: 'android-apt'  
  3. apply plugin: 'realm-android'  
  4.   
  5. android {  
  6.     compileSdkVersion rootProject.ext.android.compileSdkVersion  
  7.     buildToolsVersion rootProject.ext.android.buildToolsVersion  
  8.   
  9.     defaultConfig {  
  10.         applicationId rootProject.ext.android.applicationId  
  11.         minSdkVersion rootProject.ext.android.minSdkVersion  
  12.         targetSdkVersion rootProject.ext.android.targetSdkVersion  
  13.         versionCode rootProject.ext.android.versionCode  
  14.         versionName rootProject.ext.android.versionName  
  15.         multiDexEnabled = true  
  16.         vectorDrawables.useSupportLibrary = true  
  17.   
  18.   
  19.         //注解处理器  
  20.         javaCompileOptions {  
  21.             annotationProcessorOptions {  
  22.                 arguments = [moduleName: project.getName()]  
  23.             }  
  24.         }  
  25.     }  
  26.     //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。  
  27.     lintOptions {  
  28.         abortOnError false  
  29.     }  
  30.     signingConfigs {  
  31.         debug {  
  32.             storeFile file("$rootDir/zcy.keystore")  
  33.             storePassword "zcyghost"  
  34.             keyAlias "zcy.keystore"  
  35.             keyPassword "zcyghost"  
  36.         }  
  37.   
  38.         release {  
  39.             storeFile file("$rootDir/zcy.keystore")  
  40.             storePassword "zcyghost"  
  41.             keyAlias "zcy.keystore"  
  42.             keyPassword "zcyghost"  
  43.         }  
  44.     }  
  45.     buildTypes {  
  46.   
  47.         debug {  
  48.             // 显示Log  
  49.             buildConfigField "boolean", "LOG_DEBUG", "true"  
  50.   
  51.             versionNameSuffix "-debug"  
  52.             minifyEnabled false  
  53.             zipAlignEnabled false  
  54.             shrinkResources false  
  55.             signingConfig signingConfigs.debug  
  56.         }  
  57.   
  58.         release {  
  59.             // 不显示Log  
  60.             buildConfigField "boolean", "LOG_DEBUG", "true"  
  61.             //Zipalign优化  
  62.             zipAlignEnabled true  
  63.             // 移除无用的resource文件  
  64.             shrinkResources false  
  65.             //混淆  
  66.             minifyEnabled false  
  67.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
  68.             //签名  
  69.             signingConfig signingConfigs.release  
  70.         }  
  71.     }  
  72. //    applicationVariants.all { variant ->  
  73. //        variant.outputs.each { output ->  
  74. //            def outputFile = output.outputFile  
  75. //            if (outputFile != null && outputFile.name.endsWith('.apk')) {  
  76. //                def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")  
  77. //                output.outputFile = new File(outputFile.parent, fileName)  
  78. //            }  
  79. //        }  
  80. //    }  
  81. }  
  82. repositories {  
  83.     maven { url "https://jitpack.io" }  
  84. }  
  85. dependencies {  
  86.     compile fileTree(include: ['*.jar'], dir: 'libs')  
  87.     testCompile 'junit:junit:4.12'  
  88.     //base  
  89.     compile rootProject.ext.dependencies["appcompat-v7"]  
  90.   
  91.     //network  
  92.     compile rootProject.ext.dependencies["retrofit"]  
  93.     compile rootProject.ext.dependencies["retrofit-converter-gson"]  
  94.     compile rootProject.ext.dependencies["retrofit-adapter-rxjava"]  
  95.     compile rootProject.ext.dependencies["okhttp-logging-interceptor"]  
  96.     compile rootProject.ext.dependencies["glide"]  
  97.     compile rootProject.ext.dependencies["glide-transformations"]  
  98.     //rx  
  99.     compile rootProject.ext.dependencies["rxjava"]  
  100.     compile rootProject.ext.dependencies["rxandroid"]  
  101.   
  102.     //ui  
  103.     compile rootProject.ext.dependencies["easyrecyclerview"]  
  104.     compile rootProject.ext.dependencies["rollviewpager"]  
  105.     compile rootProject.ext.dependencies["smarttablayout"]  
  106.     compile rootProject.ext.dependencies["smarttablayout:utils"]  
  107.     compile rootProject.ext.dependencies["jiecaovideoplayer"]  
  108.     compile rootProject.ext.dependencies["cardstack"]  
  109.     compile rootProject.ext.dependencies["roundedimageview"]  
  110.     compile rootProject.ext.dependencies["cardview"]  
  111.     compile('com.github.afollestad.material-dialogs:core:0.8.5.4@aar') {  
  112.         transitive = true  
  113.     }  
  114.     compile('com.github.afollestad.material-dialogs:commons:0.8.5.4@aar') {  
  115.         transitive = true  
  116.     }  
  117.   
  118.     compile rootProject.ext.dependencies["iconics-core"]  
  119.     compile rootProject.ext.dependencies["material-design-iconic-typeface"]  
  120.     compile rootProject.ext.dependencies["fontawesome-typeface"]  
  121.     compile rootProject.ext.dependencies["foundation-icons-typeface"]  
  122.   
  123.     //di  
  124.     compile rootProject.ext.dependencies["dagger"]  
  125.     annotationProcessor rootProject.ext.dependencies["dagger-compiler"]  
  126.     compile rootProject.ext.dependencies["butterknife"]  
  127.     annotationProcessor rootProject.ext.dependencies["butterknife-compiler"]  
  128.     provided rootProject.ext.dependencies["annotation"]  
  129.     compile rootProject.ext.dependencies["annotations"]  
  130.   
  131.     //other  
  132.     compile rootProject.ext.dependencies["logger"]  
  133.     compile rootProject.ext.dependencies["fragmentation"]  
  134.     compile rootProject.ext.dependencies["androideventbus"]  
  135.   
  136.     compile rootProject.ext.dependencies["pgyersdk"]  
  137.     compile rootProject.ext.dependencies["slf4j"]  
  138.   
  139.     //canary  
  140.     debugCompile rootProject.ext.dependencies["blockcanary-android"]  
  141.     releaseCompile rootProject.ext.dependencies["blockcanary-no-op"]  
  142.     debugCompile rootProject.ext.dependencies["leakcanary-android"]  
  143.     releaseCompile rootProject.ext.dependencies["leakcanary-android-no-op"]  
  144.   
  145.   
  146. }  
 项目根目录下新建一个config.gradle文件

    代码如下:

[html]  view plain  copy
  1. ext {  
  2.   
  3.     android = [  
  4.             compileSdkVersion: 24,  
  5.             buildToolsVersion: '26.0.2',  
  6.             applicationId    : "xxx.xxx",  
  7.             minSdkVersion    : 17,  
  8.             targetSdkVersion : 24,  
  9.             versionCode      : 1,  
  10.             versionName      : "1.3.0"  
  11.     ]  
  12.   
  13.     def dependVersion = [  
  14.             support    : "24.0.0",  
  15.             retrofit   : "2.1.0",  
  16.             okhttp     : "3.3.1",  
  17.             dagger2    : "2.0.2",  
  18.             butterknife: "8.4.0",  
  19.             blockcanary: "1.2.1",  
  20.             leakcanary : "1.4-beta2"  
  21.     ]  
  22.   
  23.     dependencies = [  
  24.             //base  
  25.             "appcompat-v7"                   : "com.android.support:appcompat-v7:${dependVersion.support}",  
  26.             "recyclerview-v7"                : "com.android.support:recyclerview-v7:${dependVersion.support}",  
  27.             "design"                         : "com.android.support:design:${dependVersion.support}",  
  28.   
  29.             //ui  
  30.             "easyrecyclerview"               : "com.jude:easyrecyclerview:4.0.6",  
  31.             "rollviewpager"                  : "com.jude:rollviewpager:1.4.5",  
  32.             "glide"                          : "com.github.bumptech.glide:glide:3.7.0",  
  33.             "glide-transformations"          : "jp.wasabeef:glide-transformations:2.0.1",  
  34.             "smarttablayout"                 : "com.ogaclejapan.smarttablayout:library:1.6.1@aar",  
  35.             "smarttablayout:utils"           : "com.ogaclejapan.smarttablayout:utils-v4:1.6.1@aar",  
  36.             "jiecaovideoplayer"              : "fm.jiecao:jiecaovideoplayer:4.8.2",  
  37.             "cardstack"                      : "com.daprlabs.aaron:cardstack:0.3.1-beta0",  
  38.             "roundedimageview"               : "com.makeramen:roundedimageview:2.2.1",  
  39.             "cardview"                       : "com.android.support:cardview-v7:24.0.0",  
  40.             "material-dialogs"               : "com.github.afollestad.material-dialogs:core:0.8.5.4@aar",  
  41.             "material-dialogs:commons"       : "com.github.afollestad.material-dialogs:commons:0.8.5.4@aar",  
  42.   
  43.             "iconics-core"                   : "com.mikepenz:iconics-core:2.5.5@aar",  
  44.             "material-design-iconic-typeface": "com.mikepenz:material-design-iconic-typeface:2.2.0.1@aar",  
  45.             "fontawesome-typeface"           : "com.mikepenz:fontawesome-typeface:4.5.0.1@aar",  
  46.             "foundation-icons-typeface"      : "com.mikepenz:foundation-icons-typeface:3.0.0.1@aar",  
  47.             //rx  
  48.             "rxjava"                         : "io.reactivex:rxjava:1.1.6",  
  49.             "rxandroid"                      : "io.reactivex:rxandroid:1.2.1",  
  50.   
  51.             //network  
  52.             "gson"                           : "com.google.code.gson:gson:2.7",  
  53.             "retrofit"                       : "com.squareup.retrofit2:retrofit:${dependVersion.retrofit}",  
  54.             "retrofit-converter-gson"        : "com.squareup.retrofit2:converter-gson:${dependVersion.retrofit}",  
  55.             "retrofit-adapter-rxjava"       : "com.squareup.retrofit2:adapter-rxjava:${dependVersion.retrofit}",  
  56.             "okhttp"                         : "com.squareup.okhttp3:okhttp:${dependVersion.okhttp}",  
  57.             "okhttp-logging-interceptor"     : "com.squareup.okhttp3:logging-interceptor:${dependVersion.okhttp}",  
  58.             "glide"                          : "com.github.bumptech.glide:glide:3.7.0",  
  59.             "glide-okhttp3-integration"      : "com.github.bumptech.glide:okhttp3-integration:1.4.0@aar",  
  60.             "jsoup"                          : "org.jsoup:jsoup:1.10.1",  
  61.   
  62.             //di  
  63.             "dagger"                         : "com.google.dagger:dagger:${dependVersion.dagger2}",  
  64.             "dagger-compiler"                : "com.google.dagger:dagger-compiler:${dependVersion.dagger2}",  
  65.             "butterknife"                    : "com.jakewharton:butterknife:${dependVersion.butterknife}",  
  66.             "butterknife-compiler"           : "com.jakewharton:butterknife-compiler:${dependVersion.butterknife}",  
  67.             "annotation"                     : "org.glassfish:javax.annotation:10.0-b28",  
  68.   
  69.             //other  
  70.             "logger"                         : "com.orhanobut:logger:1.15",  
  71.             "fragmentation"                  : "me.yokeyword:fragmentation:0.7.10",  
  72.             "androideventbus"                : "org.simple:androideventbus:1.0.5.1",  
  73.             "annotations"                    : "org.jetbrains:annotations-java5:15.0",  
  74.             "pgyersdk"                       : "com.pgyersdk:sdk:2.4.0",  
  75.             "slf4j"                          : "org.slf4j:slf4j-api:1.7.12",  
  76.   
  77.             //canary  
  78.             "blockcanary-android"            : "com.github.moduth:blockcanary-android:${dependVersion.blockcanary}",  
  79.             "blockcanary-no-op"              : "com.github.moduth:blockcanary-no-op:${dependVersion.blockcanary}",  
  80.             "leakcanary-android"             : "com.squareup.leakcanary:leakcanary-android:${dependVersion.leakcanary}",  
  81.             "leakcanary-android-no-op"       : "com.squareup.leakcanary:leakcanary-android-no-op:${dependVersion.leakcanary}"  
  82.     ]  
  83.   
  84.   
  85. }  

项目的根目录的build.gradle

[html]  view plain  copy
  1. / Top-level build file where you can add configuration options common to all sub-projects/modules.  
  2. apply from: "config.gradle"   //注意:加上这句,才能生效  
  3.   
  4. buildscript {  
  5.     repositories {  
  6.         jcenter()  
  7.         mavenCentral()  
  8.         google()  
  9.     }  
  10.     dependencies {  
  11. //        classpath 'com.android.tools.build:gradle:2.2.3'  
  12.         classpath 'com.android.tools.build:gradle:3.0.0'  
  13. //        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'  
  14.         classpath "io.realm:realm-gradle-plugin:3.1.1"  
  15.   
  16.         // NOTE: Do not place your application dependencies here; they belong  
  17.         // in the individual module build.gradle files  
  18.     }  
  19. }  
  20.   
  21. allprojects {  
  22.     repositories {  
  23.         jcenter()  
  24.         maven { url "https://raw.githubusercontent.com/Pgyer/mvn_repo_pgyer/master" }  
  25.         google()  
  26.     }  
  27. }  
  28.   
  29. task clean(type: Delete) {  
  30.     delete rootProject.buildDir  
  31. }  


 按照以上方式进行配置即可! 

  参考自:https://www.jianshu.com/p/a092bcc3de7d  和http://blog.csdn.net/lsyz0021/article/details/54377150

https://www.jianshu.com/p/7c2b666d7302?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值