关于Android Studio里的Gradle文件

// 声明是Android程序  
//apply plugin是最新gradle版本的写法,以前的写法是apply plugin: 'android', 如果还是以前的写法,请改正过来  
apply plugin: 'com.android.application'  

//自定义函数 用于在打包时 命名APK 生成当前日期字符串  
def releaseTime() {  
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))  
}  

android {  
    //说明要运行该源码,你必选已经安装了android API 23  
    compileSdkVersion 23  
    // 说明要运行该源码,你必须已经安装了 android sdk build-tools 23.0.3  
    buildToolsVersion "23.0.3"  

    //动态的在build时配置AndroidManifest.xml里的项目  
    // defaultConfig里的配置可以覆盖manifest里的配置  
    defaultConfig {  
        applicationId "test.com.yu"  
        //表示向下低至android API 14,即androd 4.0和4.0以上的版本都可以运行该工程  
        minSdkVersion 14  
        //表示采用的目标android API是 API 23即 android 5.0  
        targetSdkVersion 23  
        versionCode 1  
        versionName "1.0"  

        //dex突破65535的限制 突破64k需要的设置  
        //需要compile 'com.android.support:multidex:'  
        //需要Application中相关配置  
        multiDexEnabled true  
        // 默认是umeng的渠道  UMENG_CHANNEL_VALUE需要与AndroidManifest中的对应位置的命名一致  
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]  
    }  

    // java版本  
    compileOptions {  
        sourceCompatibility JavaVersion.VERSION_1_7  
        targetCompatibility JavaVersion.VERSION_1_7  
    }  

    //签名文件配置  
    signingConfigs {  
        debug {  
            // No debug config  
            //storeFile file("C:/Users/Administrator/.android/debug.keystore")  
        }  

        release {  
            storeFile file("../yourapp.keystore")  
            storePassword "your password"  
            keyAlias "your alias"  
            keyPassword "your password"  
        }  
    }  

    //配置如何构建和打包你的App,默认有debug和release两个类型。  
    // debug类型包含调试时的信息,并且有debug key签名。release默认是不含签名的  
    buildTypes {  
        //调试版本  
        debug {  
            // 显示Log  
            buildConfigField "boolean", "LOG_DEBUG", "true"  

            //混淆配置  
            minifyEnabled false  
            signingConfig signingConfigs.debug  

            versionNameSuffix "-debug"  
            zipAlignEnabled false  
            shrinkResources false  

        }  
        //发布版本  
        release {  
            // 不显示Log  
            buildConfigField "boolean", "LOG_DEBUG", "false"  


            /*是否开启混淆,新版本是minifyEnabled不再是 runProguard true 
            * ProGuard的作用是在byte级别对你的app进行分析优化,使得你的App变得更小,更快 
            * 设置minifyEnabled true,就会在打包的时候进行代码混淆处理. 
             * 其中proguard-android.txt不用管,在sdk目录里面,主要是配置了proguard.cfg文件。 
             * 直接在android studio创建项目不会有这个文件,而是 proguard-rules.pro文件 
             * 其实一样的,因为项目是从eclipse迁移过来的,之前在eclipse上混淆是 proguard.cfg文件*/  
            minifyEnabled false  
            /*加载默认混淆配置文件及自定义混淆的配置 
            * proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事 
            * 这个文件的目录在 <sdk目录>/tools/proguard/proguard-android.txt 
             * 后一部分是我们项目里的自定义的混淆文件,目录就在 app/proguard-rules.txt , 
             * 如果你用Studio 1.0创建的新项目默认生成的文件名是 proguard-rules.pro 
             * 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则*/  
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
            //配置发布版本的签名文件  
            signingConfig signingConfigs.release  

            zipAlignEnabled true  
            shrinkResources true  // 移除无用的resource文件,这个东西依赖于minifyEnabled,所以minifyEnabled也要为true才行。有可能导致android.content.res.Resources$NotFoundException: File  

            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 = "boohee_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"  
                        output.outputFile = new File(outputFile.parent, fileName)  
                    }  
                }  
            }  
        }  
    }  


    // 友盟多渠道打包  
    productFlavors {  
        wandoujia {}  
        _360 {}  
        baidu {}  
        xiaomi {}  
        tencent {}  
        taobao {}  
    }  
    // 友盟多渠道打包 UMENG_CHANNEL_VALUE需要与AndroidManifest中的对应位置的命名一致  
    productFlavors.all { flavor ->  
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]  
    }  

    //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。  
    lintOptions {  
        abortOnError false  
        disable "ignore", "IgnoreResLayout", "InvalidPackage", "MissingRegistered"  
    }  

    dexOptions {  
        preDexLibraries = false //似乎和构建加速有关  

        //Out of memory 问题 Error:Execution failed for task ':app:dexDebug'.  java.lang.OutOfMemoryError: GC overhead limit exceeded  
        incremental = true;  
        javaMaxHeapSize "2g"  
    }  

    //dex突破65535的限制 突破64k需要的设置  遇到java.lang.NoClassDefFoundError  
    android.applicationVariants.all { variant ->  
        task "fix${variant.name.capitalize()}TestMultiDexList" << {  
            logger.info "Fixing keep manifest for $variant.name"  
            def keepManifest = new File("$buildDir/intermediates/multi-dex/test/$variant.flavorName/$variant.buildType.name/manifest_keep.txt")  
            keepManifest.append '\n-keep class *.** { *; }\n'  
            logger.debug "Updated keepManifest for ${keepManifest.getAbsolutePath()}\n$keepManifest.text"  
        }  
    }  
    tasks.whenTaskAdded { task ->  
        android.applicationVariants.all { variant ->  

            if (task.name == "collect${variant.name.capitalize()}TestMultiDexComponents") {  
                task.finalizedBy "fix${variant.name.capitalize()}TestMultiDexList"  
            }  
        }  

    }  
}  


//dependencies里指明的就是一些需要用到的第三方库  
dependencies {  
    compile fileTree(include: ['*.jar'], dir: 'libs')  
    testCompile 'junit:junit:4.12'  
    compile 'com.android.support:gridlayout-v7:21.0.2'  
    compile 'com.android.support:appcompat-v7:21.0.2'  
    compile 'com.android.support:multidex:1.0.0'  
    compile 'com.google.code.gson:gson:2.3.1'  
    //ORM  对象型数据库框架  操作本地db  
    compile 'com.google.code.gson:gson:2.3.1'  
    //json解析  
    compile 'com.nineoldandroids:library:2.4.0'  
    //  
    compile 'com.android.support:recyclerview-v7:23.0.1'  
    //RecyclerView引入  

/*    compile project(path: ':moalib') 
    //自定义module  包含一些列控件 
    compile project(path: ':jni') 
    //本地Jni 
    compile project(path: ':myjni')//自己定义的jni*/  
    //aar包:【复制aar到libs】  
    // 【build.gradle repositories flatDir{ dirs 'libs' }】 【dependencies { compile (name:'XXXXXXX', ext:'aar') }】  
    compile(name: 'ormlite4.8', ext: 'aar')  
    compile(name:'jni', ext:'aar')  
    compile(name:'moalib', ext:'aar')  
    compile(name:'myjni', ext:'aar')  


    compile files('libs/conceal_android.jar')  
    //第三方加密解密  
    compile files('libs/libconceal.jar')  
    //第三方加密解密  
    compile files('libs/umeng-analytics-v5.2.4.jar')  
    //Umeng分析  

}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值