Gradle目录解析
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目录解析的更多相关文章
- 3.1、Ubuntu系统中jmeter的安装和目录解析
以下内容亲测,如果不对的地方,欢迎留言指正,不甚感激.^_^祝工作愉快^_^ Jmeter是一个非常好用的压力测试工具. Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测 ...
- JMeter的安装和目录解析
Ubuntu系统中jmeter的安装和目录解析 作为一个Linux新手,在使用jdk时,或许会安装配置多次仍然导致无法使用情况(如无法登录系统等),请按如下步骤一步一步安装并配置 相关软件下载地址 J ...
- IIS6目录解析漏洞的实验
Windows 打开IIS管理器的方式 这个是网站IIS网站目录 右击默认网站中的属性,可以查看网站的属性,比如网站根目录,或者是端口 这个是网站的目录C:\www,有三个文件分别 ...
- Gradle详细解析***
前言 对于Android工程师来说编译/打包等问题立即就成痛点了.一个APP有多个版本,Release版.Debug版.Test版.甚至针对不同APP Store都有不同的版本.在以前ROM的环境下, ...
- Linux 分区和目录解析
转自:http://www.cnblogs.com/apprentice89/archive/2012/12/17/2821332.html 计算机中存放信息的主要的存储设备就是硬 盘,但是硬盘不能直 ...
- Linux常用命令,目录解析,思维导图
文章目录 下载地址 Linux常用命令 linux系统常用快捷键及符号命令 Linux常用Shell命令 Linux系统目录解析 Shell Vi全文本编辑器 Linux安装软件 Linux脚本编制编 ...
- Linux内核目录解析~
以前进过一些公司看到一些服务器,把环境搭建都搭建在etc里面,而且都乱套了.在找PHP配置文件和apache的conf文件都难找到, 我们应该大致的了解下linux的文件分布 /etc : 放置系统重 ...
- Gradle目录结构详解
环境:window 7 64 Gradle 版本: gradle 3.0 创建文件夹,并初始化 mkdir gradle_dir && cd gradle_dir gradle ini ...
- hexo+next主题目录解析
默认目录结构: . ├── .deploy ├── public ├── scaffolds ├── scripts ├── source | ├── _drafts | └── _posts ├── ...
随机推荐
- Android 开发必备知识:我和 Gradle 有个约会
腾讯Bugly特约作者:霍丙乾 0.讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太久,研究 ...
- JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
开发之前需要考虑系统的差异性,比如ios手机没有回退键,所以在开发时一定要考虑二级界面需要有回退键,否则ios的手机就会陷入到这个页面出不去了.安卓系统有回退键,针对这个情况需要要求用户在3秒钟之内连 ...
- angularjs移除不必要的$watch
在我们的web page,特别是移动设备上,太多的angular $watch将可能导致性能问题.这篇文章将解释如何去移除额外的$watch提高你的应用程序性能. $watch如果不再使用,我们最好将 ...
- Nim教程【九】
向关注这个系列的朋友们,道一声:久违了! 它并没有被我阉掉,他一定会得善终的,请各位不要灰心 Set集合类型 为了在特殊场景下提高程序的性能设置了Set类型,同时也是为了保证性能,所以Set只能容纳有 ...
- C#最良心脚本语言C#Light/Evil,Xamarin\WP8\Unity热更新最良心方案,再次进化.
C#Light的定位是嵌入式脚本语言,一段C#Light脚本是一个函数 C#Evil定位为书写项目的脚本语言,多脚本文件合作,可以完全用脚本承载项目. C#Light/Evil 使用完全C#一致性语法 ...
- 继续SecureString
上回写了关于SecureString的特征和为什么我们要使用它,这篇继续研究研究这个SecureString. **主要内容:** - SecureString与String之间的转换 - Secur ...
- CSDN CODE平台,中国版Github简要使用说明!(多图慎入)
楼主说 以前一直看到别人在用github发布自己的代码,各种牛逼,各种羡慕嫉妒恨.最后终于受不了了,也去注册了一个,注册到没什么难度.然后就没有然后了... 完全看不懂,不知道怎么用. 一次偶然的机会 ...
- JavaScript 数组详解
在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只 ...
- IOS Animation-KeyPath值
IOS Animation-KeyPath值 keyPath值 说明 值类型 position 移动位置 CGPoint opacity 透明度 0-1 bounds 变大与位置 CGRect bou ...
- 爱上MVC~一个Action多套View模版的设计
回到目录 模块化 这个问题是在做模块化设计时出现的,在Lind.DDD.Plugins模块里,需要对应的模块实体,模块管理者,模块标识接口等,开发时,如果你的功能点属于一个模块,需要实现IPlugin ...