Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android Studio Gradle文件解释其作用

Android Studio Gradle文件解释其作用

作者头像
zhangjiqun
发布于 2024-12-16 05:34:18
发布于 2024-12-16 05:34:18
29700
代码可运行
举报
文章被收录于专栏:计算机工具计算机工具
运行总次数:0
代码可运行

offline Work,点击关闭

Could not download support-annotations.jar
依赖的jar的对应

在使用AndroidStudio时通常会遇到如下问题: 1. Android sutdio打开一个工程一直卡在Background Tasks怎么办? 2. 手动配置Gradle Home后,怎么还是提示错误? 3. 下载了Gradle,配置了gradle home,为什么打开工程显示还要在远程库下载?

先了解下gradle到底是什么?Studio中用她做了些什么?

Gradle是一种构建脚本,用Groovy语言实现,一种类似于java的语言。AndroidStudio使用Gradle作为构建工具,是构建工具就必须管理依赖库,当工程中使用了开源库时只需在build.gradle中告知gradle从哪个远程库下载就可以了。

下面详细介绍AndroidStudio工程的settings.gradle、Project的build.gradle、Module的build.gradle、gradle/wrapper这些文件分别是用来干什么的。

Groovy

Groovy是一种基于JVMJava虚拟机)的敏捷开发语言,它结合了PythonRubySmalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy也可以使用其他非Java语言编写的库。

● 是一个基于 Java虚拟机的敏捷 动态语言。

● 构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征。

● 为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。

● 支持DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让你的代码变得易于阅读和维护。

● Goovy拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变的非常简单。

● 在开发Web,GUI,数据库或控制台程序时 通过 减少框架性代码 大大提高了开发者的效率。

● 支持单元测试和模拟(对象),可以 简化测试。

● 无缝集成 所有已经存在的 Java对象和类库。

● 直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。

生态圈: 除了语言和它的API之外,还围绕Groovy催生出了一个卓有成效的项目生态系统,包括web框架、桌面应用程序框架、并发性、测试等各种主题,它们将Groovy作为核心。 Grails是JVM的一个开源、完整的堆栈、web应用程序框架。它利用了Groovy编程语言和约定优于配置,以提供高效的、流媒体的开发体验。 Gradle可以自动化构建、测试、发布、部署以及更多的软件包或其他类型的项目,如生成的静态网站、生成的文档或其他任何东西。

Project的settings.gradle

include ':app' 位于工程的根目录,用于指示 Gradle 在构建应用时应将哪些模块包括在内,当然一个工程可以包含多个moudle,若还有一个lib moudle ,settings.gradle则如下:

include ':app', ':lib' Project的build.gradle

位于工程的跟目录,指定Gradle构建所引用的仓库和依赖的插件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
* buildscript 配置gradle的依赖,此处不能配置模块的依赖
**/
buildscript {
    /**
    * repositories 告知gradle从哪里下载自身的依赖库,
    * 目前支持JCenter, Maven Central, and Ivy,也可以配置自己使用的依赖库
    **/
    repositories {
       jcenter()
    }
    /**
    * 配置gradle构建工程的依赖插件(Android Plugin for Gradle)的版本
    **/
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.8.3'
    }
}

/** * 配置工程中所有模块的远程依赖仓库。若工程某个模块中不依赖这里定义的远程仓库,则需在模块的build.gradle中申明 **/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
allprojects {
    repositories {
        jcenter()
    }
}

Module的build.gradle

模块级 build.gradle 文件位于每个 // 目录,用于配置适用于其所在模块的构建设置。您可以通过配置这些构建设置来提供自定义打包选项(例如附加构建类型和产品风味),以及替换 main/ 应用清单或顶级 build.gradle 文件中的设置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
* 应用com.android.application插件构建此模块
**/

apply plugin: 'com.android.application'

/**
 *开始配置安卓特定的编译选项
 */

