Gradle其他好处就不多说,在android应用发布的时候,如果要统计多个渠道,gradle 批量打包的好处就显示出来了, 发现确实比Ant打包会方便很多,就说下本篇Gradle作用吧

主要功能: 多渠道自动打包 beta /debug/relese /多版本打包 dex突破65535的限制 打包自动命名,提交测试时方便识别,不用每次打包测试 ,重命名啦! 自动移除程序LOG_DEBUG调试 自动移除无用资源文件,为APK瘦身 混淆代码 更多强大功能探索中……

Gradle 基本概念

首先我们学习几个gradle 的脚步语法,掌握了这几个语法,你就能非常简单的用gradle构建打包android项目了。 首先,我们来看下一个最简单android build.gradle。

apply plugin: ‘android’//声明构建的项目类型,这里当然是android了 buildscript{} //设置脚本的运行环境 repositories{}支持java 依赖库管理(maven/ivy),用于项目的依赖 dependencies{}//依赖包的定义。支持maven/ivy,远程,本地库,也支持单文件 android{}编译android项目的参数

废话不多说,来一份我在项目中使用的完整的gradle文件配置吧:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.rtmap.sample"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 10
        versionName "1.3"
        // dex突破65535的限制
              multiDexEnabled true
        manifestPlaceholders = [channel_param: "official"]
    }

     //----begin  是为了兼容Eclipse 可忽略
    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']
        }
    }
     //----end  

    buildTypes {

        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"

            minifyEnabled true
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//            signingConfig signingConfigs.release
        }

        beta {
            // 不显示Log
//            buildConfigField "boolean", "LOG_DEBUG", "false"
            versionNameSuffix "-beta"
//            minifyEnabled true
            zipAlignEnabled true
            // 移除无用的resource文件
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//            signingConfig signingConfigs.release
        }

        debug {
            versionNameSuffix "-debug"
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//            signingConfig signingConfigs.release
        }



        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def outputFile = output.outputFile
                if (variant.buildType.name.equals('release')) {
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // erdoushop_v1.1_release_201508101027
                        def fileName = "erdoushop_v${defaultConfig.versionName}_release_${getDate()}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }

                if (variant.buildType.name.equals('beta')) {
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // erdoushop_v1.1_beta_201508101027
                        def fileName = "erdoushop_v${defaultConfig.versionName}_beta_${getDate()}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }



            }
        }

    }

}


def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMddHHmm')
    return formattedDate
}

文章目前只讲到了打包,时间喘促,先写到这里,最近都比较忙,没时间写博客,后期博客会整理一下,现在就当作笔记一下 ,怕以后忘记了。