wangjinger

http://coolshell.info/blog/2015/03/Android-studio-prefrence.html

 

 

什么是Gradle

 

Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域特定(DSL)语言。Android Studio中新建项目成功后自动下载Gradle。 Gradle有几个基本组件:

1.整个项目的gradle配置文件build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

    buildscript {
     repositories {
            mavenCentral()
        }
        dependencies {
            classpath \'com.android.tools.build:gradle:1.1.0\'

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

    allprojects {
        repositories {
            mavenCentral()
        }
    }

内容主要包含了两个方面:一个是声明仓库的源,我这里用的是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了android gradle plugin的版本,android studio 1.1正式版必须要求支持gradle plugin 1.1的版本。


2.app文件夹下这个Module的gradle配置文件,也可以算是整个项目最主要的gradle配置文件

apply plugin: \'com.android.application\'

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath \'com.android.tools.build:gradle:1.1.0\'

        }
    }

    android {
        compileSdkVersion 17
        buildToolsVersion "21.1.2"

        defaultConfig {
            applicationId "com.lippi.recorder"
            minSdkVersion 15
            targetSdkVersion 17
            versionCode 1
            versionName \'1.4\'

            // dex突破65535的限制
            multiDexEnabled true
            // AndroidManifest.xml 里面UMENG_CHANNEL的value为 ${UMENG_CHANNEL_VALUE}
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "channel_name"]
        }

        sourceSets {
            main {
                manifest.srcFile \'src/main/AndroidManifest.xml\'
                java.srcDirs = [\'src/main/java\']
                resources.srcDirs = [\'src/main/resources\']
                aidl.srcDirs = [\'src/main/aidl\']
                renderscript.srcDirs = [\'src/maom\']
                res.srcDirs = [\'src/main/res\']
                assets.srcDirs = [\'src/main/assets\']
                jniLibs.srcDir \'src/main/jniLibs\'
            }

            // Move the tests to tests/java, tests/res, etc...
            instrumentTest.setRoot(\'tests\')

            // Move the build types to build-types/<type>
            // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
            // This moves them out of them default location under src/<type>/... which would
            // conflict with src/ being used by the main source set.
            // Adding new build types or product flavors should be accompanied
            // by a similar customization.
            debug.setRoot(\'build-types/debug\')
            release.setRoot(\'build-types/release\')
        }
        //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。
        lintOptions {
            abortOnError false
        }

        //签名
        signingConfigs {
            debug {
                storeFile file("/home/lippi/.android/debug.keystore")
            }
            relealse {
                //这样写就得把demo.jk文件放在项目目录
                storeFile file("recorder.jks")
                storePassword "recorder"
                keyAlias "recorder"
                keyPassword "recorder"
            }
        }

        buildTypes {
            debug {
                // 显示Log
                buildConfigField "boolean", "LOG_DEBUG", "true"

                versionNameSuffix "-debug"
                minifyEnabled false
                zipAlignEnabled false
                shrinkResources false
                signingConfig signingConfigs.debug
            }

            release {
                // 不显示Log
                buildConfigField "boolean", "LOG_DEBUG", "false"
                //混淆
                minifyEnabled true
                //Zipalign优化
                zipAlignEnabled true

                // 移除无用的resource文件
                shrinkResources true
                //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明
                proguardFiles getDefaultProguardFile(\'proguard-android.txt\'), \'proguard.cfg\'
                //签名
                signingConfig signingConfigs.relealse
            }
        }
        //渠道Flavors,配置不同风格的app
        productFlavors {
            GooglePlay {}
            xiaomi {}
            umeng {}
            _360 {}
            baidu {}
            wandoujia {}
        }
        //批量配置
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

        

分类:

技术点:

相关文章: