Gradle目录解析

Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。

Gradle这个工具集成了构建,测试,发布和其他,比如软件打包,生成注释文档等功能。

之前eclipse使用ant进行软件的构建功能,需要配置一大堆的xml,但是在gradle中就不需要了。

目前主流的打包方式有ant,maven,gradle。gradle是近几年发展起来的自动化构建工具,解决ant构建上的繁琐代码。

比如在ant上发布多渠道的包,你需要自己写脚本替换渠道名称,而在gradle中就不需要了。已经内建支持多渠道打包。

Gradle的文件结构

  • ./build.gradle
  • ./gradle.properties
  • ./gradlew
  • ./gradlew.bat
  • ./local.properties
  • ./setting.gradle
  • ./XXX.iml
  • ./app/build.gradle
  • ./app/app.iml
  • ./app/proguard-rules.pro

./builld.gradle 和 ./app/build.grade

gradle项目自动编译的时候要读取的配置文件。比如指定项目的依赖包等。

build.grade有两个,一个是全局的,一个是在模块里面。

全局的build.grade主要设置的是声明仓库源,gradle的版本号说明等。

./build.gradle

buildscript {
repositories {
// 声明仓库源,比如我们构建了一个安卓的库,现在想要把库上传到jcenter中供别人一起使用,则可以上传到jcenter中
// 具体上传步骤见:http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0227/2502.html
jcenter()
}
dependencies {
// 说明gradle的版本号
classpath 'com.android.tools.build:gradle:1.3.0' // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
} // 所有项目都继承这个配置
allprojects {
repositories {
mavenLocal()
jcenter()
}
}

./app/build.grade 设置了模块的gradle构建配置

// 说明这个模块是安卓项目,如果是多模块开发,有可能有的值为java/war
apply plugin: 'com.android.application' // 配置了所有android构建的参数
android {
// 编译使用SDK版本
compileSdkVersion 23
// 编译工具的版本
buildToolsVersion "23.0.1" defaultConfig {
// 包名
applicationId "com.awesomeproject"
// sdk最低支持版本
minSdkVersion 16
// 目标SDK版本,如果目标设备的API版本正好等于此数值,就不会为此程序开启兼容性检查判断的工作
targetSdkVersion 22
// 版本号
versionCode 1
versionName "1.0"
// 原生
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
buildTypes {
// 发布时候的设置
release {
// 是否进行混淆
minifyEnabled false
// 混淆使用文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
} // 依赖的工具包
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.facebook.react:react-native:0.11.+'
}

./app/proguard-rules.pro

这个和上面说的一样混淆文件

./gradle.properties

grade的运行环境配置,比如使用多少内存之类的。

./gradlew 和 ./gradlew.bat

自动完成 gradle 环境的脚本,在linux和mac下直接运行gradlew会自动完成gradle环境的搭建。

./local.properties

配置SDK或者NDK的环境路径,各个机器上这个变量可能都是不一样的,所以不应该进入版本库

./setting.gradle

整个项目的管理,比如这个项目包含哪些模块等。

./XXX.iml 和 ./app/app.iml

iml是Intellij模块文件。Intellij是一款JAVA的IDE。Android Studio是基于开源的Intellij IDEA开发出来的IDE。

所以Android Studio有的IDE功能是需要有.iml才能使用的。比如我们删除了iml文件,可能就在Android Studio中看不到一些目录了。

参考

IDEA 及 Gradle 使用总结

使用 Gradle 管理你的 Android Studio 工程

史上最详细的Android Studio系列教程四--Gradle基础

用Gradle 构建你的android程序

Gradle目录解析的更多相关文章

  1. 3.1、Ubuntu系统中jmeter的安装和目录解析

    ​以下内容亲测,如果不对的地方,欢迎留言指正,不甚感激.^_^祝工作愉快^_^ Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测 ...

  2. JMeter的安装和目录解析

    Ubuntu系统中jmeter的安装和目录解析 作为一个Linux新手,在使用jdk时,或许会安装配置多次仍然导致无法使用情况(如无法登录系统等),请按如下步骤一步一步安装并配置 相关软件下载地址 J ...

  3. IIS6目录解析漏洞的实验

    ​​​​​​​​​​Windows 打开IIS管理器的方式 这个是网站IIS网站目录 右击默认网站中的属性,可以查看网站的属性,比如网站根目录,或者是端口 这个是网站的目录C:\www,有三个文件分别 ...

  4. Gradle详细解析***

    前言 对于Android工程师来说编译/打包等问题立即就成痛点了.一个APP有多个版本,Release版.Debug版.Test版.甚至针对不同APP Store都有不同的版本.在以前ROM的环境下, ...

  5. Linux 分区和目录解析

    转自:http://www.cnblogs.com/apprentice89/archive/2012/12/17/2821332.html 计算机中存放信息的主要的存储设备就是硬 盘,但是硬盘不能直 ...

  6. Linux常用命令,目录解析,思维导图

    文章目录 下载地址 Linux常用命令 linux系统常用快捷键及符号命令 Linux常用Shell命令 Linux系统目录解析 Shell Vi全文本编辑器 Linux安装软件 Linux脚本编制编 ...

  7. Linux内核目录解析~

    以前进过一些公司看到一些服务器,把环境搭建都搭建在etc里面,而且都乱套了.在找PHP配置文件和apache的conf文件都难找到, 我们应该大致的了解下linux的文件分布 /etc : 放置系统重 ...

  8. Gradle目录结构详解

    环境:window 7 64 Gradle 版本: gradle 3.0 创建文件夹,并初始化 mkdir gradle_dir && cd gradle_dir gradle ini ...

  9. hexo+next主题目录解析

    默认目录结构: . ├── .deploy ├── public ├── scaffolds ├── scripts ├── source | ├── _drafts | └── _posts ├── ...

随机推荐

  1. 解剖SQLSERVER 第十三篇 Integers在行压缩和页压缩里的存储格式揭秘(译)

    解剖SQLSERVER 第十三篇    Integers在行压缩和页压缩里的存储格式揭秘(译) http://improve.dk/the-anatomy-of-row-amp-page-compre ...

  2. netfx_NativeCompilation.msi 传说中的 .NET Native 预览版的文件列表

    卷 D 的文件夹 PATH 列表 卷序列号为 000000F6 CE0F:AB46 D:. │ LIST.TXT │ ├─12.0 │ └─Microsoft.Common.targets │ ├─I ...

  3. React Native02-开始运行 Android篇

    1. 开始运行 1)用命令进入到新建的文件目录下,比如HelloWorld,再输入 react-native start: 在等待一段时间后,我们看到最后面有个地址,说明已经运行成功了. 我们输入地址 ...

  4. JS数组的concat、push等方法,操作的是地址指针,而非内存操作

    var a = [{x:1}, {y:1}, {z:3}]; var b = a.concat(['gg', 'ff']); var c = []; c.push(a[1]); console.log ...

  5. Java中常量小知识

    常量分类:常量分为静态常量,非静态常量(全局常量),局部常量 静态常量:要么定义的时候赋初值,要么在静态代码块中赋值 非静态常量:要么在定义的时候赋初值,要么在代码块中赋值 局部常量:可以在定义时赋初 ...

  6. 1.1.1. Atitit Cocos2d-JS v3.x的问题

    1.1.1. Atitit Cocos2d-JS v3.x的问题   1.1. Api 兼容性 场景切换的api都不兼容了...  删除了比较多的api...可以dep啊.. 1.2. gui布局,, ...

  7. github无法访问?试试修改hosts

    github国内无法访问时,可以试试如下修改hosts,亲测有效: 204.232.175.78 http://documentcloud.github.com 207.97.227.239 http ...

  8. 搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展

    上一篇:搭建LNAMP环境(四)- 源码安装PHP7 一.安装Redis 1.创建redis用户组和用户 groupadd redis useradd -r -g redis -s /sbin/nol ...

  9. C++11模板类使用心得

    1.推荐使用std::shared_ptr<TaskT>代替指针TaskT*使用,shared_ptr是一种智能指针,能自主销毁释放内存,在c++11中被引入,在多线程编程中有很大的用处, ...

  10. 使用uGUI制作游戏内2D动画

    在3D的游戏中制作2D的效果是一个很常见的需求,我在很早前玩过一个叫做艾尔之光的游戏,里面就大量的使用了这个技术.就像下面图片中的伤害数字,这些数字往往还是有一些动画效果在里面的,比如大小的变化,颜色 ...