zoukankan      html  css  js  c++  java
  • Android开发工具——Gradle知识汇总

    1.什么是构建工具

    Eclipse大家都知道是一种IDE(集成开发环境),最初是用来做Java开发的,而Android是基于Java语言的,所以最初Google还是希望Android能在Eclipse上进行开发,为了满足这个需求,Google开发了一个叫ADTAndroidDeveloper Tools)的东西,正是因为有了ADT,我们只需要码好代码,然后直接在Eclipse上进行编译、运行、签名、打包等一系列流程。某种意义上 ADT 就是我们的构建工具。   

    而自Google推出AndroidStudio以来,就宣布默认使用Gradle来作为构建工具,并且之后放弃更新ADT   

    一般来说,构建工具除了以上提到的编译、运行、签名、打包等,还具备依赖管理的功能,如果需要用到第三方库,一般都是把jar文件添加到libs目录。但是假设第三方库有更新,需要下载最新的Jar文件,如果引用的第三方库多,就毫无管理可言。   

    现在Gradle引用第三方库方式是这样的:     

    compile 'com.android.support:support-v4:24.0.1'

    直接可以看到源地址,升级的话直接改下版本号就可以了,这就是所谓的依赖管理。所以构建工具就是对项目进行编译、运行、签名、打包、依赖管理等一系列功能的合集,传统的构建工具有MakeAntMavenIvy等,而Gradle是新一代的自动化构建工具。而且它是一个独立的项目,跟ASAndroid无关,官方网站:https://gradle.org/ ,类似AntMaven这类构建工具都是基于xml来进行描述的,很臃肿,而Gradle采用的是一种叫做Groovy的语言,语法跟Java语法很像,但是是一种动态语言,而且在Java基础上做了不少改进,用起来更加简洁、灵活,而且Gradle完全兼容 MavenIvy,这点基本上宣布了MavenIvy可以被抛弃了,Gradle的推出主要以Java应用为主,当然目前还支持AndroidCC++Google在推出AS的时候选中了Gradle作为构建工具,做了个AS的插件叫 Android Gradle Plugin,所以我们能在AS上使用Gradle完全是因为这个插件的原因。在项目的根目录有个build.gradle文件,里面有这么一句代码:

    classpath 'com.android.tools.build:gradle:2.1.2'   

    这个就是依赖Gradle插件的代码,后面的版本号代表的是android gradle plugin的版本,而不是Gradle的版本,这个是Google定的,跟Gradle官方没关系。


    2.Gradle Wrapper          

    现在默认新建一个项目,然后点击运行,默认就会安装Gradle Wrapper

    假设我们本地有多个项目,一个是比较老的项目,还用着Gradle 1.0的版本,一个是用了Gradle 2.0的版本,但是两个项目想同时运行,只装了Gradle 1.0的话肯定不行,所以为了解决这个问题,Google 推出了Gradle Wrapper的概念,就是他在你每个项目都配置了一个指定版本的Gradle,可以理解为每个Android项目本地都有一个小型的Gradle,通过这个每个项目你可以支持用不同的Gradle版本来构建项目。   


    3. Android项目包含的Gradle配置文件


    从上到下依次分析:

    1. app文件夹下这个Modulegradle配置文件可以算是整个项目最主要的gradle配置文件,具体里面的配置后面再介绍。

    2.每一个Module都需要有一个gradle配置文件,语法都是一样,唯一不同的是开头声明的是apply plugin: ‘com.android.library’

    3. wrapper.properties这个文件的内容声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的,这个文件里指明的gradle版本不对也是很多导包不成功的原因之一。

    4.这个文件是整个项目的 gradle基础配置文件,默认的内容就是声明了 android gradle plugin 的版本。

    5.全局的项目配置文件,里面主要声明一些需要加入gradlemodule


    4. 正确导入下载的开源项目

    4.1 下载一个Demo,先打开每个module下的gradle文件,即app目录下的build.gradle以及各个library下的build.gradle ,首先查看 compileSdkVersion buildToolsVersion,因为有些时候你本地的版本和下载的版本不一致,那么就会导致失败。   

    4.2 然后就是检查gradle-wrapperGoogle有些时候要求不同的AS支持不同的Gradle版本。

    比如AS1.0的时候要求必须使用Gradle 1.x的版本,等到AS2.0的时候,Google不支持Gradle1.x的版本,这个时候你必须手动更新下android gradle plugin的版本,然后重新同步下。

    检查以上两个地方基本就可以导入并运行了。


    5. Gradle的配置

    Android Stduio上新建一个全新的Android项目,一般就包含了三个相关的gradle配置文件,分别是根目录下的build.gradlesettings.gradleapp目录下的build.gradle文件,前两个文件配置比较简单,上面已经有所介绍,下面主要介绍下app/build.gradle文件的详细配置。

    一般来说,新建的一个项目,在app目录会生成一个build.gradle文件,app目录基本是项目的一个主要目录了,所有的功能开发都是在这个目录下,自然该目录下的 build.gradle 也是整个项目最重要的配置文件,这个文件对全新的项目来说会包含三部分:

    apply plugin声明   

    最顶部有一行代码是这样的:

    apply plugin: 'com.android.application'   

    代表该项目是一个Android项目,而且一个Android项目只有一句这个声明。   

    如果你的项目有引用一些module,你可以理解成通过源码的方式引用一些android library,那么你的module开头需要声明是一个android library,那需要这样写:   

    apply plugin: 'com.android.library'

    dependencies节点   


    意为依赖的意思,所以这里就是用来管理依赖的地方。依赖一般有三种: 

    1.可以在AS中直接依赖jar文件,靠的就是这行代码。意思是编译libs目录下的所有 jar包。

    compile fileTree(dir: 'libs', include:['*.jar']) 

    2.第二种比较常见,就是直接依赖远程项目名字 +版本号,至于该项目是放在哪里的呢?一般是放在jcentermaven仓库的,这个可以在项目根目录下的build.gradle指定远程仓库地址,甚至可以在本地搭建一个私有仓库,然后指定本地仓库地址。   

    3.第三种就是类似原始的引用android library的方式,一般是你们公司内部的项目,或者改第三方库的源码,同时本地又没有搭建私有仓库,才会选择这种方式。这种方式目前很不推荐了。

    android节点      



    buildTypes意为编译类型,这里声明了debugrelease两种类型,当然你也可以声明其他类型,名字随意取,可以看到debugrelease两种类型签名所用的配置不一样,这个配置具体详细也就是在上部分signingConfigs节点指定的,那里面的一些密码信息是在生成keystore文件时设置的。    


  • 相关阅读:
    七款HTML在线编辑器[下载]
    三层开发框架
    vs2005快捷键
    Javascript的IE和Firefox兼容性汇编
    序列化
    [Web2.0]web2.0中的tag及其技术实现
    结合FlyTreeView 无限级别的分类
    sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)
    FlyTreeView4.3.2.82 破解方法 (NineRays.Web.UI.WebControls.FlyTreeView)
    asp.net 获取cpu序列号 硬盘ID 网卡硬地址
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461603.html
Copyright © 2011-2022 走看看