Android-Studio-Gradle

来源:互联网 发布:网络引论 编辑:程序博客网 时间:2024/06/07 22:54

1.Gradle简介

Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建。有些同学可能会有疑问:”我用AS不记得给Gradle指定过什么构建规则呀,最后不还是能搞出来个apk。“ 实际上,app的构建过程是大同小异的,有一些过程是”通用“的,也就是每个app的构建都要经历一些公共步骤。因此,在我们在创建工程时,Android Studio自动帮我们生成了一些通用构建规则,很多时候我们甚至完全不用修改这些规则就能完成我们app的构建。Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。

2.Gradle下载

在线下载或者更新貌似这个过程不翻墙也是可以下载,但是访问特别慢,建议翻墙下载。
下载的Gradle默认存放地址:
Win平台会默认下载到 C:\Documents and Settings<用户名>.gradle\wrapper\dists(C:\Users\Administrator.gradle\wrapper\dists) 目录
Mac上会默认下载到 /Users/<用户名>/.gradle/wrapper/dists 目录
你会看到这个目录下有个 gradle-x.xx-all 的文件夹, 如果下载实在太慢,但是又不想翻墙的话,可以自己手动到Gradle官网下载对应的版本,然后将下载的.zip文件(也可以解压)复制到上述的gradle-x.xx-all 文件夹下,不过还是建议让它直接下载的好。

3.项目开发过程中遇到的有关Gradle的问题

Android Studio 自动升级 gradle 失败解决方案

1.Android Studio项目中会有一个文件:项目名称\gradle\wrapper\gradle-wrapper.properties
,里面的distribution链接中会带有版本,这个就是启动Android Studio之后会自动更新的版本,比如:
distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip
所以当遇到更新失败,大家就需要先在网上下载对应版本的gradle文件,以下就用gradle-2.14.1版本举例说明。
2.当Android Studio下载过gradle-2.14.1-all之后(不管成功失败),就会在C:/Users/用户名/.gradle/wrapper/dists中出现gradle-2.14.1-all文件夹,打开之后是一串以无规律字符命名的文件夹,我的是8bnwg5hd3w55iofp58khbp6yv,这个可能因人而异。打开之后就是真正的gradle文件。
3.当gradle-2.14.1-all下载失败后,8bnwg5hd3w55iofp58khbp6yv文件夹里的文件是两个,gradle-2.14.1-all.zip.lck和gradle-2.14.1-all.zip.part。
4.(关键步骤)将自己下载好的gradle-2.14.1-all.zip压缩包和解压后的gradle-2.14.1文件夹复制到gradle-2.14.1-all —>8bnwg5hd3w55iofp58khbp6yv文件夹下,将gradle-2.14.1-all.zip.part文件删除,复制一份gradle-2.14.1-all.zip.lck文件,重命名为gradle-2.14.1-all.zip.ok。
5.这个时候,当前文件夹里应该有四个文件gradle-2.14.1(文件夹)、gradle-2.14.1-all.zip(压缩包)、gradle-2.14.1-all.zip.lck(lck文件)、gradle-2.14.1-all.zip.ok(ok文件),好了,大功告成,重启你的Android Studio!

Gradle版本对应关系

Gradle分两个,一个是本地构建用的构建工具,另一个是Android Studio中的插件,用来调用本地的工具,这里说的是插件
project的build.gradle对应:(读取的是studio本地的gradle)
F:\Android-Studio\Studio\gradle\m2repository\com\android\tools\build\gradle
下载地址
这里写图片描述
gradle默认路径对应:(读取的是本地默认路径下缓存的gradle,我们可以先下载好在放到缓存里,这样就不用去翻墙更新了)
C:\Users\Administrator.gradle\wrapper\dists
下载地址
这里写图片描述

Settings–>Gradle 中配置说明

这里写图片描述

