Skip to content

Xcode 26: Malformed _CodeSignature in 2.2.1-beta xcframeworks causes signature-collection failure #40

Description

@BogieSmalls

Summary

CloudX 2.2.1-beta xcframeworks ship with malformed _CodeSignature directories that cause Xcode 26's builtin-collectSignature to fail during Archive builds with:

signature-collection failed: The operation couldn't be completed. (SWBUtil.CodeSignatureInfo.Error error 0.)

CloudX 2.0.0 did not include any _CodeSignature directories and built successfully with the same Xcode version.

Environment

  • Xcode: 26.2
  • CloudX SDK: 2.2.1-beta (via CocoaPods)
  • CloudX 2.0.0: works fine with the same Xcode version
  • Platform: iOS, Unity project exported to Xcode workspace

Root Cause Analysis

Comparing 2.0.0 and 2.2.1-beta xcframeworks:

2.0.0 2.2.1-beta
_CodeSignature dirs 0 Present in all frameworks

The 2.2.1-beta frameworks appear to have been built with Xcode 26.2 (DTXcode: 2620, DTXcodeBuild: 17C52 in Info.plist), which auto-generates _CodeSignature directories. However, the signatures are malformed:

  • CloudXCore.framework: Has _CodeSignature with only CodeResources — missing CodeDirectory, CodeRequirements, and CodeSignature files. This is an incomplete/invalid signature.
  • Adapter frameworks (CloudXInMobiAdapter, CloudXMetaAdapter, CloudXMintegralAdapter, CloudXVungleAdapter): These are static archives (current ar archive) wrapped in .framework bundles, which have _CodeSignature directories that Xcode 26's signature collector cannot process for static libraries.

When Xcode 26 encounters these malformed signatures during builtin-collectSignature, it fails with SWBUtil.CodeSignatureInfo.Error error 0.

Reproduction

  1. Create an iOS project with CocoaPods
  2. Add CloudX 2.2.1-beta pods (CloudXCore, CloudXRenderer, any adapters)
  3. Run pod install
  4. Archive the project in Xcode 26.2
  5. Build fails on SignatureCollection phase

Workaround

Stripping the _CodeSignature directories in a CocoaPods post_install hook allows the build to proceed:

post_install do |installer|
  pods_dir = installer.sandbox.root.to_s
  Dir.glob("#{pods_dir}/CloudX*/**/_CodeSignature").each do |sig|
    FileUtils.rm_rf(sig)
  end
end

Suggested Fix

Either:

  1. Build xcframeworks without code signing (matching 2.0.0 behavior), or
  2. Ensure proper ad-hoc signing is applied so _CodeSignature directories are complete and valid

This likely requires reviewing the build/release scripts to ensure codesign is either skipped or run correctly for all framework types (especially static library adapters).

Related

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