android多Modle统一配置Gradle

目前as使用gradle来配置项目工程,一般的项目为了模块化或者结构的清晰。
都会或多或少的使用多library(model)的方式。
so,问题来了。。。

我想升级下项目的支持的最小版本,编译版本等(下面的代码),要改很多处,怎么办呢?

 compileSdkVersion 23buildToolsVersion "23.0.2"defaultConfig {minSdkVersion 15targetSdkVersion 23versionCode 1versionName "1.0"}    

解决问题之前我们先说一下Gradle工作流程

  • 首先是初始化阶段。对multi-project build而言,就是执行settings.gradle文件
  • 配置阶段,在这个阶段就是解析每个model中的build.gradle文件
  • 在这里我叫它配置依赖关系阶段,在这里会更具项目的依赖关系,建立一定的顺序。
  • 执行任务阶段(即各种task)你也可以自己写task

其实在各个阶段我们都可以添加一些我们需要的东东。
这既是关键了,嘻嘻…
下面是解决方法:

1.修改local.properties文件

这个文件是properties文件,就是配置一下信息。
这样的话,等下次再修改的时候就只修改改文件就行了。
这里我简单的写一下,可以根据你的项目来添加或者删除。

ndk.dir=/Users/guxiuzhong/Library/Android/sdk/ndk-bundle
sdk.dir=/Users/guxiuzhong/Library/Android/sdk
minSdkVersion=15
targetSdkVersion=23
compileSdkVersion=23
buildToolsVersion=23.0.2
versionName=1.0
versionCode=1

其实就是把原来gradle中版本等抽取出来,形成键值对。

2.读取local.properties文件

我们新建一个目录叫selfgradle
如下图(注意结构)

然后新建一个init.gradle 文件,

//定义一个方法
def initProjectEnvironment() {//打印println "initialize  Gradle Environment ....."Properties properties = new Properties()File propertyFile = new File(rootDir.getAbsolutePath() + "/local.properties")properties.load(propertyFile.newDataInputStream())//configgradle.ext.minSdkVersion = properties.getProperty('minSdkVersion').toInteger().intValue()gradle.ext.targetSdkVersion = properties.getProperty('targetSdkVersion').toInteger().intValue()gradle.ext.compileSdkVersion = properties.getProperty('compileSdkVersion').toInteger().intValue()gradle.ext.buildToolsVersion = properties.getProperty('buildToolsVersion')gradle.ext.versionName = properties.getProperty('versionName')gradle.ext.versionCode = properties.getProperty('versionCode').toInteger().intValue()println "initialize  Gradle Environment completes..."
}//调用
initProjectEnvironment()

3.调用该文件

在哪里调用呢?
肯定是在构建项目的 初始化阶段也就是gradle的初始化阶段。
也就是settings.gradle文件
修改如下:

//和你的selfgradle文件结构放在哪里有关
apply from: './selfgradle/init.gradle'include ':app', ':librarya'

4.使用配置的信息

在你的主工程或者各个Modle下使用即可。

  compileSdkVersion gradle.ext.compileSdkVersionbuildToolsVersion gradle.ext.buildToolsVersiondefaultConfig {applicationId "com.gxz.gradledemo2"minSdkVersion gradle.ext.minSdkVersiontargetSdkVersion gradle.ext.targetSdkVersionversionCode gradle.ext.versionCodeversionName gradle.ext.versionName}

最后我们再次编译:
我们看到首先输出了我们打印的log,哈哈,是不是呢,妈妈再也不用担心我了…

。。。

