zoukankan      html  css  js  c++  java
  • Android3_了解Gradle工具

    一、Gradle
    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置
    面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。
    关于gradle的介绍暂时不展开,以后有时间继续补充。
    =====================================================
    二、什么是build.gradle?
    Android模式下项目结构中可以看到有两个build.gradle;
    一个是项目级别的,一个是模块级别的;

    打开项目级别的build.gradle看一下,然后详细分析一下:

     repositories这个闭包声明了jcenter()和google()。两个都是代码托管仓库。很多Android项目都会选择将代码托管到jcenter或google上。声明了这两行,我们就可以轻松地引用任何jcenter或google上的开源项目了。

    dependencies闭包中使用classpath声明了一个插件。因为gradle项目不是专门为了android项目而开发的。java、c++很多项目都可以用gradle来构建。如果想要用它来构建Android项目,则需要声明如上所示名称的插件。最后面的数字是插件的版本号。

    这个build.gradle文件通常情况下不需要修改,除非要添加一些全局的项目构建配置。

    接下来是模块的build.gradle:

    这个文件相对复杂些,开始逐行分析一下。

    apply plugin: 'com.android.application'    //这行表示这个是程序应用模块,如果application改成library的话,就表示程序库模块。

    接下来是一个叫做Android的闭包:

    compileSdkVersion 29        //表示的是项目的编译SDK版本,这里是29。

    buildToolsVersion "29.0.2"  //项目构建工具的版本

    然后是一个叫做default config的闭包,可以对项目的更多细节进行构建:

      applicationId "com.example.helloworld"    //项目的包名
      minSdkVersion 15                                     //最低兼容的安卓系统版本为15
      targetSdkVersion 29                                 //系统会为你的应用程序在该目标版本上启动最新的功能和特性
      versionCode 1                                          //用于指定项目的版本号
      versionName "1.0"                                   //用于指定项目的版本名
      testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"  //大概是配置测试的模块,非必要

    接下来看下buildTypes这个闭包:

    buildTypes {
      release {                                //该闭包用于对正式版安装文件的配置
        minifyEnabled false        //是否对项目代码进行混淆,false表示不混淆
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'       //用于指定混淆时的规则文件,这里指定了两个文件,一个是proguard-android-optimize.txt表示对所有项目的通用混淆规则,另一个proguard-rules.pro表示在当前项目的根目录下,里面可以编写对当前项目特有的混淆规则。
      }
    }

    以上就是android闭包的大概解释,接下来分析一下dependencies闭包。

    这个闭包非常强大,它可以指定当前项目所有的依赖关系。

    通常Android Studio项目一共有3种依赖方式:本地依赖、库依赖、远程依赖

    本地依赖可以对本地的Jar包或目录添加依赖关系,

    库依赖可以对项目中的库模块添加依赖关系,

    远程依赖则可以对jcenter库上的开源项目添加依赖关系。

    dependencies {
      implementation fileTree(dir: 'libs', include: ['*.jar'])               //本地依赖声明,将libs目录下所有.jar后缀的文件都添加到项目的构建路径中
      implementation 'androidx.appcompat:appcompat:1.0.2'     //这是一个远程依赖格式,最新AndroidX的,详细了解末尾链接
      implementation 'androidx.constraintlayout:constraintlayout:1.1.3'  //这也是一个远程依赖格式,最新AndroidX的,详细了解末尾链接
      testImplementation 'junit:junit:4.12'                                                 //声明了一个测试用例库
      androidTestImplementation 'androidx.test:runner:1.1.1'                //声明了一个测试用例库
      androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'  //声明了一个测试用例库
    }

    ====================================================

    相关链接:

    Gradle简易入门:https://blog.csdn.net/j3t9z7h/article/details/81976774

    Gradle超详细解析:https://www.jianshu.com/p/822e44a5ea97

    AndroidX 了解一下:https://blog.csdn.net/qq_17766199/article/details/81433706

    AndroidX 它来了:https://blog.csdn.net/mhhyoucom/article/details/83061601

  • 相关阅读:
    Node 文件上传,ZIP
    jquery实现前台倒计时。应用下单24小时后自动取消该订单
    solr 4.4添加索引是新手容易遇到的问题
    solr 4.6的安装配置
    java.lang.OutOfMemoryError: PermGen space
    java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
    mybatis代码生成(generator工具生成代码)
    再次熟悉jdbc连接mysql
    魔方阵,奇数阵。输入一个奇数,产生一个魔方阵
    错误,这个如何解决呢?内存溢出的问提。把JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m 还是不行
  • 原文地址:https://www.cnblogs.com/grooovvve/p/11556773.html
Copyright © 2011-2022 走看看