读《Gradle for Android 》学习笔记(第二章基本自定义构建)

2.1理解Gradle文件

我们在创建一个Android项目时gradle结构如下:

读《Gradle for Android 》学习笔记(第二章基本自定义构建)

2.1.1settings文件 :Include ':app' 

gradle会根据这个文件创建settings对象并调用该对象的方法,这样就可以知道本项目由哪些模块了

2.1.2顶层构建文件

读《Gradle for Android 》学习笔记(第二章基本自定义构建)

dependencies里是安卓应用插件的配置

2.1.3模块的构建文件

模块构建文件的属性可以覆盖顶层构建文件的属性。

apply plugin: 'com.android.application'//标明用安卓应用插件,在顶层中dependencies中配置的
 
android {//这些android代码块之所以可以使用是因为上面我们配置了安卓插件
    compileSdkVersion 22        //安卓api版本
    buildToolsVersion "22.0.1"    //构建工具和编译器的版本号,构建工具包含命令行应用如下:aapt、zipalign、dx和renderscript.可以在SDK Manager里下。
    defaultConfig {//配置核心属性,可覆盖功能清单里的对应条目
        applicationId "com.love.flower.groovy_study" //给市场用的区分应用的id
        minSdkVersion 15
        targetSdkVersion 21//表示在21版本已经通过测试不必启用用向前兼容的行为(但不知行为只的是什么。。)
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {//如何构建和打包不同的构建类型应用
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {//模块依赖包
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

2.2任务入门

2.2.1基础任务

assemble:集合项目的输出
clean:清理项目的输出
check:运行所有检查,通常是单元测试和集成测试
build:同时运行assemble和check
Android任务:

同样的任务在android插件的扩展下实现它们的行为
assemble:为每个构建版本创建一个APK
clean:删除所有的构建内容,如APK文件
check:运行Lint检查,如果Lint发现一个问题,则可终止构建
build:同时运行assemble和check
connectedCheck:在链接设备或模拟器上运行测试
deviceCheck:一个占位任务,专为其他插件在远端设备上运行调试
installDebug和installRelease:在连接的设备或模拟器上安装特定版本
所有的installtasks都会有相关的uninstall任务。
./gradlew check会生成lint-results.html 可以看到项目运行Lint检查的结果。(里面会显示错误和警告!)

那么会不会很头大!!好多命令。。然后书中很贴心的给我们只出,可以用这个:
读《Gradle for Android 》学习笔记(第二章基本自定义构建)

2.3自定义构建

在自定义构建时如果自定义了一定记得要同步项目:用读《Gradle for Android 》学习笔记(第二章基本自定义构建)

在底层AS同步实际用了generateDebugSources任务来生成必须的类。

2.3.1操控manifest条目

我们在gradle里还可以配置清单文件的下面属性:

读《Gradle for Android 》学习笔记(第二章基本自定义构建)

2.3.2 BuildConfig和资源

BuildConfig可以创建自定义字段和资源,可以在debug 和release中区分使用。

顶层构建文件添加添加一个含有自定义属性的ext代码块就可以给顶层gradle添加额外属性了。

比如:

ext{
    compileSdkVersion=22
    buildToolsVersion="22.0.1"
}

这样就可以在app的gradle里引用了

2.3.4项目属性

定义属性的三种常用方式:

  • ext代码块
  • gradle.properties文件
  • -P命令行参数

方式一:

ext{
    local='Hello from build.gradle'
}

方式二:

gradle-wrapper.properties文件中:propertiesFile=Hello2

方式三:

第三种通过命令行./gradlew printProperties -Pcmd='test' (待测试)

如果顶层和模块都定义了同一个属性,那么该模块里的会直接用模块的该属性

2.3.5默认的任务

 

 

感觉这两张看的并没有什么效果。。。。。。没事儿,以后一定要更多的慢慢积累。。