module下的gradle文件的基本配置

本文将介绍平常android开发当中项目module的gradle文件中的基本配置(不包含创建的library进行上传到jcenter的脚本配置),以及针对一些常见的问题进行说明。
欢迎加入交流群:微信群(AndroidRunner )、QQ群(314896948)
欢迎关注微信公众号:AndroidRunner

在项目的module目录下的gradle文件主要包含三个节点,分别是apply、android和dependencies,下面就将这三个节点分别做一个介绍。

1.apply节点

apply所标识的用以区分了application以及library。这个节点的作用就是用来区分当前module是可以作为应用程序还是作为一个应用程序的支持库module。

application module使用如下:

applyplugin:'com.android.application'

library使用如下:

apply plugin: 'com.android.library'

2.android节点

  • packagingOptions

      packagingOptions {
          pom.properties'
          exclude 'project.properties'
          exclude 'META-INF/LICENSE.txt'
          exclude 'META-INF/LICENSE'
          exclude 'META-INF/NOTICE.txt'
          exclude 'META-INF/NOTICE'
          exclude 'META-INF/DEPENDENCIES.txt'
          exclude 'META-INF/DEPENDENCIES'
      }
    

我们在开发过程当中可能会遇到这样的问题,导入了很多的三方库或者框架,在项目编译的时候会报重复文件错误,如下图



解决这个错误的方法就可以在packagingOptions中加入以下两句:

    exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
    exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
  • lintOptions

      lintOptions {
             disable 'MissingTranslation'
          abortOnError false
          ignoreWarnings true
      }
    

其中disable 'MissingTranslation'是在lint检查的时候禁用翻译缺少检查,如果你的项目不考虑国际化可以加上,如果需要国际化就去掉该行即可。abortOnError false设置在lint检查时如果出现error是否需要中断,如果对lint检查要求不高可以设置为false,关心lint检查的话设置true即可。ignoreWarnings true设置是否忽略警告,在lint检查时会对一些代码进行警告比如有用了过时API的注解地方,一般可以设置为true,忽略掉警告。lintOptions还有其他一些控制开关,具体可以点进lintOptions源码查看。

  • signingConfigs

      signingConfigs {
          debug {
              keyAlias 'android'
              keyPassword 'android'
              storeFile file('E:/debug.jks')
              storePassword 'android'
          }
          release {
              keyAlias 'psw'
              keyPassword 'psw'
              storeFile file('keystore addresss')
              storePassword 'psw'
          }    
         }
    

signingConfigs是项目module的签名配置信息,主要包括调试版和发布版,考虑隐私信息可以仅使用debug即可,release在导出包使用手动添加。几个字段含义应该开发者都比较清楚了,这里不做介绍。

  • compileSdkVersion

      compileSdkVersion 23
    

编译SDk的版本号,改版本号决定使用的SDK对应的android源码,android源码随着版本的不断更新,各个版本间也有着一定的区别,这里所填写的版本号关系到具体代码的一些API的使用,可以根据当前APP的版本兼容要求做相应的兼容。

  • buildToolsVersion

      buildToolsVersion "23.0.2"
    

使用的编译工具版本号指定,对于应编译版本号即可。

  • defaultConfig

      defaultConfig {
          applicationId "com.xxx"//app的唯一标识符,一般使用包名
          minSdkVersion 14 //app要求最低的SDK版本号 对于应android可使用的最低系统版本
          targetSdkVersion 23 //目标版本SDK版本号
          versionCode 1 // app版本号
          versionName "1.0.0" // app版本名称
    
          // 多渠道打包默认渠道(以umeng为例)
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GF"]
      }
    

