理解gradle和gradlew

2023-11-10

前言

最近在跑grpc官方示例程序的时候,用到了在命令行中使用gradle编译生成代码。对gradle和gradlew做了一些了解。

gradle

现在android项目普遍使用androidstudio进行开发,项目的构建和编译都用到了gradle,那么gradle是什么呢?
gradle是一款开源的构建自动化工具,我们可以使用gradle构建项目,编写插件等。
更多了解可以参阅what_is_gradle

gradlew

了解了gradle,那么什么是gradlew呢?gradlew全称gradle wapper,gradle wapper相当于gradle的包装(类似包装类,我们输入相关gradlew命令,实际执行还是本地的gradle命令)。
android项目中都有一个gradle文件夹,里面包含一个jar和一个gradle-wrapper.properties文件。
gradle文件夹
gradle-wrapper.properties里面是这样的:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

其中distributionUrl指定了项目构建需要下载的gradle url及对应版本。

这样做的好处是,可以统一项目的gradle版本,每个项目从远程仓库拉取到每个不同开发人员的电脑上时,可以使用相同的gradle构建环境。

常用命令

  • 执行tast
gradle :myTask
  • buid
gradle build
  • clean
gradle clean
  • 安装debug包
gradle installDebug
  • app build
gradle app:build
  • app clean
gradle app:clean

以上命令也可以通过gradlew来执行。
更多关于gradle的使用可以参阅官方文档 https://docs.gradle.org/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解gradle和gradlew 的相关文章

  • Android 构建 gradle 在特定设备上失败

    我面临一个奇怪的问题 当我编译我的应用程序以在 Android 7 0 的设备上运行它时 它可以工作 但是当我尝试为 Android 4 2 1 的设备进行编译时 它会失败并出现以下错误 错误 任务 app transformClasses
  • 如何在 StateListDrawable 中设置可绘制对象的 alpha 值?

    我想在按下时更改可绘制对象的 alpha 值 因此 我创建了两个可绘制对象并将它们放入 StateListDrawable 中 并设置按下状态的 alpha 值 但它就是行不通 StateListDrawable content new S
  • Android 上的硬币识别

    我目前正在开发一个 Android 应用程序 它能够拍摄硬币的现有图像 或者使用内置摄像头扫描单个硬币 非常像 Google Goggles 我正在使用 Android 版 OpenCV 我的问题如下 什么方法最适合使用 OpenCV 在
  • Android,语言文件不起作用

    我现在正在创建一个 Android 应用程序 并尝试为我的母语添加语言文件 但在某种程度上 这对我不起作用 我尝试在两部不同的手机中加载该应用程序 但结果相同 之前创建过语言文件 效果良好 但这次不行 手机设置为瑞典语 语言文件适用于我创建
  • 在 Android 中关闭 Spinner 中的下拉菜单

    在 Android 中打开和关闭微调器时 我需要为箭头图标设置动画 打开微调器时我可以旋转箭头 我只是放了一个setOnTouchListener on the Spinner 当下拉菜单关闭或隐藏时 问题就来了 因为我不知道如何在该操作上
  • Twitter 集成期间获取访问令牌函数行为不当

    我只是想使用 twitter4j 从我的 Android 应用程序向 Twitter 分享文本 首先 我尝试的是我创建了一个新项目 并且这个特定的代码运行成功 然后我在我的应用程序中混合了该特定代码 登录 Twitter 成功完成 之后我发
  • 安卓;在 AdapterViewFlipper 上设置输入/输出动画:未知的动画师名称翻译

    我有一些非常简单的动画 可以与 ViewFlipper 完美配合 但如果我尝试在 AdapterViewFlipper 输入 输出上设置它们 我会收到运行时错误 未知的动画师名称翻译 查看每个方法的相应方法 看起来 ViewFlipper
  • 将 ArrayList 保存在捆绑包 savingInstanceState 中

    ArrayList 是在类级别定义的 这些是我保存的实例方法 Override protected void onSaveInstanceState Bundle outState super onSaveInstanceState out
  • 如何在代码中设置TextView的文字颜色?

    在 XML 中 我们可以通过以下方式设置文本颜色textColor属性 比如android textColor FF0000 但如何通过编码来改变它呢 我尝试过类似的东西 holder text setTextColor R color R
  • 使用startActivityForResult,如何获取子活动中的requestCode?

    我有四项活动 即 A B C 和 D 我的情况是A将通过startActivityForResult启动活动B startActivityForResult new Intent this B class ONE 在另一种情况下 我将使用不
  • Android apk 调试模式工作正常,但发布模式给出太多警告

    我正在尝试从 eclipse 获取签名的 APK 我有一个可调试的 apk 版本 运行良好 现在发布时 当我尝试使用 Eclipse ADT 进行编译和签名时 我收到很多警告 其中大部分是can t find superclass or i
  • onTouch 给出奇怪的触摸点 Android

    我正在做的事情非常简单 我以前做过 但现在它没有按我的预期运行 无论如何 让我简要解释一下我正在尝试做什么以及我得到了什么 设想 我有一个RelativeLayout其中一个ImageView已放置 现在我设置touchlistener像这
  • 如何使用asynctask显示倒计时的进度条?

    在我的应用程序中 我希望用户按下按钮 然后等待 5 分钟 我知道这听起来很糟糕 但就这样吧 5 分钟等待期间的剩余时间应显示在进度条中 我使用带有文本视图的 CountDownTimer 来倒计时 但我的老板想要看起来更好的东西 这就是进度
  • 我可以在主线程上读取一个小 txt 文件,还是应该始终避免那里的 I/O?

    我正在读取一个小的 json 文件 其中有几行 它存储在用户设备的内部应用程序文件夹中 我所做的就是这样 JSONObject jsonObject new JSONObject MyUtils inputStreamToString My
  • 从 AlertDialog 返回值

    我想构建一个函数来创建 AlertDialog 并返回用户输入的字符串 这是我用于创建对话框的函数 如何返回该值 String m Text private String openDialog String title AlertDialo
  • 在 Android SDK 中通过单击按钮更改背景颜色不起作用

    我有一个简单的程序 可以在单击按钮后更改背景颜色 但它不起作用 public class ChangeBackgroundActivity extends Activity Called when the activity is first
  • 在 TextView onTextChanged 上设置文本

    我有一个定义为类属性的文本视图 以便我可以在整个类中访问它 在 onCreate 方法中我执行以下操作 chars TextView findViewById R id chars chars setText 300 之后 public v
  • 使用 Tomcat 和 gradle 进行休眠

    免责声明 我是 Java 新手 我正在尝试使用 Tomcat 和 Gradle 设置 Hibernate 构建运行正确 但看起来像persistence xml文件未被读取 我的项目结构如下 build gradle src main ja
  • 如何用 XML 制作双渐变(类似 iphone)

    如何使用 XML 制作这种可绘制渐变 我可以做一个从颜色 A 到颜色 B 的简单渐变 但我不知道如何在同一个可绘制对象中组合两个渐变 我终于找到了一个带有图层列表的解决方案 这对我来说已经足够好了
  • Android 中带有无尽列表视图滚动的 AsyncTask

    我正在创建一个应用程序 其中我需要有无限的滚动列表视图 我不想在我的应用程序中使用任何库 我在网上看到了一些有助于实现此类列表视图的示例 但我的疑问是 当我的数据来自服务器并在异步任务中进行解析时 如何才能拥有无尽的列表视图 如何从滚动异步

