Android 插件化开发,依赖配置统一规范

Android 插件化开发,依赖配置统一规范

Gradle 插件开发 Kotlin 规范 版本


为什么要对 Gradle 统一管理

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

如何管理

Google推荐单独使用一份.gradle 文件来管理引用库;假如我们的项目结构是这样的:

root 
--module1 
--build.gradle 
--module2 
--build.gradle 
... 
--build.gradle

常见的一般是使用config.gradle

root 
--module1 
--build.gradle 
--module2 
--build.gradle 
... 
--build.gradle 
--config.gradle

在config.gradle中添加如下代码:

ext { 
android = [ 
compileSdkVersion: 23, 
buildToolsVersion: "24.0.0 rc1", 
applicationId : "com.sivan.rxretrofitdemo", 
minSdkVersion : 16, 
targetSdkVersion : 23, 
versionCode : 1, 
versionName : "1.0" 
]

dependencies = [ 
"appcompat-v7" : "com.android.support:appcompat-v7:23.3.0", 
"rxjava" : "io.reactivex:rxjava:1.1.3", 
"rxandroid" : "io.reactivex:rxandroid:1.1.0", 
"retrofit" : "com.squareup.retrofit2:retrofit:2.0.0-beta4", 
"gson" : "com.google.code.gson:gson:2.6.2", 
"converter-gson" : "com.squareup.retrofit2:converter-gson:2.0.0-beta4", 
"adapter-rxjava" : "com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4", 
"butterknife" : "com.jakewharton:butterknife:7.0.1", 
"logging-interceptor": "com.squareup.okhttp3:logging-interceptor:3.0.1" 
] 
}

ok,依赖写完了,那如何在项目中依赖引用呢? 
在项目的根目录下的build.gradle中添加apply from : "config.gradle"

接下来就是见证奇迹的时刻,开始使用

  1. android 节点的使用 

    android { 
    compileSdkVersion rootProject.ext.android.compileSdkVersion 
    buildToolsVersion rootProject.ext.android.buildToolsVersion 
    defaultConfig { 
    applicationId rootProject.ext.android.applicationId 
    minSdkVersion rootProject.ext.android.minSdkVersion 
    targetSdkVersion rootProject.ext.android.targetSdkVersion 
    versionCode rootProject.ext.android.versionCode 
    versionName rootProject.ext.android.versionName 
    }


  1. dependencies 节点的使用

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile rootProject.ext.dependencies["appcompat-v7"] 
compile rootProject.ext.dependencies["rxjava"] 
compile rootProject.ext.dependencies["rxandroid"] 
compile rootProject.ext.dependencies["gson"] 
compile rootProject.ext.dependencies["converter-gson"] 
compile rootProject.ext.dependencies["adapter-rxjava"] 
compile rootProject.ext.dependencies["retrofit"] 
compile rootProject.ext.dependencies["butterknife"] 
}

对此这是其中一种方式,但是这种方式你们有没有发现不方便之处,接下来我说一下个人的见解

  1. 该依赖管理方式对于单个项目可能也看不出什么弊端,但是对于一个公司而言,不可能只是维护一个项目而已。如果项目有多个,那么每个项目都要复制一份,这样子加入某个库修改了,或者升级了。那么就要一个一个区修改
  2. 在你使用的时候,发现没有,没有autocomplete自动提示功能,简直了。。。;写的时候要不断切换look下,这样子极为不便。

所以下面介绍的一种就是通过插件的形式去实现【Gradle Plugin】 
具体如何开发插件这个知识,请看Plugin插件开发流程。


附上Demo地址:点击打开链接

+

你可能感兴趣的:(依赖管理,Android,Android开发)