一、初始配置:(新建项目自动配置好的):

1.build.gradle(app)

apply plugin: 'com.android.application'
//下边apk重命名使用

static def buildTime() {def date = new Date()def formattedDate = date.format('yyyyMMdd-HHmm')def iml = new File('app/app.iml')if (iml.exists()) {return 'time'} else {return formattedDate    }}

static def getGitRevision() {def iml = new File('app/app.iml')if (iml.exists()) {return 'git_xxxx'} else {return 'git rev-parse --short HEAD'.execute().text.trim()    }}
//配置android {    compileSdkVersion 26buildToolsVersion "25.0.3"defaultConfig {//此里边是默认配置,下边buildTypes里边可以根据平台不同修改        applicationId "wangjing.testandroid"minSdkVersion 15targetSdkVersion 26versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        //后期加入    // 设置支持的 SO 库构架,注意这里要根据你的实际情况来设置    ndk { abiFilters 'armeabi-v7a' }  //'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64'        //使用manifestPlaceholders替换变量,主要替换AndroidManifest.xml中的值:<meta-data android:name="UMENG_APPKEY"// android:value="${umeng_app_key}"/>    manifestPlaceholders = [GETUI_APP_ID    : "P5rfdfytdftghgujghi6",        //推送
                            GETUI_APP_KEY   : "xcftdctyfytfyt687ty8",                            GETUI_APP_SECRET: "dte654r6r65trrftftgf",                            PACKAGE_NAME    : applicationId,                            APPLICATION_ID  : applicationId,                            INTENT_HOME     : 'intent.Placeholders1',                            INTENT_DEFAULT  : 'intent.Placeholders2',                            SHARED_USER_ID  : '']

   //buildConfigField代码中值的应用:BuildConfig.GIT_VERSION   buildConfigField 'String', 'GIT_VERSION', '".' + getGitRevision() + '"'   //当前git版本号
   buildConfigField 'String', 'TARGET_URL', '"wangjing.com"'                   //服务器    buildConfigField 'String', 'ROOT_DIR', '"WangJingDir"'                  //根文件夹    buildConfigField 'String', 'TARGET', '"测试"'                           //平台

    buildConfigField 'String', 'LOG_TAG', '"WangJingDir"'                   //日志Tag    buildConfigField 'int', 'LOG_LEVEL', '1'                                //日志级别

    buildConfigField 'String', 'UMENG_APPKEY', '"dssscfdeffder343534tefrfre"' //友盟APPKEY    buildConfigField 'String', 'UMENG_CHANNEL', '"wangjing"'             //友盟渠道    buildConfigField 'boolean', 'UMENG_ENCRYPT', 'false'                    //友盟日志加密    buildConfigField 'String', 'APP_MODEL', '"WANGJING"'    buildConfigField 'String', 'INVITATIONCODE', '"fdvedrfg"'                  //默认班级码    buildConfigField 'int', 'MESSAGE_REFRESH_TIME', '180'                   //消息中心刷新时间间隔(秒)    buildConfigField 'String', 'SHARE_URL', '"http://d.wangjing.com"'          //分享url

    //文件系统参数    buildConfigField 'String', 'SERVER_URL', '"http://fs.wangjing.com"'    buildConfigField 'String', 'APPKEY', '"filewj"'    buildConfigField 'String', 'SECRET', '"fvbfdvbfdvbfgvbfer4t4t54tg"'    buildConfigField 'String', 'BUTCKET1', '"vfdvgrgrtgr4g4eg4r5g4g4eg4gg"'  // 作业活动问答    buildConfigField 'String', 'BUTCKET2', '"f4rtfgr4g4gt45y45ytygftrttfg"'  // 头像课程封面

    buildConfigField 'boolean', 'isPad', 'false'                                 // 是不是pad    buildConfigField 'boolean', 'isTest', 'false'                                 // 是不是测试平台    buildConfigField 'boolean', 'isHuaweiPad', 'false'                           // 是不是定制华为pad    buildConfigField 'String', 'DWONURLPRE', '"http://dvdfvdfv.aliyuncs.com/"'  //阿里云上传默认前缀 
  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //默认的混淆文件
    // 重命名APK    applicationVariants.all { variant ->
        variant.outputs.each { output ->            def targetName = variant.buildType.name;            targetName = targetName.replace("debug", "test")            def apkName = "mobile-${targetName}-v${variant.versionName}-${buildTime()}-${getGitRevision()}.apk"            def dir = output.outputFile.getParent()            def apkFile = new File(dir, apkName)            output.outputFile = apkFile        }    }
  }
