Skip to content

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 等。

参数 ​

参数名类型必填说明
projectPathstring是Android 工程根
moduleDirstring是应用模块目录
configUniPushAndroidConfig是个推与集成选项
depsUniPushAndroidDeps是文件与 Gradle/Manifest 修改能力

UniPushAndroidConfig 关键字段:

字段类型说明
appId / appKey / appSecretstring个推应用信息,写入 GETUI_APPID、plus.unipush.*
integrationMode'maven' | 'aar'默认 maven
sdkLibDirstring解压后的离线 SDK 目录(如 Android-SDK/SDK/libs),两种模式均会从中拷贝 aps-release.aar、aps-unipush-release.aar
aarLibFilesArray<{ 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-dcloud maven 依赖中。 未拷贝时 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

工作原理 ​

  1. 解析待拷贝的本地依赖:aarLibFiles 优先,其次从 sdkLibDir 取 aps-release.aar、aps-unipush-release.aar; 两者都未提供时输出警告(不会静默跳过),sdkLibDir 不存在时同样告警并继续后续集成。
  2. maven 模式:根工程添加个推 Maven 仓与默认 gtsdk / gtc-dcloud 依赖。
  3. aar 模式:拷贝指定 aar/jar 到模块 libs(maven 模式下同样执行 aps aar 拷贝)。
  4. 写入 GETUI_APPID 等 manifestPlaceholders 与 plus.unipush.* 配置。
  5. 可选同步 dcloud_properties.xml、PandoraEntry intent-filter(UniPush scheme / OPPO 等)。
  6. 委托 integrateThirdPartyModule 完成拷贝与 Gradle 变更。

日志中可确认 aps aar 已拷贝:已拷贝: .../aps-release.aar -> .../app/libs/aps-release.aar。

参考:DCloud UniPush Android 配置