Skip to content

[Breaking Change] FileVideoAdV2Api.openApi2FileVideoAdPost 方法在 1.1.93 中插入新参数导致历史代码编译失败 #27

Description

@littlemod

问题描述

从 1.1.92 升级到 1.1.93 后,历史项目无法编译。原因是 com.bytedance.ads.api.FileVideoAdV2Api 中的 openApi2FileVideoAdPost 方法签名发生了破坏性变更:新参数 videoCoverId 被插入到了参数列表的中间位置(uploadType 与 videoFile 之间),而不是追加到末尾。

这导致所有按位置传参的调用方在升级 SDK 版本后直接编译失败(参数类型错位)。

复现步骤

  1. 在版本 1.1.92 下正常调用:
FileVideoAdV2Response resp = fileVideoAdV2Api.openApi2FileVideoAdPost(
    advertiserId, filename, isAigc, isGuideVideo,
    labels, uploadType, videoFile, videoSignature, videoUrl);
  1. 将 SDK 升级到 1.1.93
  2. 编译报错:no suitable method found for openApi2FileVideoAdPost(...) / 实际参与形参类型不匹配

原因分析

1.1.92 方法签名(9 个参数):
(Long advertiserId, String filename, Boolean isAigc, Boolean isGuideVideo, List labels, FileVideoAdV2UploadType uploadType, File videoFile, String videoSignature, String videoUrl)

1.1.93 方法签名(10 个参数):
(Long advertiserId, String filename, Boolean isAigc, Boolean isGuideVideo, List labels, FileVideoAdV2UploadType uploadType, String videoCoverId, File videoFile, String videoSignature, String videoUrl)

videoCoverId 本身是 optional 参数,但插入位置在中间,破坏了源码兼容性与二进制兼容性。

期望

SDK 作为公共依赖,patch 版本(1.1.x)的升级应保持向后兼容。建议:

  1. 新增 optional 参数追加到方法末尾,而不是插在中间,以保证调用方按位置传参时不被破坏;
  2. 或者采用 Request 对象封装参数(如 FileVideoAdV2Request),后续新增字段不会影响方法签名;
  3. 如果必须引入破坏性变更,请提升 minor 或 major 版本号,并在 release notes 中明确说明。

环境信息

  • SDK 版本:1.1.92 → 1.1.93
  • 相关类:com.bytedance.ads.api.FileVideoAdV2Api
  • 相关方法:openApi2FileVideoAdPost / openApi2FileVideoAdPostWithHttpInfo / openApi2FileVideoAdPostAsync

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions