使用Gradle构建项目
本文由 ImportNew - 唐尤华 翻译自 spweblog.blogspot.com。如需转载本文,请先参见文章末尾处的转载要求。
在最近的Google IO大会上我注意到Android Studio开发环境引起了大家的关注。我发现Eclipse经常会变慢而且健壮性不强,所以一个新的替代Android IDE是最受欢迎的消息。在仔细关注这次的发布时,我发现另一个亮点是基于Gradle的Android项目新的构建系统。因此我决定更仔细地了解Gradle。
下面列举了一些使用Gradle构建Android项目的好处:
- 在IDE环境和命令行下使用同一个构建系统
- 改进的依赖关系管理
- 更容易地集成到自动化构建系统
一个额外的好处来自Android函数库包格式“aar”格式。以前,Android函数库通常需要被导入到IDE以此将App需要的资源加入编译。但是现在的Android函数库可以被直接包含,与“jar”文件被Java项目包含的方式类似。这项功能虽然出现已久,但确实非常受欢迎。
下面是我一个项目的gradle构建脚本:
buildscript {//定义一些项目需要的JAR函数库LIBS_DIR = "../../../libs"//需要从maven中央库得到gradle的android插件repositories {mavenCentral()}dependencies {classpath 'com.android.tools.build:gradle:0.4.2'}
}//声明项目是一个android构建
apply plugin: 'android'dependencies {//同时用本地maven库查找依赖repositories {mavenLocal()}//下面是一些app需要的jar文件compile files("${LIBS_DIR}/hiscore/hiscore.jar")compile files("${LIBS_DIR}/GoogleAnalytics/libGoogleAnalytics.jar")//这是一个我存放在本地maven仓库(使用“aar”格式)的android函数库compile ('com.mopub.mobileads:mopub-android-sdk:unknown')
}//android构建的项目定义
android {compileSdkVersion 15buildToolsVersion "17.0.0"//下面的代码路径不是推荐的新项目结构//我仍然使用的Eclipse风格结构sourceSets {main {manifest.srcFile 'AndroidManifest.xml'java.srcDirs = ['src']resources.srcDirs = ['src']aidl.srcDirs = ['src']renderscript.srcDirs = ['src']res.srcDirs = ['res']assets.srcDirs = ['assets']}instrumentTest.setRoot('tests')}//声明创建一个带签名的发布版本细节signingConfigs {release {storeFile file("../keys/android.keystore")storePassword "######"keyAlias "######"keyPassword "######" }}//声明此发布构建在签名之前需要运行proguardbuildTypes {release {runProguard trueproguardFile getDefaultProguardFile('proguard-android.txt')proguardFile 'proguard.cfg'signingConfig signingConfigs.release} }
}
从命令行构建app可以运行下面的命令:
gradle assembleDebug #debug构建
gradle assembleRelease #release构建
我以前用过Maven做了几个项目,发现用Maven来管理项目配置非常有用,尤其是在依赖管理方面。但是我发现Maven在某些情况下缺少灵活性,你不得不为某些特殊的情况进行自定义。理论上你可以编写自己的Maven插件,但实践起来大多数用户不会这么做通常他们会依赖现有的插件。所以我经常使用Ant而不是Maven,因为它在处理项目特殊操作,比如拷贝或修改代码文件时更加灵活。
Gradle看上去在这两方面都做得很好:通过插件为绝大多数的常用情况提供了全面支持,管理依赖关系方面与Maven做得同样好;同时也提供了良好的灵活性,在需要修改构建脚本时可以自由地定制。
我相信Gradle是构建Android应用的趋势。Gradle还提供了很多其他很赞的特性,例如构建“佐料(flavors)”等,本文没有涉及。我相信Google采用Gradle是在Android发展上的一个重要进步。现在,我会将其他的项目都转为使用Gradle。
使用Gradle构建项目相关推荐
- Gradle构建项目深入浅出
Gradle构建项目深入浅出 Kotlin in Action 文章目录 系列文章目录 前言 一.gradle安装及入门使用 二.gradle的project和task 三.gradle的依赖管理 五 ...
- [Gradle] 在 Eclipse 下利用 gradle 构建系统
构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项目的时间 ...
- Gradle构建脚本入门
黄少存,叩丁狼高级讲师,本文为原创文章,转载请注明出处. 上一篇咱们已经知道了Gradle构建脚本的重要性,要使用比较复杂的项目构建就需要来书写构建脚本,那Gradle 的构建脚本有哪些呢,请看构 ...
- Gradle 构建速度优化
构建速度优化 AS编译太慢是我们经常吐槽的,我们该做些什么来加快编译的速度呢?前面我们简单的了解了gradle构建项目的流程.我们可以从以下几个方面来做: 注意AS配置: 如及时更新Gradle和JD ...
- 【业余开发笔记】用gradle构建一个简单的rest api
以下是一些gradle构建项目的使用笔记,由于自己对maven也算太了解,所以不谈区别和优劣了,就简单总结一下关于gradle的使用好了. 以下是关于用gradle构建一个以spring boot为框 ...
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目02
概述 将工程托管到Github Gradle构建 为什么一个main函数就能启动web并提供这么多功能 幕后的 Spring Boot 分发器和 multipart 配置 视图解析器.静态资源以及区域 ...
- Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01
文章目录 概述 使用Spring Tool Suite构建Spring Boot项目 下载STS 插件安装 搭建第一个Spring Boot项目 启动项目 概述 通常,构建一个Spring Boot项 ...
- Android Studio目录结构和Gradle构建Android项目
一,Android Studio的目录结构和工程项目介绍 二,Eclipse工程与Android Studio工程的区别 1,Eclipse工程能导入AS运行,但AS建立的工程不能再Eclipse中运 ...
最新文章
- 使用json-lib实现json to javabean
- 树状数组 _ 求逆序数
- 全链路灰度这样做,新需求迭代上线也能放心干饭
- python matplotlib.pyplot() plt() 如何限制坐标的上下限?plt.xlim() plt.ylim()
- 点击事件调用匿名函数如何传参_事件发布/订阅模式的简单实现
- php遍历文件夹下文件内容_php遍历文件夹下所有文件的代码示例
- 远程桌面 出现内部错误_如何解决远程桌面连接延迟高的问题?
- js实现表格配对小游戏
- 银河麒麟v10_银河麒麟:V10究竟哪里好?开箱测评,瞬间明了!
- ant design DatePicker时间组件 本地中文 发布后变成英文
- fastreport 横向打印多列
- 【U8+】用友U8+登录账套,提示“指定的参数已超出有效值的范围。参数名:index”
- C++ 小帅真的饿了
- CSS3变形之2D变形
- Stata:固定效应模式必须加入时间固定效应吗?
- android 键盘 自动消失,Android 系统键盘怎么也不消失
- 操作系统MIT6.S081:[xv6参考手册第4章]->Trap与系统调用
- 小程序开发API之NFC
- 数据库系统概论第五版(第 3 章 关系数据库标准语言SQL)习题答案
- 说下更新百度快照的利弊