zoukankan      html  css  js  c++  java
  • 学习Android Studio里的Gradle

    一直听说Gradle很强大,只是偶尔用Android Studio创建Demo的时候看到他一次,今天抽个时间完整记录一下。

    1.gradle位置

    Android Studio项目创建好之后,默认有3个gradle文件,分别位于:

    • /settings.gradle 
    • /build.gradle
    • /app/build.gradle

    2.gradle内容

    • settings.gradle 默认只有一行代码,即:
      include ':app'

      新创建的项目只有app一个子项目。如果在project里添加了子项目(Module),按理需要在settings.gradle里添加相应子项目名称,如:

      include ':app', ':androidlibrary'

      提示:当你添加一个Module后,最新版的Android Studio会自动在settings.gradle里配置好,Amazing。

    • 根目录的build.gradle 就比较丰富了,默认有三个“节点”,buildscriptallprojectstask clean。
      buildscript {
          repositories {
              jcenter()
          }
          dependencies {
              classpath 'com.android.tools.build:gradle:1.3.0'
          }
      }
      
      allprojects {
          repositories {
              jcenter()
          }
      }
      
      task clean(type: Delete) {
          delete rootProject.buildDir
      }
      

      buildscript下的第一个子“节点”是声明仓库源,默认是jcenter,之前版本则是mavenCentral,也可以两个center共存。jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。第二个子“节点”是声明Android gradle plugin的版本,Android Studio 1.5版默认是gradle 1.3。

      allprojects下是声明了所有project默认的仓库源。

      task clean声明了一个任务,任务名叫clean(也可以改为其它),任务类型是Delete(也可以是Copy),就是每当修改settings.gradle文件后点击同步,就会删除rootProject.buildDir下的文件(实际上我看到的效果是清除了External Libraries里的包,然后又添加了一次)。

    • app/build.gradle 就是默认android子项目的gradle文件了,也是三个小节点:apply、android和dependencies。
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 15
        buildToolsVersion '19.1.0'
        defaultConfig {
            applicationId "com.nait.picassodemo"
            minSdkVersion 4
            targetSdkVersion 15
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        productFlavors {
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.squareup.picasso:picasso:2.5.2'
        compile 'com.squareup.okhttp:okhttp:2.5.0'
        compile 'com.umeng.analytics:analytics:5.6.1'
        testCompile 'junit:junit:4.12'
    }
    

    appley节点:apply plugin: 'com.android.application'

    以上语句中的apply是一个方法,给它传递了一个参数plugin,plugin 的值是'com.android.application'。如果有多个参数,则以逗号隔开,例如:compile name: 'volley', ext: 'aar'。

    android节点:前面部分很好理解,从字面意思就能了解。buildTypes默认是release(也可以添加debug),minifyEnabled表示是否需要混淆,proguardFiles 表示混淆配置文件的名称。productFlavors表示多渠道包(以后深入学习后再写)。

    dependencies节点:com.开头的部分是Demo项目中添加的引用包,规则是namesapce:package name:version,其它两行是项目创建后默认添加的。

    参考文档:

    http://www.cnblogs.com/youxilua/archive/2013/05/22/3092657.html

    http://www.blogjava.net/wldandan/archive/2012/07/12/382792.html

    http://www.android100.org/html/201502/16/119379.html

  • 相关阅读:
    var与dynamic
    SQL Server占用服务器内存过高
    SQL SERVER 2012/ 2014 分页,用 OFFSET,FETCH NEXT改写ROW_NUMBER的用法
    SQL Server 2012 OFFSET/FETCH NEXT分页示例
    Solr初始化源码分析-Solr初始化与启动
    (c#) 销毁资源和释放内存
    C#中 ThreadStart和ParameterizedThreadStart区别
    MongoDB的C#封装类
    mongo DB for C#
    C#操作MongoDB
  • 原文地址:https://www.cnblogs.com/Kennytian/p/4923993.html
Copyright © 2011-2022 走看看