本文由 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构建项目相关推荐

  1. Gradle构建项目深入浅出

    Gradle构建项目深入浅出 Kotlin in Action 文章目录 系列文章目录 前言 一.gradle安装及入门使用 二.gradle的project和task 三.gradle的依赖管理 五 ...

  2. [Gradle] 在 Eclipse 下利用 gradle 构建系统

    构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项目的时间 ...

  3. Gradle构建脚本入门

    黄少存,叩丁狼高级讲师,本文为原创文章,转载请注明出处.   上一篇咱们已经知道了Gradle构建脚本的重要性,要使用比较复杂的项目构建就需要来书写构建脚本,那Gradle 的构建脚本有哪些呢,请看构 ...

  4. Gradle 构建速度优化

    构建速度优化 AS编译太慢是我们经常吐槽的,我们该做些什么来加快编译的速度呢?前面我们简单的了解了gradle构建项目的流程.我们可以从以下几个方面来做: 注意AS配置: 如及时更新Gradle和JD ...

  5. 【业余开发笔记】用gradle构建一个简单的rest api

    以下是一些gradle构建项目的使用笔记,由于自己对maven也算太了解,所以不谈区别和优劣了,就简单总结一下关于gradle的使用好了. 以下是关于用gradle构建一个以spring boot为框 ...

  6. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  7. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目02

    概述 将工程托管到Github Gradle构建 为什么一个main函数就能启动web并提供这么多功能 幕后的 Spring Boot 分发器和 multipart 配置 视图解析器.静态资源以及区域 ...

  8. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01

    文章目录 概述 使用Spring Tool Suite构建Spring Boot项目 下载STS 插件安装 搭建第一个Spring Boot项目 启动项目 概述 通常,构建一个Spring Boot项 ...

  9. Android Studio目录结构和Gradle构建Android项目

    一,Android Studio的目录结构和工程项目介绍 二,Eclipse工程与Android Studio工程的区别 1,Eclipse工程能导入AS运行,但AS建立的工程不能再Eclipse中运 ...

最新文章

  1. 使用json-lib实现json to javabean
  2. 树状数组 _ 求逆序数
  3. 全链路灰度这样做,新需求迭代上线也能放心干饭
  4. python matplotlib.pyplot() plt() 如何限制坐标的上下限?plt.xlim() plt.ylim()
  5. 点击事件调用匿名函数如何传参_事件发布/订阅模式的简单实现
  6. php遍历文件夹下文件内容_php遍历文件夹下所有文件的代码示例
  7. 远程桌面 出现内部错误_如何解决远程桌面连接延迟高的问题?
  8. js实现表格配对小游戏
  9. 银河麒麟v10_银河麒麟:V10究竟哪里好?开箱测评,瞬间明了!
  10. ant design DatePicker时间组件 本地中文 发布后变成英文
  11. fastreport 横向打印多列
  12. 【U8+】用友U8+登录账套,提示“指定的参数已超出有效值的范围。参数名:index”
  13. C++ 小帅真的饿了
  14. CSS3变形之2D变形
  15. Stata:固定效应模式必须加入时间固定效应吗?
  16. android 键盘 自动消失,Android 系统键盘怎么也不消失
  17. 操作系统MIT6.S081:[xv6参考手册第4章]->Trap与系统调用
  18. 小程序开发API之NFC
  19. 数据库系统概论第五版(第 3 章 关系数据库标准语言SQL)习题答案
  20. 说下更新百度快照的利弊

热门文章

  1. 谈谈android数据存储方式
  2. Java的一个常见小错误
  3. 中文手写输入法在iOS8.1上的崩溃问题
  4. 华为最便宜5G手机 华为畅享Z
  5. 贵州省大力推进政务电子云平台建设 打造政务服务“贵州模式”
  6. 强强联手:2021强网杯LongTimeAgo复盘分析
  7. turtle--- 海龟绘图函数大全
  8. 尚硅谷10小时搞定B2C电商毕设项目p11部分坑解决记录
  9. 小可爱 java实训课程06 jdbc
  10. 西北大学计算机课表,西北大学课表.doc