当我们在setting下gradle下设置gradle选择“use defalut gradle wrapper(recommended)”时,as就会根据{project.dir}\gradle\wrapper\gradle-wrapper.properties文件中的配置去gradle
我们用as构建android项目时,配置gradle时我们必须在{project.dir}\gradle\wrapper\gradle-wrapper.properties文件中配置gradle包, 配置的gradle必须在缓存目录( “用户主目录/.gradle/wrapper/dists/gradle-..*”)或者在as安装目录下的gradle目录下存在对应的版本。
例如我的电脑:C:\Users\dsfg.gradle\wrapper\dists\gradle-2.4-all
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-2.2.1-all.zip
这个配置的gradle如果在目录“用户主目录/.gradle/wrapper/dists/..”存在的话,as就不会去https://services.gradle.org/distributions/gradle-2.2.1-all.zip去下载了,as就会利用该目录下的缓存,如果该目录下不存在gradle的话as就会去站点根据gradle的版本去下载到“用户主目录/.gradle/wrapper/dists/gradle-2.2.1-all”目录下.

这里写图片描述

如果选择的是“use local gradle distribution”的话表示用的是本地的gradle,本地的gradle是在as的主目录下的gradle目录下,比如我的电脑D:\android开发环境\android-studio-ide-143.2739321-windows\android-studio\gradle\gradle-2.10,而不会去缓存目录 “用户主目录/.gradle/wrapper/dists/gradle-..*”中去找。

这里写图片描述

选择这个会让编译在一定程度上变快,但是就不能更新同步gradle了,如果想要更新同步gradle需要去掉这个选项,选择别的

导入项目一直卡在Building gradle project info

AndroidStudio导入项目一直卡在Building gradle project info,实际上是因为你导入的这个项目使用的gradle与你已经拥有的gradle版本不一致,导致需要下载该项目需要的gradle版本,不知是被墙了还是什么原因,反正就是会一直卡住,直至下载完成(如果能下载完成的话,233)
网上也提供了方法,就是去官网下载gradle的版本,然后放到本地,我就不在这里介绍了,我的解决方法更简单一些,就是直接修改gradle-wrapper.properties文件,无需去下载gradle
解决方案:
1.随便找一个你能运行的as项目
2.打开gradle-wrapper.properties,文件目录:项目/gradle/wrapper/gradle-wrapper.properties
3.复制distributionUrl这一整行的内容,eg: distributionUrl=https://services.gradle.org/distributions/gradle-2.4-all.zip
4.打开你要导入的项目的gradle-wrapper.properties,具体步骤与步骤2相同
5.把步骤3复制的内容,替换你要导入的项目的gradle-wrapper.properties文件的distributionUrl这一行
6.再重启as,导入项目就可以了

app文件夹下Module的gradle配置文件一些常用配置

// 声明是Android程序apply plugin: 'com.android.application'android {// 编译SDK的版本compileSdkVersion 21// build tools的版本buildToolsVersion "21.1.1"defaultConfig {// 应用的包名applicationId "me.storm.ninegag"minSdkVersion 14targetSdkVersion 21versionCode 1versionName "1.0.0"}// java版本compileOptions {sourceCompatibility JavaVersion.VERSION_1_7targetCompatibility JavaVersion.VERSION_1_7}buildTypes {debug {// debug模式}release {// 是否进行混淆minifyEnabled false// 混淆文件的位置proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'}}// 移除lint检查的errorlintOptions {abortOnError false}}dependencies {// 编译libs目录下的所有jar包compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.android.support:support-v4:21.0.2'compile 'com.etsy.android.grid:library:1.0.5'compile 'com.alexvasilkov:foldable-layout:1.0.1'// 编译extras目录下的ShimmerAndroid模块compile project(':extras:ShimmerAndroid')}
以上就是我在做项目使用Gradle的时候遇到的一些问题,做了个记录,如果大家也遇到这些问题,希望能对你有所帮助。
原创粉丝点击