//签名配置signingConfigs {    release {//其中的
RELEASE_STOREFILE值可以定义在gradle.propertises中调用
        storeFile file(RELEASE_STOREFILE)        storePassword RELEASE_STORE_PASSWORD        keyAlias RELEASE_KEY_ALIAS        keyPassword RELEASE_KEY_PASSWORD    }}

//原本初始化时候的  buildTypes {        release {            minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}    }//被替换为
buildTypes {    debug {        minifyEnabled falseshrinkResources falsedebuggable truesigningConfig signingConfigs.release            buildConfigField 'boolean', 'isTest', 'true'                           // 是test/debug平台buildConfigField 'String', 'TARGET_URL', '"wangjing.com"'            //服务器平台buildConfigField 'String', 'TARGET', '" 测试"'                       //在‘我’中显示平台buildConfigField 'int', 'LOG_LEVEL', '1'                             //日志级别buildConfigField 'String', 'SERVER_URL', '"http://fs.wangjing.com"'  //文件服务器配置ndk { abiFilters 'armeabi-v7a', 'x86' }    }

    demo {        minifyEnabled falseshrinkResources falsedebuggable truesigningConfig signingConfigs.release        buildConfigField 'String', 'TARGET_URL', '"wangjing.com"'buildConfigField 'String', 'TARGET', '" DEMO"'buildConfigField 'int', 'LOG_LEVEL', '1'buildConfigField 'String', 'UMENG_CHANNEL', '"wangjingdemo"'buildConfigField 'String', 'SERVER_URL', '"http://fs.wangingdemo.com"'  //文件服务器配置ndk { abiFilters 'armeabi-v7a', 'x86' }    }

    release {        minifyEnabled falsedebuggable falsesigningConfig signingConfigs.release        buildConfigField 'String', 'TARGET_URL', '"wangjing.com"'buildConfigField 'String', 'TARGET', '""'buildConfigField 'int', 'LOG_LEVEL', '5'buildConfigField 'String', 'UMENG_CHANNEL', '"wangjing"'buildConfigField 'boolean', 'UMENG_ENCRYPT', 'true'                   //友盟日志加密buildConfigField 'String', 'SERVER_URL', '"http://fs.wangjing.cn"'       //文件服务器配置}

    local {        initWith release        minifyEnabled falseshrinkResources falsedebuggable truebuildConfigField 'String', 'TARGET', '" 本地"'                //在‘我’中显示平台buildConfigField 'int', 'LOG_LEVEL', '1'                      //日志级别ndk { abiFilters 'armeabi-v7a', 'x86' }    }

    pad_test {        initWith debug //用debug的配置

        manifestPlaceholders = [INTENT_HOME   : 'android.intent.category.HOME',INTENT_DEFAULT: 'android.intent.category.DEFAULT',SHARED_USER_ID: '']

        buildConfigField 'String', 'APP_MODEL', '"WANGJING-PAD"'buildConfigField 'boolean', 'isPad', 'true'                           // 是pad}

    pad_demo {        initWith demo

        manifestPlaceholders = [INTENT_HOME   : 'android.intent.category.HOME',INTENT_DEFAULT: 'android.intent.category.DEFAULT',SHARED_USER_ID: '']

        buildConfigField 'String', 'APP_MODEL', '"WANGJING-PAD"'buildConfigField 'boolean', 'isPad', 'true'                           // 是pad}

    pad_release {        initWith release

        manifestPlaceholders = [INTENT_HOME   : 'android.intent.category.HOME',INTENT_DEFAULT: 'android.intent.category.DEFAULT',SHARED_USER_ID: '']

        buildConfigField 'String', 'APP_MODEL', '"WANGJING-PAD"'buildConfigField 'boolean', 'isPad', 'true'                           // 是pad}

    ruiyipad_release {        initWith release

        buildConfigField 'String', 'APP_MODEL', '"WANGJING-PAD-RUIYI"'buildConfigField 'boolean', 'isPad', 'true'                           // 是pad}

    huaweipad_test {        initWith pad_test

        buildConfigField 'String', 'APP_MODEL', '"WANGJING-PAD-HUAWEI"'buildConfigField 'boolean', 'isHuaweiPad', 'true'                     // 是不是华为pad}

    huaweipad_demo {        initWith pad_demo

        buildConfigField 'String', 'APP_MODEL', '"WANGJING-PAD-HUAWEI"'buildConfigField 'boolean', 'isHuaweiPad', 'true'                     // 是不是华为pad}

    huaweipad_release {        initWith pad_release

        buildConfigField 'String', 'APP_MODEL', '"WANGJING-PAD-HUAWEI"'buildConfigField 'boolean', 'isHuaweiPad', 'true'                     // 是不是华为pad}}

packagingOptions {//打包的时候提示哪个出错了,exclude排除一下    exclude 'META-INF/DEPENDENCIES'exclude 'META-INF/NOTICE'exclude 'META-INF/LICENSE'exclude 'META-INF/LICENSE.txt'exclude 'META-INF/NOTICE.txt'}

dexOptions {//将运行内存设置大一些,运行变快    preDexLibraries falsejavaMaxHeapSize "4g"}
}

dependencies {//依赖,引用
  compile project(':logic')//引入本地lib项目,记得settings.gradle里边加入引用:include ':app',':logic'
compile fileTree(dir: 'libs', include: ['*.jar'])//引入本地jar包    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'})//两个项目中都包含support-annotations,去除掉espresso-core里边的group:'com.android.support'中的support-annotations,用本项目app下边的support-annotations    compile 'com.android.support:appcompat-v7:26.+'compile 'com.android.support.constraint:constraint-layout:1.0.2'testCompile 'junit:junit:4.12' //这个没有什么用,出错可以去除掉}
repositories {    maven {//导入外部的东西时,需要加入自己的maven外部的库        url "http://hjghujhniknukhnh/releases/"maven { url "https://ffvytfgytgyu/maven" }//https://github.com/PhilJay/MPAndroidChart图表依赖maven { url "https://jitpack.io" }    }    flatDir {//将aar文件复制到app module目录下的libs文件夹中,然后打开app module目录下的build.gradle配置文件        dirs 'libs'}}

2.build.gradle(Project:wangjing)//自动生成
buildscript {    repositories {        jcenter()    //如果有maven库的引入,加入     //mavenCentral()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.3.3'

// NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files}}

allprojects {    repositories {        jcenter()
   //如果有maven库的引入,加入    //mavenCentral()
}}
// 运行gradle clean时,执行此处定义的task // 该任务继承自Delete,删除根目录中的build目录 // 相当于执行Delete.delete(rootProject.buildDir) // gradle使用groovy语言,调用method时可以不用加()
task clean(type: Delete) {    delete rootProject.buildDir}

3.build.gradle(Module:logic)
apply plugin: 'com.android.library'

android {    compileSdkVersion 25buildToolsVersion '25.0.2'

defaultConfig {        minSdkVersion 11targetSdkVersion 25versionCode 1versionName "1.0"}    buildTypes {        release {            minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}    }}

repositories {    flatDir {        dirs 'libs'}}

dependencies {    compile project(':pay')

    compile fileTree(include: ['*.jar'], dir: 'libs')    testCompile 'junit:junit:4.12'// 友盟统计compile 'com.umeng.analytics:analytics:latest.integration'}

注:首次上传项目到git上需要配置gitignore文件1.(app最外部项目)
*.iml.gradle/local.properties/.idea/workspace.xml/.idea/libraries.DS_Storebuild/captures.svn/.idea/
2.(内部)只需要去除
build

基本配置完成!二、配置讲解
  1. apply plugin: 'com.android.application'//说明module的类型,com.android.application为程序,com.android.library为库
  2. android {
  3. compileSdkVersion 22//编译的SDK版本
  4. buildToolsVersion "22.0.1"//编译的Tools版本
  5. defaultConfig {//默认配置
  6. applicationId "com.nd.famlink"//应用程序的包名
  7. minSdkVersion 8//支持的最低版本
  8. targetSdkVersion 19//支持的目标版本
  9. versionCode 52//版本号
  10. versionName "3.0.1"//版本名
  11. manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"hsq" ]//声明友盟渠道名是可变的
  12. }
  13. sourceSets {//目录指向配置
  14. main {
  15. manifest.srcFile 'AndroidManifest.xml'//指定AndroidManifest文件
  16. java.srcDirs = ['src']//指定source目录
  17. resources.srcDirs = ['src']//指定source目录
  18. aidl.srcDirs = ['src']//指定source目录
  19. renderscript.srcDirs = ['src']//指定source目录
  20. res.srcDirs = ['res']//指定资源目录
  21. assets.srcDirs = ['assets']//指定assets目录
  22. jniLibs.srcDirs = ['libs']//指定lib库目录
  23. }
  24. debug.setRoot('build-types/debug')//指定debug模式的路径
  25. release.setRoot('build-types/release')//指定release模式的路径
  26. }
  27. signingConfigs {//签名配置
  28. release {//发布版签名配置
  29. storeFile file("fk.keystore")//密钥文件路径
  30. storePassword "123"//密钥文件密码
  31. keyAlias "fk"//key别名
  32. keyPassword "123"//key密码
  33. }
  34. debug {//debug版签名配置
  35. storeFile file("fk.keystore")
  36. storePassword "123"
  37. keyAlias "fk"
  38. keyPassword "123"
  39. }
  40. }
  41. buildTypes {//build类型
  42. release {//发布
  43. minifyEnabled true//混淆开启
  44. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'//指定混淆规则文件
  45. signingConfig signingConfigs.release//设置签名信息
  46. }
  47. debug {//调试
  48. signingConfig signingConfigs.release
  49. }
  50. }
  51. packagingOptions {
  52. exclude 'META-INF/ASL2.0'
  53. exclude 'META-INF/LICENSE'
  54. exclude 'META-INF/NOTICE'
  55. exclude 'META-INF/MANIFEST.MF'
  56. }
  57. lintOptions {
  58. abortOnError false//lint时候终止错误上报,防止编译的时候莫名的失败
  59. }
  60. //打包-渠道
  61. productFlavors {
  62. hsq{}
  63. hsq_dx{}
  64. hsq_wx{}
  65. baidu{}
  66. yingyongbao{}
  67. ppzhushou{}
  68. anzhi{}
  69. zhushou360{}
  70. huawei{}
  71. lenovomm{}
  72. wandoujia{}
  73. mumayi{}
  74. meizu{}
  75. youyi{}
  76. sougou{}
  77. }
  78. //打包-防渠道代码重复处理
  79. productFlavors.all { flavor ->
  80. flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]
  81. }
  82. }
  83. dependencies {//依赖
  84. compile fileTree(dir: 'libs', exclude: ['android-support*.jar'], include: ['*.jar'])   //编译lib目录下的.jar文件
  85. compile project(':Easylink')//编译附加的项目
  86. compile project(':ImageLibrary')
  87. compile project(':ImageResLibrary')
  88. compile project(':Ofdmtransport')
  89. compile project(':PullToRefreshLibrary')
  90. compile project(':RecorderLibrary')
  91. compile project(':WebSocket')
  92. compile project(':WidgetLibrary')
  93. compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'//编译来自Jcenter的第三方开源库
  94. }

转载于:https://www.cnblogs.com/wangjinger/p/AndroidBuild.html

Android build.gradle 配置相关推荐

  1. 史上最全Android build.gradle配置详解

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项 ...

  2. Android build.gradle配置详解

    AndroidStudio中的Gradle文件 Android Studio是采用gradle来构建项目的,gradle是基于groovy语言. 如上图所示,创建一个AndroidStudio项目,会 ...

  3. android 项目build.gradle,Android build.gradle 配置详解

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Gradle 简介 Android Studio 是采用 Gradle 来构建项目的.Gradle 是一个非常先进的项目 ...

  4. android Android build.gradle 配置注释

    //指定moudle的类型(com.android.application指定为应用程序,com.android.library指定为类库,这个可以从引入的库中区分) apply plugin: 'c ...

  5. Android Studio build.gradle配置详解

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项 ...

  6. 【错误记录】Android Studio 中 build.gradle 配置 buildFeatures prefab 错误处理 ( AS 4.1 以上开发环境 | Gradle及插件版本 )

    文章目录 一.问题描述 二.Android Studio 版本.Gradle 版本.Gradle 插件版本 Android Gradle 插件版本说明 一.问题描述 起因 : 需要配置 Android ...

  7. Android开发之深入理解Android Studio构建文件build.gradle配置

    通过这篇文章的学习,你会对build.gradle文件有一个全新的认识,可以将TeachCourse文章提到的相关说明作为文档参考,方便在另一个module中引入,代码如下: apply plugin ...

  8. build.gradle配置参数详解

    转载地址:http://blog.csdn.net/baidu_31093133/article/details/51860637 build.gradle配置参数详解//声明是Android程序ap ...

  9. Android build.gradle文件详解(转述自《Android第一行代码》第二版)

    Android build.gradle文件详解 1. 最外层目录下的build.gradle文件 1.1 repostories 1.2 dependencies 2. app目录下的build.g ...

最新文章

  1. 简单工厂模式、工厂方法模式、抽象工厂模式 之间的对比
  2. 怎么判断日出时间早晚_云南8日游攻略以及费用,从西安到云南旅游怎么安排行程?...
  3. 排序算法之---堆排序(很重要的一个结构,新手入门必备)
  4. 第1本书:CCIE Practical Studies, Volume I-第13天
  5. 在jmeter中怎么提取数据_Jmeter正则提取请求响应数据
  6. excel文件修复工具_文件恢复工具 – 修复文件属性篡改
  7. 吊打本地搜索神器everthing,最快 最强的电脑本地搜索神器!
  8. 车牌号测试打分最准确的软件,汽车牌号码测吉凶_车牌号码测试打分_周易测车牌号吉凶 神巴巴测试网...
  9. IPD数字诀(一二三四五六七八九十)
  10. RobotStudio动态夹具的创建
  11. java程序设计--孙鑫java无难事Lesson3《包、类和方法说明符、垃圾回收、接口》
  12. 21个奇葩注释,程序员看了都点赞
  13. 鹿晗关晓彤公开恋情,是如何把微博服务器搞炸的
  14. health_parent的linux环境
  15. 王者荣耀上官婉儿的语录
  16. 企业级运维——Mysql主从复制(异步、半同步、全同步)
  17. 基于C++MFC的学生成绩管理系统
  18. 人工神经网络的基本原理及其应用
  19. 从互动直播到在线抓娃娃,实时视频超低延迟架构的思考与实践
  20. 加速度运动/弹性运动/模拟重力场/拖拽运动

热门文章

  1. css实现多行换行,并自动在后面加省略号
  2. iTOP-RK3588开发板M2接口固态硬盘测试
  3. eclipse安装教程(2021最新版)超级易懂到吐血
  4. 经典电影里的十二生肖
  5. android 显示数学函数,MathView,在Android应用中,显示数学公式的库,下载MathView的源码_GitHub_开发99...
  6. android中服务器返回0E-10是什么意思?
  7. Java对象数组与JSON相互转换
  8. CentOS7 配置双网卡
  9. android的orm框架有哪些,Android 常用的ORM框架详解
  10. Py之tensorflow-federated:tensorflow-federated的简介、安装、使用方法之详细攻略