defaultConfig里面可以设置app的一些相关默认配置信息,包括应用的id,可使用最低版本,版本号,版本名称等。

  • buildTypes

      buildTypes {
          debug {
              minifyEnabled false
              zipAlignEnabled false
              shrinkResources false
          }
          release {
              minifyEnabled true
              zipAlignEnabled true
              shrinkResources true
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
    

buildTypes设置编译对应的版本时所需的一些配置设置,可以针对调试版和发布版进行不同的设置是否需要混淆、是否需要压缩、是否需要删减无用资源等。

  • sourceSets

      sourceSets.main {
          jniLibs.srcDir 'libs'
      }
    

sourceSets用来设置项目对应文件资源的路径位置,比如习惯平常的把jni文件so包存放在libs目录下即可设置jniLibs.srcDir 'libs',也可以设置其他文件目录,包括源码,资源,jar包等等。

  • productFlavors

      productFlavors {
         GF {}
          wandoujia {}
          //... add more
      }
    
      productFlavors.all { flavor ->
          flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
      }
    

productFlavors提供了多渠道打包的渠道设置,成列了可生产的取到列表,productFlavors.all通过遍历productFlavors中的所有条目对应替换AndroidManifest.xml下面meta节点key为UMENG_CHANNEL_VALUE的value,从而生成对应渠道的apk包

3.dependencies

dependencies下面是项目的依赖第三方支持库存放,包括libs目录及目录树下子目录所有的jar包,以及按照jcenter仓库库命名的的三方支持库。样例如下:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'

    compile 'com.squareup.picasso:picasso:2.5.2' //picasso
    compile 'com.squareup.okio:okio:1.6.0' //okio
    compile 'com.squareup:otto:1.3.8' //otto
    compile 'com.alibaba:fastjson:1.2.7' //fastjson
}

下面给出一个完整的gradle基本配置#

apply plugin: 'com.android.application'

android {

    packagingOptions {
        exclude 'project.properties'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/DEPENDENCIES'
    }

    lintOptions {
        disable 'MissingTranslation'
        abortOnError false
        ignoreWarnings true
    }

    signingConfigs {
        debug {
            keyAlias 'android'
            keyPassword 'android'
            storeFile file('E:/debug.jks')
            storePassword 'android'
        }
        release {
            keyAlias 'psw'
            keyPassword 'psw'
            storeFile file('keystore addresss')
            storePassword 'psw'
        }
    }

    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.xxx"//app的唯一标识符,一般使用包名
        minSdkVersion 14 //app要求最低的SDK版本号 对于应android可使用的最低系统版本
        targetSdkVersion 23 //目标版本SDK版本号
        versionCode 1 // app版本号
        versionName "1.0.0" // app版本名称

        // 多渠道打包默认渠道(以umeng为例)
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GF"]
    }

    buildTypes {
        debug {
            minifyEnabled false
            zipAlignEnabled false
            shrinkResources false
        }
        release {
            minifyEnabled true
            zipAlignEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets.main {
        jniLibs.srcDir 'libs'
    }

    productFlavors {
        GF {}
        wandoujia {}
        //... add more
    }

    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'

    compile 'com.squareup.picasso:picasso:2.5.2' //picasso
    compile 'com.squareup.okio:okio:1.6.0' //okio
    compile 'com.squareup:otto:1.3.8' //otto
    compile 'com.alibaba:fastjson:1.2.7' //fastjson
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,280评论 25 707
  • 参考 中文官网构建指南:https://developer.android.google.cn/studio/bu...
    FinalSky阅读 5,303评论 0 16
  • Gradle配置最佳实践 本文会不定期更新,推荐watch下项目。如果喜欢请star,如果觉得有纰漏请提交issu...
    Solang阅读 1,616评论 0 4
  • 序 言 初一的又一学期过去了。在这一年的学习过程中,你有很顽强的对抗,对抗你的...
    一溪风月阅读 460评论 0 2
  • 挑了一个冷门的工作室,但是我很喜欢,因为是插画。还是很期待的。 今天班级最后一次出去,我也最后的确定了,我没有一点...
    刀井阅读 281评论 0 0