热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Gradle常见概念讲解&版本问题报错的处理方案

原文链接:http:www.jianshu.comp0e680428a745http:www.jianshu.compc7983274c5101、Gradle项目的构建工具,管理一

原文链接:
http://www.jianshu.com/p/0e680428a745
http://www.jianshu.com/p/c7983274c510

1、Gradle

项目的构建工具,管理一个项目的依赖架包,性质和maven相似

一个基于groovy的项目打包工具能复用很多的打包过程(tasks)有一个中央仓库能找到你打包过程中需要依赖的库,并且声明使用很简单

2、Gradle wrapper

用于统一项目所使用的gradle版本,保证了所有开发人员在该项目使用同一个版本的编译工具进行编译(统一项目所使用的gradle版本)

在android studio中,选中你的项目,切换到project files视图,在项目根目录下就能看到gradle/wrapper/gradle-wrapper.properties 文件,配置大体如下:

#Mon Dec 28 10:00:20 PST 2015
#规定了解压后的gradle包放在哪里
distributiOnBase=GRADLE_USER_HOME
distributiOnPath=wrapper/dists
#规定了gradle的zip包放在哪里
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#规定了使用哪个版本的gradle编译项目,这个地址可以配置成服务器地址或者本地地址
distributiOnUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

根据此配置Gradle Wrapper会自动为我们下载合适的Gradle版本。默认情况下,下载位置是在$USER_HOME/.gradle/wrapper/dists,如果设置了GRADLE_USER_HOME环境变量,那么就会下载到GRADLE_USER_HOME/wrapper/dists下.

3、Gradle plugin

Gradle plugin ,俗称gradle插件,是android studio为了方便使用gradle进行配置和编译而开发的插件,它跟随gradle版本的变迁而变迁.

在android studio中,项目的根目录下的build.gradle中会配置如下代码:

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
}
}

这个dependencies中的gradle:2.1.0代表的就是使用gradle 插件版本 2.1.0. 在编译过程中,如果gradle插件版本与gradle版本不匹配,编译就会失败.
目前在使用的gradle与gradle插件版本的对应关系如下

《Gradle常见概念讲解&版本问题报错的处理方案》

Gradle plugin的版本通常随Android Studio的安装包,目录位置在

/Applications/Android\ Studio.app/Contents/gradle/m2repository/com/android/tools/build/gradle

4、gradlew

gradlew: W意思是wrapper,它是一个用bash命令包装过的gradle编译启动脚本,里面会进行环境变量检测和设置,最终进行编译的还是gradle.常见命令如:gradlew -v 查看当前项目下gradle版本

在工程目录下执行 gradlew build --info,即可编译工程。Android Studio对gradle配置问题错误输出不明显,用这种方式能看到具体的出错原因。

报错信息

《Gradle常见概念讲解&版本问题报错的处理方案》

分析:

“Gradle version 2.2 is required. Current version is 2.10.try editing the distributionUrlin/MyApplication/gradle/wrapper/gradle-wrapper.properties to gradle-2.2-all.zip.”

这到底是啥意思呢?

简单解释一下:“根据你的AS的Gradle插件版本,与你匹配的Gradle版本是2.2,但是你当前的Gradle版本是2.10.请尝试将Gradle系统版本改为gradle-2.2-all.zip”

先理清下Gradle版本的概念:

Gradle version: Gradle是一种自动化建构工具(例如Ant 、Maeven也是构建工具),Gradle version就是指这种构建工具的版本号。可以在你项目根目录的gradle/wrapper/gradle-wrapper.properties里指定。指定后AS会自动去下载或者你也可以去Gradle官网下载相应的版本放到/Users/你的用户名/.gradle/wrapper/dists目录下

Android Plugin Version : 是指你Android Studio里的gradle插件版本。在你项目根目录下的build.gradle文件中的dependencies节点下设置。

《Gradle常见概念讲解&版本问题报错的处理方案》

Paste_Image.png

而我的AS Gradle插件版本我设置的是1.2.3,Gradle构建工具的版本是2.10.Android Plugin Version和Gradle version是有对应关系的,Plugin版本太低了,所以gradle 2.10是不支持 1.2.3版本的plugin。

三种解决方案:

一 根据报错信息里建议的:降低 Gradle版本到2.2

  1. 下载gradle-2.2-all.zip如果让 AS自动去下载 gradle-2.2-all.zip实在是太慢了!所以将https://services.gradle.org/distributions/gradle-2.2-all.zip 这个网址拖到迅雷把它下载好,然后放到/Users/你的用户名/.gradle/wrapper/dists目录下

  2. 进入AS的设置中,设置使用默认的gradle wrapper来管理gradle

    《Gradle常见概念讲解&版本问题报错的处理方案》

    Paste_Image.png

  3. 进入项目根目录的gradle/wrapper/gradle-wrapper.properties里

    《Gradle常见概念讲解&版本问题报错的处理方案》

    Paste_Image.png
    修改为

distributiOnUrl=https://services.gradle.org/distributions/gradle-2.2-all.zip

  1. 选择 File—>invalidate and restart
  2. 耐心等待一会

    《Gradle常见概念讲解&版本问题报错的处理方案》

    Paste_Image.png

发现会弹框提醒你升级 插件版本Android Gradle Plugin

《Gradle常见概念讲解&版本问题报错的处理方案》

Paste_Image.png

先忽略。然后就可以运行程序了。
修改后各版本匹配关系:
Android Studio版本是 2.1
Plugin version 是 1.2.3
Gradle version是 2.2

二 提高 plugin 版本

  1. 修改根目录下 build.gradle文件中的plug 版本,改为>=1.5.0:classpath ‘com.android.tools.build:gradle:1.5.0’或者2.0.0或2.1.0
  2. 修改gradle wrapper中的

distributiOnUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip

3 .这时候不要点击Sync Now
4 .选择 File—>invalidate and restart

让它加载1分钟左右就好了。

修改后各版本匹配关系:
Android Studio版本是 2.1
plugin version 是 >=1.5.0
gradle version是 2.10

三 灵活配置

比如我们团队用的版本是:plugin1.2.3 , gradle构建工具2.4为了保持一致,所以我又不得不

  1. 下载gradle-2.4-all.zip扔到/Users/你的用户名/.gradle/wrapper/dists/目录下
  2. 修改gradle wrapper.properties 文件,将url改为gradle-2.4-all.zip
  3. File—> invalidate and restart
  4. 进入AS的设置中,设置use default gradle wrapper来管理gradle

修改后各版本匹配关系:
Android Studio版本是 2.1
plugin version 是 1.2.3
gradle version是 2.4

重新打开项目,出现

Error:null value in entry: incrementalFolder=null

或者

Could not create service of type CachingFileHasher using TaskExecutionServices.createFileSnapshotter().

解决方法:

  1. 删除 .gradle 目录
  2. 重启 Android Studio

换了新手机,app安装不上或一运行就crash

关掉Instant Run

gradle vs gradlew

gradlew是gradle的包装器,它的主要用处是保证编译环境一致。
不同人电脑安装了不同Android Studio,gradlew必要时会去网络下载所需要的gradle版本。

Suggestion: use tools:overrideLibrary=”android.support.v17.leanback” to force usage

在manifest中添加,不要忘了也要包含xmlns:tools=”http://schemas.android.com/tools“

《Gradle常见概念讲解&版本问题报错的处理方案》 image


推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
author-avatar
dajiang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有