美文网首页Android知识库
Android Studio中的Gradle详解

Android Studio中的Gradle详解

作者: fengcz | 来源:发表于2017-02-26 21:12 被阅读262次

    1 Gradle简介

    • 1.1 Gradle是以Groovy语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。
    • 1.2 gradle支持局部构建。
    • 1.3 支持多方式依赖管理:包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs
    • 1.4 gradle是第一个构建集成工具(thefirstbuildintegrationtool),与ant、maven、ivy有良好的相容相关性。
    • 1.5 轻松迁移:gradle适用于任何结构的工程(Gradlecanadapttoanystructureyouhave.)。你可以在同一个开发平台平行构建原工程和gradle工程。通常要求写相关测试,以保证开发的插件的相似性,这种迁移可以减少破坏性,尽可能的可靠。这也是重构的最佳实践。
    • 1.6 gradle的整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架。
    • 1.7 免费开源

    2 Gradle之分步解析

    以一个As工程为例进行说明
    Gradle结构如图

    图片.png

    2.1 根目录下build.gradle如下(project>build.gradle)

    buildscript {
        repositories {
          // 声明仓库源类型,比如我们构建了一个安卓库,要想把库上传供他人进行使用,则可以上传到jcenter中
            jcenter()
        }
        dependencies {
         //当前项目使用的gradle版本号
            classpath 'com.android.tools.build:gradle:2.2.3'
    
        }
    }
    //所有android项目均有该配置
    allprojects {
        repositories {
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }```
    ##2.2 `app`目录下`build.gradle`(module>build.gradle)如下
    
    gradle项目自动编译的时候要读取的配置文件。比如指定项目的依赖包等。
    build.grade有两个,一个是全局的,一个是在模块里面。
    全局的build.grade主要设置的是声明仓库源,gradle的版本号说明等。
    

    // 说明这个模块的类型是android项目,如果是多模块开发,有可能有的值为java/war
    apply plugin: 'com.android.application'
    //配置构建项目的参数
    android {
    //编译使用的SDK版本
    compileSdkVersion 24
    //编译工具的版本
    buildToolsVersion "24.0.2"
    defaultConfig {
    //项目包名,即是AndroidManifest.xml中package的值
    applicationId "com.fcz.funnylife"
    //sdk支持的最低版本
    minSdkVersion 14
    //目标Sdk版本
    targetSdkVersion 24
    //版本号,应用升级会用到
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
      //发布版本的设置
        release {
         //是否进行混淆
            minifyEnabled false
         //混淆使用的文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    
        }
    
    }
    

    //项目中所依赖的工具包
    dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.1.0'
    testCompile 'junit:junit:4.12'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.android.support:recyclerview-v7:24.1.0'
    compile 'com.android.support:design:24.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
    compile 'com.android.support:cardview-v7:24.2.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    }
    }

    ## 2.3 gradle-wrapper.properties
    配置信息
    

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip

    ## 2.4 proguard-rules.pro
    项目进行混淆时的规则存放文件,需混淆的文件或项目需要说名混淆规则,不能混淆的jar包或第三方类库均需要在此文件中进行说明否则项目会出现问题
    ## 2.5 gradle.properties
    grade的运行环境配置,比如使用多少内存之类的。如:
    `org.gradle.jvmargs=-Xmx1536m`
    ## 2.6 setting.gradle
    整个项目的管理,比如项目包含哪些模块等。
    ## 2.7 local.properties
        存放一些系统配置信息
    - 在此文件中可查看sdk、ndk等的位置信息(默认sdk\ndk路径,每个机器对应的路径可能有所不同),一般在新建项目时已经自动配置好了,无须修改
    - 同时可以存放一些用户自定义的配置信息,如签名文件
    如:
          ndk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk\\ndk-bundle
          sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk
    
          key.file=D\:\\workspace\\KeyStore.jks
          keyAlias=key
          keyPassword=123456
          storePassword=123456
    - 在`build.gradle`文件中读取`local.properties`字段
    

    signingConfigs {
    config {

            //加载资源>local.properties
            Properties properties = new Properties()
            InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream() ;
            properties.load( inputStream )
    
            //读取local.properties文件
            def sdkDir = properties.getProperty('key.file')
            storeFile file( sdkDir )
    
            //读取local.properties中字段
            def key_keyAlias = properties.getProperty( 'keyAlias' )
            def key_keyPassword = properties.getProperty( 'keyPassword' ) ;
            def key_storePassword = properties.getProperty( 'storePassword' ) ;
    
            storePassword key_storePassword
            keyAlias key_keyAlias
            keyPassword key_keyPassword
        }
    }
    
    
    
    
    --------------------------------
    *后续内容留着待以后补充,同时欢迎给我留言*

    相关文章

      网友评论

      本文标题:Android Studio中的Gradle详解

      本文链接:https://www.haomeiwen.com/subject/hbrawttx.html