Gradle:其他模块

Gradle 除了Project、Task这两个核心模块外还有一些重要的模块。

知识图

在这里插入图片描述

一、Settings类

二、资源、源码管理-SourceSet

这个类对应sourceSets闭包,主要是用来管理安卓资源、java源码、第三方库、jar文件 so文件等位置。

1、栗子-修改so的默认读取位置

安卓studio上默认读取位置为 main-jinLibs 文件夹

sourceSets{
    
    
        // .so  默认 main/jniLibs 文件件下
        main{
    
    
            jniLibs.srcDir = "libs" // .so 文件位置修改
          //  jniLibs.srcDirs= ["libs","xxx"]//这些文件夹中读取 so
        }
    }

1、这样就默认从app的libs文件夹下加载so了
2、系统里修改其他的默认位置只需通过sourceSets闭包默认闭包文件夹(如上mian)找到,然后修改即可。
3、还可以修改多个文件夹
4、如上就是拿到main文件,就可以修改main文件夹下所有的默认位置。

2、需求res资源分包管理

需求:向java文件一样对资源文件分包管理。栗子:广告资源去res-ad文件夹下加载,播放器资源去res-player文件夹下加载。

(1)建立文件夹

在这里插入图片描述

其实我们还会发现我们建立的是普通的文件夹,没有res文件夹上面的小图标。

(2)修改SourceSet,同步工程

  sourceSets {
    
    
        main {
    
    
            res.srcDirs = ["src/main/res", "src/main/res-ad", "src/main/res-player"]
        }
    }

在这里插入图片描述

可以以看到我们新建立的文件夹也可以放资源了和res的功能一样了

3、小结

1、sourceSets可以多次调用,在android闭包下调用即可。或者其他地方android.sourceSets调用
2、上面的两个例子实际开发中常用

三、自定义Plugin

四、andriod 对gradle的扩展

安卓工程中一句简单的gradle代码就可以使用安卓插件啦!如下,创建安卓工程后系统默认生成。

在这里插入图片描述

如上一句简单的代码引入后,我们就可以在app/build.gradle下使用安卓插件提供的属性或者Task了。

1、安卓中所有可配置属性

安卓插件引入后,安卓工程下app/build.gradle中android{}可以有哪些配置?可以调用哪些方法呢?其实查看BaseExtension类即可,这个类中定义了安卓闭包可以配置哪些东西,。类如下所示:

在这里插入图片描述

ps:配置的子配置查看相应的类即可。

2、安卓插件引入的Task

1、BaseVariant 类中定义了安卓插件可以使用的Task 和属性。
2、安卓中的变体有常见的几种形式

1、application类型:application 类型变体
2、library类型:安卓库工程类型变体
3、test类型:很少用

ps:详情参考:github上的翻译文档

3、栗子:通过变体操作安卓插件配置的属性
 // 遍历所有变体(通过all闭包)
    this.android.applicationVariants.all {
    
    
        variant ->
            def baseName = variant.baseName
            def name = variant.name
            println "baseName:$baseName"
            println "Name:$name"

    }

log:
> Configure project :app
baseName:debug
Name:debug
baseName:release
Name:release

1、获得安卓中的变体集合:android.applicationVariants
2、默认情况下安卓有一个默认渠道,这个渠道有两个变体:

1、debug
2、release

3、用户可以配置多渠道,每种渠道都会有debug、release变体

4、栗子:通过变体操作安卓插件中的Task
this.afterEvaluate {
    
    
    // 遍历所有变体
    this.android.applicationVariants.all {
    
    
        variant ->
            Task task = variant.checkManifest
            println(task.name)
    }
}

简单的获得application 中的任务

五、ant、maven迁移到gradle

1、两种方式
  • 迁移:编译器安装gradle插件,导出为gradle工程即可。

核心:不同的工程结构为啥修改后能运行?:gradle修改了build.gradle的sourceSet文件。
收获:不同的构建工程,读取的资源目录可能不同,使用gradle的sourceSet读取下指定目录即可。

  • 改造:修改sourceSet默认读取目录即可。(例如安卓studio读取 libs下的so,修改sourceSet默认读取位置即可(默认读取位置main/jniLibs))

end!

猜你喜欢

转载自blog.csdn.net/qq_38350635/article/details/103337693
今日推荐