android {

  /**
   * compileSdkVersion 指定gradle构建时采用的API版本,应用可以在当前版本的系统或者比当前版本更低的系统中运行
   * buildToolsVersion 指定编译工具的版本,可以通过SDK Manager下载相应的版本
   */

  compileSdkVersion 25
  buildToolsVersion "25.0.0"

  /**
   * defaultConfig 封装默认设置和编译变量,能根据编译系统动态得重写AndroidManifest.xml中的属性
   */

  defaultConfig {

    /**
     * applicationId 应用的名字
     * 但是代码中的包名仍然参考main/AndroidManifest.xml
     */

    applicationId 'com.example.myapp'

    // 定义运行的最小系统版本
    minSdkVersion 15

    // 执行运行的api版本,通常和compileSdkVersion一致
    targetSdkVersion 25

    // 定义应用的版本
    versionCode 1

    // 定义对用户的版本
    versionName "1.0"
  }

  /**
   * buildTypes 配置了许多的编译类型。默认情况下,定义了debug 和release两种。
   * debug编译类型在编译系统中默认支持,不用配置。编译时采用debugging tools而签名采用debug key
   * release 编译类型应用了混淆设置,但是在默认情况下没有签名。
   */

  buildTypes {

    /**
     * 默认情况下,Android Studio 对release编译类型进行了配置,
     * minifyEnabled减少应用的体积,并且指定了混淆设置文件
     */

    release {
        minifyEnabled true // Enables code shrinking for the release build type.
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  /**
   * productFlavors 字面翻译是产品口味,在多渠道打包用的比较多,或者是针对同一款应用不同的使用限制。
   * 在productFlavors中可以重写defaultConfig中的配置。在默认情况下编译系统是没有创建productFlavors的。
   * 这里示范创建了付费和免费两种产品特性,每种特性定义了不同的应用id,所以同一款手机可以同时安装者款应用
   */

  productFlavors {
    free {
      applicationId 'com.example.myapp.free'
    }

    paid {
      applicationId 'com.example.myapp.paid'
    }
  }

  /**
   * 拆分专用版本的apk,以减小应用的提交
   * 比如:jni时分别拆分成arm版和x86版
   *       或者根据屏幕密度拆分
   *
   */

  splits {
    // Screen density split settings
    density {

      // Enable or disable the density split mechanism
      enable false

      // Exclude these densities from splits
      exclude "ldpi", "tvdpi", "xxxhdpi", "400dpi", "560dpi"
    }
  }
}

/**
 * 本模块的依赖配置
 */

dependencies {
    compile project(":lib")
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

Gradle 属性文件

Gradle 还包括两个属性文件,位于项目根目录,可用于指定适用于 Gradle 构建工具包本身的设置:

gradle-wrapper.properties

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

位于工程的gradle\wrapper目录,用于配置gradle,若IED将工程的gradle配置成Use default gradle wrapper 模式

当GRADE_HOME(默认为C:\Users\Administrator.gradle)中没有工程指定的gradle版本,则主动从网上下载。 下载这部分的逻辑实现在gradle\wrapper\gradle-wrapper.jar中可以通过反编译查看其源码,GradleWrapperMain.java中先读取gradle-wrapper.properties配置的版本信息,若默认目录不存在对应的Gradle,则从配置的网站上下载。

local.properties

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ndk.dir=E\:\\Tools\\ADT\\ndk-bundle
sdk.dir=E\:\\Tools\\ADT

为构建系统配置本地环境属性,例如 SDK 安装路径。由于该文件的内容由 Android Studio 自动生成并且专用于本地开发者环境。

Android Studio IDE Gardle 配置

Use default gradle wrapper(recommended): 是否让gradle-wrapper.jar根据gradle-wrapper.properties的定义去查找对应的gradle。优先本地查找,若本地不存在则再在gradle-wrapper.properties中定义的distributionUrl地址中下载。下载的Gradle会存放在<Service directory path>/wrapper/dists/Gradle-xxxxx/然后是奇怪的一窜/gradle-xxxxx.zip 下载完成后会自动解压。

Use local gradle distribution: 选择之后Gradle home才可以设置,为本工程指定本地存在的Gradle,为了减少麻烦需要最好使用gradle-wrapper.properties中定义的版本,否则有可能存在同步不通过的情况

Globle Gradle Setting

Offline work:

问题1.

卡顿是由于要下载Gradle。按如下方式解决:

本地存有工程使用的Gradle

可以直接在Use local gradle distribution中指定gradle 路径点击确定稍等片刻即可:

本地没有Gradle

在项目gradle设置中选择Use default gradle wrapper,studio会自动下载相应的gradle版本到 service directory path 目录。

由于网络原因,通常花费时间较长,直接强制从任务管理器关闭Studio 手动从网络上下载gradle/wrapper/gradle-wrapper.properties中定义的gradle版本。先将/wrapper/dists/Gradle-xxxxx/然后是奇怪的一窜/ 目录中的零时文件删除,再将下载的压缩包拷贝过来。 再重新启动Studio,gradle解压后,会自动从远程依赖库中下载所需要的依赖库 问题2

那是因为选择了 Offline work 模式导致。gradle只是构建工具,若依赖的第三方库不存在则会提示出错。 不选择Offline work ,gradle构建工具会自动从远程依赖库中下载所需要的各种库。

问题3

只是配置了gradle,gradle只是构建工具。第三方依赖的库就是通过gradle从远程依赖库中下载的,若下载库时间长,应该是本地网速不好导致。 显示类似上图的下载是很正常的,表示构建工具正在从远程依赖库中下载依赖文件!

Error:Failed to complete Gradle execution. Cause: 文件名、目录名或卷标语法不正确。 Gradle 目录配置不正确导致

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android-Gradle(二) Gradle相关配置详解
Gradle是一个项目自动化建构工具,它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。Gradle主要帮我们做了依赖,打包,部署,发布,各种渠道的差异管理等工作。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
android_薛之涛
2019/08/23
3.7K0
Android-Gradle(二) Gradle相关配置详解
Gradle for Android简要指南
前言 Android官网构建系统介绍https://developer.android.com/studio/build/index.html
Anymarvel
2018/10/22
8910
Gradle for Android 系列:为什么 Gradle 这么火
本文主要介绍了在 Android Studio 中使用 Gradle 进行项目构建的一些基础概念和优点。通过使用 Gradle,可以更加灵活地管理项目构建,支持多种插件和扩展,同时提高了构建的效率。同时,Gradle 还提供了丰富的 API,方便开发者进行自定义插件开发。
张拭心 shixinzhang
2018/01/05
1.6K0
Gradle for Android 系列:为什么 Gradle 这么火
Gradle 构建:从入门到实战
本文章主要针对Gradle讲解,从入门到实战(Android Studio),让你快速上手Gradle。
陈宇明
2020/12/15
9410
Gradle 构建:从入门到实战
最新版gradle安装使用简介
gradle的最新版本是6.7,从2009年的第一个版本,到2020年的6.7,已经发展了11年了。gradle是作为android的官方构建工具引入的,除了java,它还能够支持多种语言的构建,所以用途非常广泛。
程序那些事
2021/02/07
1.3K0
这一次彻底弄明白Gradle相关配置
作者:19snow93 链接:https://www.jianshu.com/p/8b8a550246bd 本文由作者 19snow93 授权发布。 当毕业不够两年,身边的朋友慢慢得有车有房有女朋友周末有自己的节目,而我觉得很多美好的事情我都遥不可及,找不到可以让自己开心的事情做,心情很不好。但是同时我觉得沉淀需要时间、努力、耐心和自律,所以我总相信艰难的时候是总会过去,迎接自己的美好生活总到来的,给自己喊一句:“加油!”。 好了,牢骚发完了,最近我看了《Android Gradle权威指南》这本书,虽然
用户1269200
2018/06/22
4.9K0
【Android】Android Studio 开发工具 / Android Gradle Plugin 插件 / Gradle 构建工具版本兼容问题 ( 2023 年 4 月 17 日更新 )
Android Gradle 插件在 Android Studio 工程根目录 下的 build.gradle 构建脚本中配置 , 其中 id 'com.android.application' version 和 id 'com.android.library' version 配置的就是 Android Gradle Plugin 插件的版本号 ;
韩曙亮
2023/04/24
4.7K0
使用Gradle管理你的Android Studio工程
关于Android Gradle更多详细内容已经出书《Android Gradle权威指南》,大家可以购买,看更多没有介绍的知识点和内容,购买链接如下
飞雪无情
2018/08/28
1.1K0
关于Gradle配置的小结
使用 Android Studio 来开发 Android 工程的过程中,接触 Gradle 是不可避免的,比如配置签名、引入依赖等。那么 Gradle 到底是什么东西呢? Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言 (DSL) 来声明项目设置,抛弃了基于 XML 的各种繁琐配置 (此定义来自于百度百科-_- !) 。啰里啰唆一堆,幸运的是,一般来说 Android 开发者只要会配置 Gradle 就可以了,并不需要深入了解。那么下面我们就来揭开 Gradle 的面纱吧。
俞其荣
2022/07/28
6490
关于Gradle配置的小结
Android Gradle 入门
Gradle是一款非常优秀的构建系统工具,它的DSL基于Groovy实现,可以让你很方便的通过代码控制这些DSL来达到你构建的目的,其构建的大部分功能都是通过插件的方式来实现,所以非常灵活方便,如果内置插件不能满足你的需求你可以自定义自己的插件。
飞雪无情
2018/08/28
9600
读书笔记--Android Gradle权威指南(上)前言笔记
最近看了一本书《Android Gradle 权威指南》,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所以打算写一篇读书笔记,将书中一些我个人觉得蛮有用的点记录、总结一下。 前言 首先,先来过一下整书的目录章节,先大概清楚整本书都介绍了哪些知识点: 第 1 章 Gradle 入门 第 2 章 Groovy 基础 第 3 章 Gradle 构建脚本基础 第 4 章 Gradle 任务 第 5 章 Gradle 插件 第 6 章 Ja
请叫我大苏
2018/06/19
1.3K0
Android 项目Gradle文件讲解(Groovy和Kotlin)
  在Android应用开发中,Gradle是很重要的,它关系到你的项目能否正常编译运行,构建APK等等,而随着Android Studio编辑器的更新,Gradle也发生了一些变化。
晨曦_LLW
2024/11/28
2.3K0
Android 项目Gradle文件讲解(Groovy和Kotlin)
Android Gradle系列-入门篇
接下来的一段时间会对Android Gradle的相关知识进行梳理,所以借此整理成一个系列。如果你是刚入行的新秀,那么这个系列将会非常适合你,因为Android基本的配置都与Gradle有关。当然如果你已经入行,但对Gradle还是停留在表面的认知上,这个系列也会对你有所帮助。
Rouse
2019/07/17
8580
Android Gradle系列-入门篇
Android Studio 中的Gradle版本介绍
如果你针对Android Studio中的Gradle插件有不懂。打开老项目的时候,经常由于Gradle的版本号问题造成项目无法编译。
zinyan.com
2023/07/13
2.5K0
Android Studio 中的Gradle版本介绍
android Gradle的几个基本概念
什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
xiangzhihong
2018/02/02
6190
android Gradle的几个基本概念
【Android Gradle 插件】Gradle 基础配置 ⑤ ( gradle-wrapper.properties 配置分析 | GRADLE_USER_HOME 目录 )
Gradle Wrapper 配置 主要的 gradle-wrapper.properties 配置文件 内容如下 :
韩曙亮
2023/03/30
3.2K0
【Android Gradle 插件】Gradle 基础配置 ⑤ ( gradle-wrapper.properties 配置分析 | GRADLE_USER_HOME 目录 )
【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
Gradle Wrapper ( 包装器 ) 作用 : 自动搭建 Gradle 构建环境 , 防止 因为 Gradle 构建工具环境 出现问题 , 导致编译错误 ;
韩曙亮
2023/03/30
1.7K0
【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
Gradle和Maven仓库介绍
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
李小白是一只喵
2021/01/21
2.3K0
【Android Gradle 插件】Gradle 基础配置 ④ ( Gradle Wrapper 配置作用 | Gradle 下载的依赖库存放位置 )
在上一篇博客 【Android Gradle 插件】Gradle 基础配置 ③ ( 生成 Gradle Wrapper 配置 | 分析生成的 gradle-wrapper.properties 配置文件 ) 中 , 执行
韩曙亮
2023/03/30
1.3K0
【Android Gradle 插件】Gradle 基础配置 ④ ( Gradle Wrapper 配置作用 | Gradle 下载的依赖库存放位置 )
推荐阅读
相关推荐
Android-Gradle(二) Gradle相关配置详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验