AS中的gradle学习整理

来源:互联网 发布:淘宝店怎么设置限购 编辑:程序博客网 时间:2024/06/05 22:37

一、gradle作用

  1. 相当于eclipse ant
  2. 用于构建

1.1 构建

  • 构建:生成app的过程,执行一些的命令(appt,aidl,javac,dex,apkbuilder,jarsinger,zipalign)
  • 依赖管理:管理依赖的jar包

1.2 查看错误

  • 方式:
    1. message控制台进行查看
    2. gradle console控制台进行查看
    3. log文件路径: C:\Users\用户名\.AndroidStudio1.5\system\log\idea.log

二、Gradle Scripts位置

  • 切换到Android目录下查看

三、基本语法

3.1 本地依赖

  • 说明: gradle 作为构建工具,能够很方便的使用本地jar包
  • 示例:

    dependencies {     //单文件依赖    compile files('libs/android-support-v4.jar')       //某个文件夹下面全部依赖    compile fileTree(dir: 'libs', include: '*.jar')}android {}

3.2 远程依赖

仓库

  • 仓库:简单理解就是存的一些jar包云端
    • maven
    • ivy
    • jcenter仓库地址
  • 常见写法

    1. mavenCentral()别名,表示依赖是从Central Maven 2 仓库中获取的。
    2. jcenter()别名,表示依赖是从Bintary’s JCenter Maven 仓库中获取的。
    3. mavenLocal()别名,表示依赖是从本地的Maven仓库中获取的
  • 仓库地址举例

    repositories {    ivy {    url "http://ivy.petrikainulainen.net/repo"    }}repositories {    maven {    url "http://maven.petrikainulainen.net/repo"    }}repositories {         mavenCentral()}   repositories {//默认仓库         jcenter()//它是当前世界上最大的Java和Android开源软件构件仓库}
  • 说明: gradle 同时支持maven,ivy
  • 示例(maven):

    repositories {     //从中央库里面获取依赖    mavenCentral()     //或者使用指定的本地maven 库    maven{        url "file://F:/githubrepo/releases"    }     //或者使用指定的远程maven库    maven{        url "远程库地址"    }}dependencies {         //应用格式: packageName:artifactId:version    compile 'com.google.android:support-v4:r13'}android {}

四、各个gradle详解

4.1 Project位置

  1. setting.gradle文件

    • 说明: 针对module的全局配置,它的作用域所包含的所有module
    • 示例:

      //文件中的 app, extras:ShimmerAndroid 都是module,如果还有其他module都需要按照如上格式加进去。include ':app', ':extras:ShimmerAndroid'
  2. build.gradle文件

    • 说明: 整个项目的gradle基础配置文件
    • 内容:
      1. repositories(声明仓库的源)
      2. android gradle plugin的版本
    • 示例:

      buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:1.5.0'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        jcenter()    }}task clean(type: Delete) {    delete rootProject.buildDir}

4.2 Module位置(app中的build.gradle文件)

  • 说明: 为app文件夹下这个Module的gradle配置文件
  • 内容:

    • apply plugin声明
    • android 相关属性:

      1. 版本
      2. 混淆设置
      3. 多渠道打包

        • 清单文件中

          <meta-data    android:name="key"    android:value="${CHANEL_VALUE}"/>
        • 模块中添加productFlavors
        • 调用manifestPlaceholders给清单文件进行赋值
      4. lint检查设置
    • dependencies: libs目录下的jar包依赖

  • 示例:

    // 声明是Android程序apply plugin: 'com.android.application'android {    // 编译SDK的版本    compileSdkVersion 21    // build tools的版本    buildToolsVersion "21.1.1"    defaultConfig {        // 应用的包名        applicationId "me.storm.ninegag"        minSdkVersion 14        targetSdkVersion 21        versionCode 1        versionName "1.0.0"    }    // java版本    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_7        targetCompatibility JavaVersion.VERSION_1_7    }    buildTypes {        release {            // 是否进行混淆            minifyEnabled false            // 混淆文件的位置            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'        }    }    //多渠道打包    productFlavors{        anzhi{            manifestPlaceholders = [CHANEL_VALUE :"anzhi"]        }        googleplay{            manifestPlaceholders = [CHANEL_VALUE :"googleplay"]        }        androidmarket{            manifestPlaceholders = [CHANEL_VALUE :"androidmarket"]        }    }    // 移除lint检查的error    lintOptions {      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')}
1 0