integrateUniPushAndroid
集成 DCloud UniPush(个推)Android 模块:Gradle、Manifest、dcloud_properties 等。
前置依赖
基于 integrateThirdPartyModule,扩展 IntegrateThirdPartyModuleDeps(fs、path、xml 修改等,见源码 UniPushAndroidDeps)。
函数签名
typescript
function integrateUniPushAndroid(
projectPath: string,
moduleDir: string,
config: UniPushAndroidConfig,
deps: UniPushAndroidDeps,
): Promise<IntegrateThirdPartyModuleResult>UniPushAndroidConfig 含 appId / appKey / appSecret、integrationMode(maven | aar)、sdkLibDir、aarLibFiles、厂商占位键、是否同步 dcloud_properties 等。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectPath | string | 是 | Android 工程根 |
moduleDir | string | 是 | 应用模块目录 |
config | UniPushAndroidConfig | 是 | 个推与集成选项 |
deps | UniPushAndroidDeps | 是 | 文件与 Gradle/Manifest 修改能力 |
UniPushAndroidConfig 关键字段:
| 字段 | 类型 | 说明 |
|---|---|---|
appId / appKey / appSecret | string | 个推应用信息,写入 GETUI_APPID、plus.unipush.* |
integrationMode | 'maven' | 'aar' | 默认 maven |
sdkLibDir | string | 解压后的离线 SDK 目录(如 Android-SDK/SDK/libs),两种模式均会从中拷贝 aps-release.aar、aps-unipush-release.aar |
aarLibFiles | Array<{ source: string; targetName?: string }> | 显式指定要拷贝到模块 libs 的本地 aar/jar;两种模式均生效,优先于 sdkLibDir |
maven 模式同样需要 aps aar:
io.dcloud.feature.aps.APSFeatureImpl(Push feature)与GTPushService由离线 SDK 的aps-release.aar、aps-unipush-release.aar提供,不在gtsdk/gtc-dcloudmaven 依赖中。 未拷贝时 APK 可安装启动,但运行时报ClassNotFoundException: io.dcloud.feature.aps.APSFeatureImpl/not found push feature plugin。
示例
typescript
// maven 模式(默认)+ 离线 SDK aps aar
await integrateUniPushAndroid(
projectPath,
'app',
'com.example.app',
{
appId: 'xxx',
appKey: 'yyy',
appSecret: 'zzz',
sdkLibDir: '/path/to/Android-SDK/SDK/libs',
},
deps,
)
// 或显式指定 aar 列表(maven / aar 模式都会拷贝)
await integrateUniPushAndroid(
projectPath,
'app',
'com.example.app',
{
appId: 'xxx',
appKey: 'yyy',
appSecret: 'zzz',
aarLibFiles: [
{ source: '/path/to/aps-release.aar' },
{ source: '/path/to/aps-unipush-release.aar' },
],
},
deps,
)返回值
| 类型 | 说明 |
|---|---|
IntegrateThirdPartyModuleResult | 与第三方模块集成一致:success、logs、error |
工作原理
- 解析待拷贝的本地依赖:
aarLibFiles优先,其次从sdkLibDir取aps-release.aar、aps-unipush-release.aar; 两者都未提供时输出警告(不会静默跳过),sdkLibDir不存在时同样告警并继续后续集成。 - maven 模式:根工程添加个推 Maven 仓与默认
gtsdk/gtc-dcloud依赖。 - aar 模式:拷贝指定 aar/jar 到模块
libs(maven 模式下同样执行 aps aar 拷贝)。 - 写入
GETUI_APPID等 manifestPlaceholders 与plus.unipush.*配置。 - 可选同步
dcloud_properties.xml、PandoraEntry intent-filter(UniPush scheme / OPPO 等)。 - 委托
integrateThirdPartyModule完成拷贝与 Gradle 变更。
日志中可确认 aps aar 已拷贝:已拷贝: .../aps-release.aar -> .../app/libs/aps-release.aar。