Android Gradle 配置选项合集

本文转载自https://www.bbsmax.com/A/gAJGbNpbzZ/
另外一个Gradle 学习网址http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-aapt-options


//让gradle 引入构建安卓app的插件
apply plugin: 'com.android.application'
 
//自定义变量, 使用的时候不需要 ext 前缀
ext {
    minSdkVersion = 15
    prop2 = "foo"
}
 
//自定义变量
def customProp2 = ["targetSdkVersion":23, "prop2":"bar"];
 
//自定义变量
// 根据日期自动生成build号
def calendar = Calendar.getInstance();
def tt = String.format("%d%02d%02d%02d",
        calendar.get(Calendar.YEAR),
        calendar.get(Calendar.MONTH)+1,
        calendar.get(Calendar.DAY_OF_MONTH),
        calendar.get(Calendar.HOUR_OF_DAY));
 
// 读取local.properties文件
def Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
 
android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
 
    //签名选项
    signingConfigs {
        demoSignCfg {
            keyAlias PROPERTY_FROM_GRADLE.PROPERTIES
            //读取配置
            keyPassword properties.getProperty("key.password")
            storeFile file('demo.keystore')
            storePassword properties.getProperty("key.password")
        }
    }
 
    //编译选项
    compileOptions {
        //使用jdk1.8 编译
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
 
    //代码检查选项
    lintOptions {
        //检查发布构建
        checkReleaseBuilds rootProject.ext.checkReleaseBuilds
        //遇到错误停止
        abortOnError false
    }
 
    //打包选项
    packagingOptions {
        //去除的文件
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
    }
 
    //资源打包选项
    aaptOptions {
        //不压缩的文件
        noCompress 'foo', 'bar'
        //过滤文件
        ignoreAssetsPattern "!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }
 
    //编译dex选项
    dexOptions {
        //堆栈内存最多4g
        javaMaxHeapSize "4g"
    }
 
    //配置
    configurations {
        //去掉所有的 com.android.support:support-annotations 依赖
        all*.exclude group: 'com.android.support', module: 'support-annotations';
    }
 
    //默认全局配置选项
    defaultConfig {
        applicationId "com.example.gradle_test"
        minSdkVersion customProp.minSdkVersion
        targetSdkVersion customProp2.targetSdkVersion
        //使用生成的版本号
        versionCode Integer.parseInt(tt)
        versionName "1.0"
 
        //Manifest 里用的占位符: <... android:label="${activityLabel}" />
        manifestPlaceholders = [ activityLabel:"defaultName"]
     //设置BuildConfig 字段
     buildConfigField "String", "BASE_URL", '"https://www.baidu.com/"'
    }
 
    //构建变种, flavor 和 defaultConfig类型相同
    productFlavors {
        //变种1
        flavor1 {
            packageName "com.example.flavor1"
            versionCode 20
       //覆盖defaultConfig的字段
        buildConfigField "String", "BASE_URL", '"https://www.baidu.com/"'
        }
 
        flavor2 {
 
        }
    }
 
    //配置各种目录
    sourceSets {
        //主要
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }
 
        //测试资源路径
        instrumentTest.setRoot('tests')
 
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
 
    //构建类型
    buildTypes {
        //debug类型(只是个名字而已)
        debug {
            //app id 后缀: com.example.app.debug
            applicationIdSuffix ".debug"
        }
 
        //发布类型(只是个名字而已)
        release {
            //关闭混淆
            minifyEnabled false
            //使用的混淆文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 
            //签名选项
            signingConfig signingConfigs.demoSignCfg
       //移除无用资源
       
            shrinkResources true 
 
            //版本名后缀
            versionNameSuffix ".0"
 
        //指定打包文件名
       applicationVariants.all { variant ->
         variant.outputs.each { output ->
         def outputFile = output.outputFile
           if (outputFile != null && outputFile.name.endsWith('.apk')) {
             //输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk
             def fileName = "apk_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
             output.outputFile = new File(outputFile.parent, fileName)
           }
         }
       }
 
           //过滤abi库
           ndk {
               //只打包如下平台的so
               abiFilters "x86", "armeabi-v7a", "armeabi", 'mips'
           }
        }
 
        //自定义
        jnidebug {
            // 继承自上面的debug.
            initWith debug
 
            applicationIdSuffix ".jnidebug"
            jniDebuggable true
        }
    }
 
    //依赖仓库
    repositories {
        maven { url "https://jitpack.io" }
    }
}
 
//依赖管理
dependencies {
    //编译/运行时依赖
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //$rootProject.ext 指的是 项目的那个build.gradle里面定义了一个ext 变量
    compile ("com.android.support:design:$rootProject.ext.SupportVersion"){
        //不引用如下包
        exclude module: 'support-v4'
        exclude module: 'appcompat-v7'
        //不传递引用
        transitive false
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值