开发

组件依赖(Swan-Dependent)

1 简介

是由小程序模块(Swan Module)组织而成的树状结构,其叶子节点的值是对应的 module。

组件树有两种形式:

  • 原始形式:用于在 Nest 插件中调用,其叶子节点的值是 module id
  • 最终形式:用于在宿主编译脚本中调用,其叶子节点的值是最终的依赖项,maven id 或者本地源码工程的引用

2 调用组件依赖

在工程宿主工程编译脚本build.gradle中,只提供对最终形式的调用,最终形式由原始形式根据 module 对象的属性变换而来;

可以通过deps.xxx.xxx的形式调用,示例如下:

1
2
3
dependencies {
implementation deps.business.swan.bdhost
}

3 定义组件依赖

原始形式可以通过以下两种方式定义:

  • Swan DSL 块中自定义
  • Nest 插件工程中预定义

Swan DSL 块中自定义

在宿主根目录settings.gradle文件中引用 Nest 插件,使用swan.customDependents方法定义,示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
*
* 自定义 swan dependent 示例
* 可新增或者覆写默认的 dependent 配置
* 这里示例自定义 demo 工程的 swan 宿主接入层 module 对应的 dependent 树状结构
*/
def swanDeps = [
business: [
swan: [
// 定义百度内部 demo 的小程序接入 module 的 dependent:deps.business.swan.bdhost
bdhost : "com.baidu.swan:bdhost",
// 定义百度外部 demo 的小程序接入 module 的 dependent:deps.business.swan.openhost
openhost: "com.baidu.swan:openhost",
]
]
]
swan {
// 配置自定义 dependents,接收字典对象,见 dependents 示例
customDependents swanDeps
}

3.2 Nest 插件中预定义

打开 Nest 工程,找到com.baidu.swan.nest.definition.Depends.kt文件,编辑defaultDeps块,示例如下:

1
2
3
4
5
6
7
8
9
val defaultDeps = {
SwanDependent.apply {
"vendors.basic.android_support".node(this) {
"recyclerview".node(this).content = "com.android.support:recyclerview-v7"
"annotations".node(this).content = "com.android.support:support-annotatins"
"appcompat".node(this).content = "com.android.support:support-appcompat"
}
}
}

4 组件模块ID对照索引

Nest 插件提供了swanDeps task,供宿主对照索引,查询依赖引用对应的组件模块状态信息,详细文档请参考:组件依赖id对照表