android多Modle统一配置Gradle相关推荐

  1. android多渠道打包签名配置,Gradle For Android(二) 多渠道打包与签名配置

    <Gradle For Android(二) 多渠道打包与签名配置> 转载请注明来自 傻小孩b(gold.xitu.io/user/57e089-喜欢的能够关注我,不按期总结文章!您的支持 ...

  2. 【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )

    文章目录 一.AspectJ 下载 二.拷贝 aspectjrt.jar 到 Android Studio 三.配置 Gradle 和 Gradle 插件版本 四.配置 Gradle 构建脚本 一.A ...

  3. android studio cradle 本地配置

    刚刚从eclipse转androd studio遇到了很多坑,今天就帮大家来填填坑 自2013年5月16日,在I/O大会上,谷歌推出新的Android开发环境--Android Studio,并对开发 ...

  4. mac下Android studio配置gradle的路径

    2019独角兽企业重金招聘Python工程师标准>>> 最详细的mac下Android studio配置gradle的路径 转载于:https://my.oschina.net/sh ...

  5. android Q gradle配置,【Android】Android Studio启动配置gradle

    环境:debian 第一次创建Android工程的时候,现配置gradle,但是一般会卡在 Download Gradle directly from http://services.gradle.o ...

  6. Android开发之深入理解Android Studio构建文件build.gradle配置

    通过这篇文章的学习,你会对build.gradle文件有一个全新的认识,可以将TeachCourse文章提到的相关说明作为文档参考,方便在另一个module中引入,代码如下: apply plugin ...

  7. 怎么配置android远程服务器地址,在 Android studio 中 配置Gradle 进行 “动态编译期间,指定 远程服务器地址 ,生成多个安装包”...

    需求: 在产品开发中,经常需要发布各个版本,每个版本的服务器地址有不同的服务器地址.比如 开发服务器使用 192.168.1.232服务器, 测试服务器使用 192.168.1.245服务器, 正式上 ...

  8. Android Studio配置gradle时或导入别人项目时提示Could not find com.android.tools.build:gradle

    Android Studio配置gradle时或导入别人项目时提示Could not find com.android.tools.build:gradle 配置完环境变量后,cmd运行 gradle ...

  9. android studio gradle官网下载地址,Android Studio离线配置gradle(附gradle下载地址)

    导入新的android studio工程后经常由于多种缘由没法联网进行gradle下载,只能寻找离线手动配置gradle的方法,踩过很多坑后,最终经过如下几步android 解决:web 1. 下载与 ...

最新文章

  1. 青年生命科学论坛报告:扩增子和宏基因组数据分析与可视化流程—刘永鑫(北京210606)...
  2. 超越“机器人三定律” 人工智能期待新伦理
  3. 1821: 入学考试(1261采药)01背包
  4. 操作系统修炼秘籍(1):秘籍简介
  5. 2.x最终照着教程,成功使用OpenGL ES 绘制纹理贴图,添加了灰度图
  6. 漂亮的个人团队介绍网页模板
  7. 1· linux命令:查看依赖的共享库 - ldd命令
  8. shell中四大循环介绍及使用
  9. Container ViewController自定义转场控制器。
  10. vue:webpack + vue-cil 中 proxyTable 处理跨域
  11. SAP License:SaaS的生门到底在哪里?
  12. 键入强力推进并解决强转
  13. 远程会诊系统加持,长三角(上海)智慧互联网医院有多智慧?
  14. 京东价格监控软件开发技术探讨十五:通过酷Q和ZeroMQ实现推送变价变库消息到QQ群
  15. STM32系列(HAL库)——F103C8T6点亮1.44寸TFT-LCD彩屏
  16. 小程序源码:登录接口已修复梦想贩卖机V2 2.0.4 修复版
  17. 天津2019全国计算机二级,2019年上半年全国计算机等级考试报名啦
  18. 百度二年级手工机器人_小学二年级手工科技制作方案
  19. 谷歌提出MaskGIT:掩码生成图像Transformer
  20. RHCSA 2022/10/14

热门文章

  1. OpenCV基本图形绘制之圆
  2. 引用的本质是const指针
  3. Python 爬虫 (三) - Socket 网络编程
  4. sersync+rsync 数据同步配置
  5. 使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
  6. linux rsync配置文件参数详解
  7. C#实现WebService服务 项目完整总结
  8. 【Scheme归纳】4 高阶函数
  9. 【BZOJ】3396: [Usaco2009 Jan]Total flow 水流 (最大流)
  10. OPENCV数据结构体系和常用函数