随机推荐

  • 找出数组中重复数字

    描述 查找数组中的重复元素情况 时间复杂度为o n 空间复杂度为o 1 数组的大小为n 数组元素值大小为0到n 1 比如 n 4 2 3 1 2 3 思路一 采用记录的思路访问 如果array i 代表一个位置 如果array array
  • Linux内核提权漏洞(Dirty-pipe)复现

    前言 CVE 2022 0847 是存在于 Linux内核 5 8 及之后版本中的本地提权漏洞 攻击者通过利用此漏洞 可覆盖重写任意可读文件中的数据 从而可将普通权限的用户提升到特权 root CVE 2022 0847 的漏洞原理类似于
  • vue高德地图marker批量标记与InfoWindow提示框

    一 前言 由于数据量大 如果一个一个添加marker会造成页面卡顿 所以在此就使用了批量标记 特此研究出一下几种方法 在高德平台获取key 高德开放平台 高德地图API 二 批量添加marker标记 1 海量点标记 MassMarks 优点
  • 华为od欢快的周末

    public class FunnyWeeks static final int N 110 static int arr new int N N static Map
  • 《老漏洞复现与分析篇》 - 其一 - shift后门

    引言 因为本菜鸡的博客没什么文章素材 所以想开一个新文章类别 本来想整一个漏洞分析和复现的 无奈由于实力不允许 只能再前面加一个 老 字 整一点多年前的老漏洞拿来复现和分析 俗话说得好 要善于总结前人的经验和智慧 才能在自己的前进道路上走得
  • txpro服务器维护,EFIFieryproServer和EFIFieryXF第7版发布说明

    新型纯软件保护系统 第 7 版不需要 USB 加密狗 而是采用灵活的软件保护 允许终端用户免费从一个 Fiery 到另一个 Fiery 重新托管许可证 第 7 版的重要变化 Fiery XF 服务器 macOS 版已终止 现在的 Fiery
  • Selenium Grid 简易安装--(selenium-server-standalone-*.jar)

    Selenium Grid Selenium Grid允许同时并行地 在不同的环境上运行多个测试任务 这里主要演示一下怎么使用Selenium Grid 准备 1 需要两台机子 2 两台机子分别安装好JDK环境 3 两台机子需要从 http
  • 【C++】矩阵的乘法

    先复习一下矩阵的乘法 已知 求AB 因为矩阵A是2 3矩阵 矩阵B是3 3矩阵 A的列数等于B的行数 所以矩阵A与B可以相乘 乘积AB是一个2 3矩阵 矩阵相乘时需要注意两点 一点是矩阵1的列数要等与矩阵2的行数 一点是矩阵相乘后的矩阵 c
  • Node.js配置别名alias的两种方法

    Node js配置别名alias的两种方法 什么是别名 import xxx from xxx import xxx from xx xx xxx 可以省去 xxx 直接从配置的目录开始找文件 环境准备 Node js 此文章使用v12 1
  • JAVA注释、标识符和变量

    JAVA正确注释和标识符 java的注释 java的注释就是用特殊规定的符号来说明在代码中对代码功能的解释 总共分为三种 1 这个为单行注释 2 这种为多行注释 3 用于文档注释 在类 成员变量以及方法功能的说明上 给与说明 提示功能 ja
  • 适用于windows的ubuntu子系统出现WSL2:Temporary Failure in Name Resolution解决方法

    WSL2 Temporary Failure in Name Resolution In WSL2 run remove existing resolv conf symlink that is pointing to a wrong na
  • ald计算机应用,人工智能可以优化ALD半导体制造工艺

    为了制造计算机芯片 全世界的技术专家都依赖原子层沉积 ALD 法 它可以创造出细到一个原子厚的薄膜 企业通常使用ALD制造半导体设备 但它也应用于太阳能电池 锂电池和其他能源相关领域 今天 制造商越来越多地依靠ALD来制造新型薄膜 但弄清楚
  • 挂机宝和网站服务器,挂机宝SSD硬盘vs普通硬盘访问官网哪个快?

    原标题 挂机宝SSD硬盘vs普通硬盘访问官网哪个快 秒开云硬盘篇 SSD固态硬盘vs机械硬盘 硬盘读写速度越快结构类型 网络服务器中的固态盘 SSD 比SATA磁盘驱动器给予更高的电脑磁盘读 写强度 也称之为键入 导出 I O 性能指标 具
  • 联邦计算在百度观星盘的实践

    导读 本文简短综述联邦计算领域的核心技术点 随着联邦计算在产业界的应用及普及 保护数据隐私与解决数据孤岛 二者可以兼得 为数字广告营销等领域提供了一个全新思路 一 导语 众所周知 数据是AI技术的燃料 更多高质量的数据意味着可以训练出更好性
  • nodejs生成token

    首先安装jsonwebtoken 命令 npm i jsonwebtoken save 代码如下所示 const fs require fs 文件模块 const path require path 路径模块 const jwt requi
  • Spring Cloud配置(四)熔断器

    在Spring Cloud中使用了Hystrix 来实现断路器的功能 Hystrix是Netflix开源的微服务框架套件之一 该框架目标在于通过控制那些访问远程系统 服务和第三方库的节点 从而对延迟和故障提供更强大的容错能力 Hystrix
  • 这些lodash方法真香!!

    前言 Lodash 是一个一致性 模块化 高性能的 JavaScript 实用工具库 Lodash官网 Lodash 通过降低 array number objects string 等等的使用难度从而让 JavaScript 变得更简单
  • Asp.net读取AD域信息的方法<转>

    1 首先新建一个页面 Login aspx 前台代码 Login aspx
  • 怎么解决kafka的数据丢失

    producer端 宏观上看保证数据的可靠安全性 肯定是依据分区数做好数据备份 设立副本数 broker端 topic设置多分区 分区自适应所在机器 为了让各分区均匀分布在所在的broker中 分区数要大于broker数 分区是kafka进
  • 理解gradle和gradlew

    前言 最近在跑grpc官方示例程序的时候 用到了在命令行中使用gradle编译生成代码 对gradle和gradlew做了一些了解 gradle 现在android项目普遍使用androidstudio进行开发 项目的构建和编译都用到了gr