理解modle下的gradle

本文详细介绍了Android项目中Module级别的Gradle配置文件的作用和内容。包括apply plugin声明、Android块的配置如compileSdkVersion、buildToolsVersion、defaultConfig(如应用包名、兼容性设置)、buildTypes(如release和debug的打包配置)、dataBinding的启用以及dependencies中引入的第三方库和兼容包。通过示例解析了如何配置项目以支持不同的Android版本和使用DataBinding框架。

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

/**
 * app文件夹下,这个Module的gradle配置文件
 */

//声明是Android程序(如果这个模块是一个Library的话,应该引入的插件叫做'com.android.library')
apply plugin: 'com.android.application'

android {

    /**
     *  编译SDK的版本(SDK的版本号,也就是API level,eg:API-19 API20等等)
     *
     *  SDK--SoftWare Development Kit 软件开发工具包
     *
     *  API--Application Programming Interface 应用编程接口
     *
     *  为了使用api函数,我们就需要跟api对应的.H和.LIB文件,而SDK正是提供了一整套开发应用程序所需要的相关文件、
     *  范例和工具的工具包,即SDK包含了使用API所需要的必须材料
     */
    compileSdkVersion 24

    //buildTools的版本(构建工具的版本,其中包括了工具aapt、dx等。目录位置位于your_sdk_path/build-tools-xx.xx.xx)
    //可以用高版本的构建工具去构建低版本的sdk工程(打包用的,建议用比较新的版本)
    buildToolsVersion "24.0.2"


    defaultConfig {

        //应用的包名(如果你这个模块是Library,那么要把这行删掉)
        //如果你在Library模块中也配置了applicationId的话到时候会在手机屏幕上看到两个应用图标
        applicationId "com.magical.m.magicallxjr"

        //需要向下兼容的最低版本
        minSdkVersion 15

        //需要使用的SDK版本(如果需要但不必须使用新版本SDK的新功能,可以设置新版本的SDK版本如下,但是考虑到老设备的兼容,参考上一行)
        targetSdkVersion 24

        //程序代码的相对版本,即版本更新过多少次(不对外显示)
        versionCode 1

        //应用程序的版本信息,需要显示给用户
        versionName "1.0"

        //使用AndroidJUnitRunner进行单元测试
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    /**
     * 可以打哪些类型的包
     */
    buildTypes {
        /**
         * 正式发布的apk需要怎么打包(对应的还有debug)
         * 可以指定要用到的混淆文件在哪个目录下,签名文件(keystore)在哪个目录下,签名文件的密码之类的,如果你没配置的话就使用默认值
         */
        release {
            //是否混淆(minify 缩小)
            minifyEnabled false
            /**
             * 混淆文件的位置
             * proguard-android.txt 默认的混淆文件(SDK目录/tools/proguard/)
             * proguard-rules.pro 让我们自行添加混淆规则文件(相应module的目录下)
             */
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


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

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

    /**
     * 使用DataBinding框架的环境搭建
     */
    dataBinding {
        enabled = true
    }
}

/**
 * 我们依赖的jar包、第三方库、library工程
 */
dependencies {
    //表明我们工程中要用到的jar包都可以放在app下的libs目录中,有了这一行配置,我们就可以放心的把jar包放在libs目录下,而不需要再做额外的配置了
    compile fileTree(dir: 'libs', includes: ['*.jar'])

    /**
     * 这一行就是表明到maven库中找v7支持包(兼容包)
     * com.android.support是这个支持包在maven库中的存放路径
     * appcompat-v7是这个包的名称
     * 4.2.1是这个包的版本
     *
     * 有了这个配置,Gradle工具就会到我们在全局gradle文件中指定的maven库中下载相应的支持包了
     *
     * 兼容包实际上是为了让android 2.2 /adnroid 2.3 /android 3.0 支持adnroid 4.0中才有的东西(eg:ActionBar)
     * 如果不用兼容包,开发包含ActionBar的程序就不可以在2.2上运行了
     *
     * V7依赖V4
     */
    //appcompat-v7这个工程可以让开发者统一开发,在任何系统版本下保证兼容性。涉及的内容有Theme,value,布局,新的控件,
    // 新的动画实现方式,包含了support-v4的全部内容,开发Android工程时,要兼容低版本都要导入v7工程。android studio在创建工程的时候默认导入了v7工程,
    // 并且将style使用了兼容style,给开发者提供了极大的方便。并且最新的v7包增加了很多material design的兼容类和素材,请及时更新
    compile 'com.android.support:appcompat-v7:24.2.1'
    
    //android-support-v4 是谷歌推出的兼容包,最低兼容Android1.6的系统
    compile 'com.android.support:support-v4:24.2.1'

    /**
     * 测试是软件开发中非常重要的一部分,Android中是使用 junit 测试框架
     * Android测试主要分两类本地测试和Instrumented测试,本地测试其实就是普通的Java程序测试,
     * 它运行在本地的JVM。Instrumented测试则需要一台Android设备来运行测试
     */
    //声明instrument测试依赖(需要一台android设备来运行测试)
    //espresso 自动化测试框架 include:包含  exclude:不包含
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    //声明本地测试的依赖(普通的java程序测试)
    testCompile 'junit:junit:4.12'

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值