android studio build.gradle配置

本文介绍了Android Studio中build.gradle的配置,包括如何设置不同的产品版本,并在Build Variants中切换使用不同资源。通过Gradle的官网链接,读者可以了解更多关于Gradle的详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


直接看代码:
apply plugin: 'com.android.application' // 声明是Android程序
//apply plugin: 'com.android.library'// 声明是Library程序

def buildingDay(){
    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}

android {
    compileSdkVersion 25 //编译SDK
    buildToolsVersion "25.0.0" //build tools版本
    // /* 关闭Android Studio的PNG合法性检查*/
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    defaultConfig {
        applicationId "com.ai.cwf.timer"// 应用的包名
        minSdkVersion 11//兼容最小SDK
        targetSdkVersion 25//最高SDK
        versionCode 1//软件内部版本号
        versionName "1.0"//版本名称
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true //开启多个dex,解决一部分方法超过65536问题
        //必须添加,否则会报错
        //flavorDimensions "versionCode"
        flavorDimensions "default"
    }
    // java版本
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    //不同编译类型设置
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            manifestPlaceholders = [keyone: "12345678", keytow: "00000"]
            buildConfigField "String", "name", '\"this shi a string\"'
            buildConfigField "String", "ip", '\"192.168.100.10\"'
        } release {
            //是否开启代码debug
            debuggable false
            // 是否进行混淆
            minifyEnabled true
            // 混淆文件的位置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            // AndroidManifest.xml 可使用的配置参数
            /* 例: <meta-data android:name="key" android:value="${keyone}"/>*/
            manifestPlaceholders = [keyone: "12345678", keytow: "00000"]
            // 代码中可使用的参数
            /* 例: BuildConfig.name*/
            buildConfigField "String", "name", '\"this shi a string\"' buildConfigField "String", "ip", '\"192.168.100.10\"'
        }
    }
    //签名设置 设置后可通过选择编译版本,直接run,生成用对于key签名的APK
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
            storePassword "debug"
            keyAlias "debug"
            keyPassword "debug"
        }
        //gradle assembleRelease
        release {
            storeFile file("test.keystore")
            storePassword "test"
            keyAlias "test"
            keyPassword "test"
            v1SigningEnabled true // jar sign
            v2SigningEnabled true // full apk sign 是针对7.0以后应用的优化
        }
    }
    // 移除lint检查的error
    // 用gradle build命令时,经常由于lint错误终止,这些错误又经常是第三方库中的,我们可以跳过这些错误,继续编译
    lintOptions { abortOnError false }
    //一个实验性的功能 优化编译速度 AS默认关闭
    dexOptions {
        //开启缓存
        incremental true
        //缓存大小
        javaMaxHeapSize "4g"
    }
    sourceSets {
        /*加入这个可使老的eclipse格式的项目直接在AS中运行*/
        main {
            manifest.srcFile 'src/main/AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            res.srcDirs = ['src/main/res']
            assets.srcDirs = ['src/main/assets']
            jniLibs.srcDirs = ['src/main/jniLibs']
            jni.srcDirs = []
            //不自动编译JNI目录,使用ndk-build手动编译
        }
        /* 名称.root:产品不同的配置信息,
        在编译和打包的时候可供选择 名称对应productFlavors中的配置,也可以不配置,直接在src下有对应productFlavors名称命名的目录也可以,如存在src/qq目录
        'src/main' : 产品不同资源的目录,使用相同名称、字符等,可以直接更改为不同的资源*/
        qq.root 'src/main'
        wexi.root 'src/main'
    }
    //不同产品个性化配置
    productFlavors {
        qq {
            manifestPlaceholders = [keyone: "qq1234", keytow: "qq"]
            buildConfigField "String", "ip", '\"192.168.100.22\"'
            dimension "default"
        } wexi {
            manifestPlaceholders = [keyone: "qq1234", keytow: "wexi"]
            buildConfigField "String", "ip", '\"192.168.100.33\"'
        }
    } repositories {
        flatDir {
            //设置本地.aar文件目录
            dirs 'libs' //this
        }
    }

    // 修改编译生成app名称
    task changeApkName() {
        android.applicationVariants.all { variant ->
            variant.outputs.all {
                if (outputFileName.endsWith('.apk')) {
                    //最终生成的文件为app_release/debug + flavor名称 + versionName + versionCode + 当前编译日期
                    def fileName = "app_release_${variant.productFlavors[0].name}_v${variant.productFlavors[0].versionName}_${variant.productFlavors[0].versionCode}_${buildingDay()}.apk"
                    if (outputFileName.contains("-debug")) {
                        fileName = "app_debug_${variant.productFlavors[0].name}_v${variant.productFlavors[0].versionName}_${variant.productFlavors[0].versionCode}_${buildingDay()}.apk"
                    }
                    outputFileName = fileName
                }
            }
        }
    }
}
dependencies {
    // 编译libs目录下的所有jar包
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //test环境
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',
            { exclude group: 'com.android.support', module: 'support-annotations' })
    testCompile 'junit:junit:4.12'
    // 第三方开源库
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8'
    //额外的本地库
    compile project(':mylibrary')
    //额外的本地aar文件,lib编译获取,可以减少编译时间
    compile(name: 'mylibrary-release', ext: 'aar')
}




设置不同产品后,可在Build Variants中看到下图界面,选择不同的版本就能使用不同的资源



下面简单介绍下gralde

使用Croovy语言来实现

类似  Maven

Gradle的官网:  http://gradle.org/

文档位置:https://docs.gradle.org/current/release-notes
掌握大体流程,然后根据SDK+API来完成的


重要概念:闭包

class中的变量可以直接设置和读取,实际 gradle为每个变成创建了get和set方法
class GroovyBeanExample {
   private String name
}

def bean = new GroovyBeanExample()
bean.name = 'this is name'
println bean.name

动态设置参数
task showCommandLieProperties << {
    println property3
}
可以通过-P 在cmd设置Property
gradle -P property3="this is ha ha ha" showCommandLieProperties

 
可以通过-D在cmd设置整个project的Property
gradle -D org.gradle.project.property3="this is another property3" showCommandLieProperties
通过环境变量设置Property
export ORG_GRADLE_PROJECT_property3="this is yet another property3"
gradle showCommandLieProperties

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值