使用gradle构建android项目,Android中使用Gradle来构建App项目的入门指南
gradle是Android开发中引入的全新的构建系统,因为全新的构建系统主要是出于下面的目的:
1. 方便复用代码和资源
2. 构建多种版本的apk更见简单,不论是为多渠道构建不同的apk还是构建不同环境的apk(debug,release)
3. 方便配置,扩展,自定义构建过程
4. 良好的IDE集成
为什么选择Gradle?Gradle主要有以下几个有点:
1. 使用领域驱动语言(DSL)来描述构建逻辑
2. 构建脚本使用Groovy,可以方便的定制构建逻辑
3. 内建的依赖管理系统,使用Maven或者Ivy
4. 非常灵活。可以使用最佳实践但并不强制
5. 良好的IDE支持
Gradle项目使用项目根目录下的build.gradle文件来配置
一个最简单的Java项目的build.gradle如下
apply plugin: 'java'
这表示改项目会使用Gradle的java插件,该插件是Gradle默认提供的,java插件提供了构建java应用和运行测试的功能。
最简单的Android项目build.gralde
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.11.1'
}
}
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
}
该Android构建文件包含3个部分:
1.buildscript { ... } 配置驱动构建过程的代码,意思就是buildscript中的配置仅仅在构建过程中起作用,也就是构建程序所使用的配置。
上面的代码中就声明了我们的构建程序会使用Maven中央仓库,并且有一个classpath依赖是指向一个Maven库的。这个Maven库就是Android Gradle插件,版本号是0.11.1。
2.随后就是使用这个Android插件,和之前使用Java插件一样。
3.最后,android { ... }配置了Android项目构建时需要的所有参数。
默认情况下,只需要指定compileSdkVersion和buildtoolsVersion,compileSdkVersion指定使用哪个版本的sdk编译,buildToolsVersion指定使用哪个版本的构建工具。
注意点:1. 只需要使用android插件,再使用Java插件会报错.
2. 在local.properties中使用sdk.dir属性指定SDK路径,或者你可以使用ANDROID_HOME环境变量。
项目结构Gradle采用约定优于配置的原则,最简单方式是使用一个默认的目录结构。当然目录结构是可以自己修改的。
默认情况下,android gradle项目的代码都在src目录下,src下会有两个目录main和androidTest,其中main目录下是项目代码,androidTest目录下是测试代码。
src/main/
src/androidTest/
在main和androidTest目录下面,针对不同类型的code,又不会不同的目录。
对于Java和Android的Gradle插件,Java代码和Java资源分别对应了java目录和resources目录。Android插件还需要一些其他的目录和文件,比如
AndroidManifest.xml
res/
assets/
aidl/
rs/
jni/
下面我们来看一下如何更改这些默认的配置。
Android工程,默认情况下,java文件和resource文件分别在src/main/java和src/main/res目录下,在build.gradle文件,andorid{}里面添加下面的代码,便可以将java文件和resource文件放到src/java和src/resources目录下。(注意,如果你在gradle文件中修改了,只需要重新sync一下,gradle会自动创建新的目录,并将对应的文件移动到新的目录下)
sourceSets {
main {
java {
srcDir 'src/java'
}
resources {
srcDir 'src/resources'
}
}
}
更简便的写法是
sourceSets {
main.java.srcDirs = ['src/java']
main.resources.srcDirs = ['src/resources']
}
数组里其实是可以指定多个目录,这样就可以将代码和资源放置到多个目录下。
在看一个Android项目的例子:
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
androidTest.setRoot('tests')
}
}
这里的main code其实使用的就是Android Gradle的默认值,而androidTest不再使用默认的androidTest目录,而是使用tests目录。
使用gradle构建android项目,Android中使用Gradle来构建App项目的入门指南相关推荐
- android 浏览器 cookie,从Android的浏览器中传递cookie数据到App中
从Android的浏览器中传递cookie数据到App中 蒋彪@南京 2013-4-19 1. 需求 客户有一个需求, 在Android的浏览器上登录一个site, login之后,会在本地co ...
- Android项目工程中的Gradle、compileSdkVersion、buildToolsVersion
1. Gradle Gradle是一个依赖管理工具,也是一个编程框架.基于Groovy语言,面向Java应用为主,摒弃了基于XML的繁琐配置,采用的是一种基于Groovy的内部领域特定(DSL)语言, ...
- app android切图工具,2018最强手机APP切图规范指南和切片要求
关于手机APP切图的干货,25学堂已经分享了很多,但是不是很全面,同时也没有把一些APP切图需要注意点分享给大家,于是,学堂君想在今天把前辈切片的经验分享出来. 之前25学堂分享的APP切图干货: 如 ...
- android 怎么导入和应用特殊字体在app项目
随着市面上的app应用越来越丰富,一款性能优越且让人眼前一亮的app也是越来越少了.一款好的app不仅要界面精美而且要符合大众需求. 界面上的字体是让用户第一眼就能感受到开发者心意的直接表现.但是an ...
- VS中怎么新建Web服务器项目,VS中新建网站和新建WEB项目的区别
WebApplication编程模型的优点 ●网站编译速度快,使用了增量编译模式,仅仅只有文件被修改后,这部分才会被增量编译进去. ●生成的程序集 WebSite:生成随机的程序集名,需要通过插件We ...
- 【Android 组件化】使用 Gradle 实现组件化 ( Gradle 变量定义与使用 )
文章目录 一.顶层 Gradle 定义扩展变量 二.获取顶层的 Gradle 对象 三.Module 中使用 Gradle 变量 四.Gradle 中打印变量值 五.涉及到的 Gradle 构建脚本 ...
- 一些完整的Android开源app项目
android开源项目有很多,但是完整的app项目不多,下面是最近我 整理的一些开源app项目: 注: jcodecraeer网站上搜集了很多开源项目,更新很快,非常值得关注. 一.photoup 介 ...
- Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP
Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图 这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache 第一步:导包 ...
- 库项目和App项目中清单文件的包名不要相同
在清单文件中有一个包名,如下: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns: ...
- 开发iWatch时遇到的bug,可能是因为项目名中含有中文
开发iWatch时遇到的问题,可能是因为项目名中含有中文,我把项目名改成中文了后就没问题了
最新文章
- 夏瑞、陈程杰报告—科研神器TBtools 从“结识”到“结伴”(下午3点腾讯会议)...
- 《I'm a Mac:雄狮训练手册》——1.12 开机快捷键
- java概述、安装、配置环境、运行
- boost::statechart模块无效图表测试
- tcl mysql_MySQL·TCL语言
- spool导出姓名中文乱码_MySQL不同字符集转化标准—7步实现,杜绝乱码!
- VMware (CentOS 6.x)克隆导致的网卡问题
- hls和modelsim联合仿真生成波形找不到wlf文件
- 查看静态库支持的CPU架构
- 空间复杂度和时间复杂度
- NeHe OpenGL第九课:移动图像
- Win10离线 安装.net frame3.5
- 信号与线性系统管致中第六版pdf_第五讲 信号流图
- pdf批量转换为图片
- 动态规划经典入门题(初学必刷)
- win 10 计算机找不到,怎么找到win10的计算器?不见了,怎么处理
- 数据分析上海长租房市场
- 使用html5静态页面的总结,幸福西饼:静态页面制作项目总结
- python爬虫小项目挣钱兼职,python程序员兼职平台
- requests库请求获取不到数据怎么办?不妨试试看这种妙法
热门文章
- shell脚本中常见的一些特殊符号和作用详解
- 比尔盖茨2016好书推荐
- JavaScript Array reverse 方法:颠倒数组中元素的顺序
- Java实现JsApi方式的微信支付
- iOS关于Xcode上的Other linker flags
- poj 2739 Sum of Consecutive Prime Numbers
- 解决QueryTask执行中的网络请求错误
- Bing API 2的体验
- python嵌套循环效率_Python嵌套循环数组比较优化的可能性?
- android tag 快捷_Android Studio快捷键生成TAG、Log.x日志输出介绍