开发者社区 问答 正文

移动推送: 与支付宝的包出现UTDID冲突的解决办法


该解决方案适用的移动云产品包括:



1. 什么是UTDID冲突?


  • Android UTDID包命名形式为:utdid4all-x.x.x.jar,iOS UTDID包命名格式为:UTDID.framework。

  • UTDID作为阿里集团移动端SDK通用组件,包括阿里云在内的许多平台产品移动端SDK对其有依赖,若同时集成多平台移动端SDK,可能发生UTDID冲突。


2. 怎么解决UTDID冲突?


【注意】Android UTDID版本号必须>= v1.1.5.3,若不能确认UTDID版本号,请参考下述方案,保留阿里云平台的UTDID包。


2.1 手动集成解决方案

  • 手动删除重复的UTDID SDK,仅保留一个UTDID SDK。
  • 建议保留阿里云平台下载的UTDID SDK。


2.2 远程仓库集成解决方案

  • Android集成时,可以通过exclude关闭其他产品SDK对UTDID的传递性依赖,示例如下所示:
  1. [backcolor=transparent]compile [backcolor=transparent]([backcolor=transparent]'com.xxx:xxx.xxx:1.0.1'[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  2. [backcolor=transparent]  exclude [backcolor=transparent]([backcolor=transparent]module[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'utdid4all'[backcolor=transparent])
  3. [backcolor=transparent]}

  • 其module名不一定为utdid4all,具体如何关闭UTDID的传递性依赖,可咨询对应产品SDK接口人。

  • iOS集成时,如果通过CocoaPods进行远程仓库依赖,由于CocoaPods无法关闭传递性依赖,SDK集成需要修改为手动集成。


2.3 与支付宝SDK UTDID冲突

  • 支付宝SDK是通过源码方式集成的UTDID,所以不适用于上述的手动集成解决方案和远程仓库集成解决方案。
  • 可下载并集成 剥离UTDID的支付宝SDK,保留阿里云平台的UTDID包。
  • 该版本SDK和通用支付宝SDK保持同步更新,无需担心支付宝相关功能受影响。

展开
收起
猫饭先生 2017-10-23 11:34:54 2642 分享 版权
阿里云 AI 助理回答

解答

1. 什么是UTDID冲突?

UTDID冲突发生在移动应用开发中,特别是当您的项目需要集成多个来自阿里集团或其它平台的移动端SDK时。UTDID(Universal Terminal Device Identifier)作为一个通用设备标识符,被广泛应用于跟踪和识别用户设备,以提供个性化服务、统计分析等。如果您的应用同时集成了多个依赖于不同版本UTDID组件的SDK,就可能导致冲突,影响数据统计准确性或引发其他功能异常。

2. 怎么解决UTDID冲突?

2.1 手动集成解决方案

  • 步骤说明:直接在项目中检查并移除所有重复的UTDID实现,仅保留一个版本。推荐的做法是保留从阿里云平台下载的UTDID SDK,确保其版本不低于v1.1.5.3,因为这个版本及以上能有效避免多数兼容性问题。

2.2 远程仓库集成解决方案(Android)

  • 对于通过Maven或Gradle等构建工具进行依赖管理的Android项目,可以通过排除(exclude)机制来避免传递性依赖导致的UTDID冲突。具体操作是在集成其他产品SDK时,在依赖声明中明确排除它们自带的UTDID模块。例如:
    implementation('com.xxx:xxx.xxx:1.0.1') {
      exclude module: 'utdid4all'
    }
    

    注意:实际排除的module名称可能与示例不同,请根据具体情况调整,并咨询相应SDK提供商获取确切的module名。

2.3 iOS平台解决方案

  • 对于iOS项目,若使用CocoaPods管理依赖且遇到UTDID冲突,由于CocoaPods不支持直接排除传递性依赖,建议改为手动集成Utils SDK和相关产品SDK,从而直接控制依赖版本,避免冲突。在Podfile中移除可能引起冲突的UTDID依赖,并确保只集成一次AlicloudUtils框架。

特殊情况:与支付宝SDK的UTDID冲突

  • 若您的项目同时集成了支付宝SDK,因其内部集成UTDID的方式特殊(源码集成),上述标准方案可能不适用。此时,应下载并集成专为解决冲突设计的、已剥离UTDID的支付宝SDK版本。此特别版SDK保持与通用支付宝SDK同步更新,确保支付功能不受影响,同时允许您独立管理UTDID依赖,避免冲突。

参考资料:[1],[2]

通过以上步骤,您可以有效地识别并解决UTDID冲突问题,确保应用内各SDK间协同工作无碍,提升应用的稳定性和用户体验。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答