Duplicated Signature when archiving a multi platform project

Hey all,

I am facing a weird issue when exporting my multi platform project. The project does not make use of the multi platform targets of Xcode yet. For each "module" in the app there exists two targets, one for iOS and one for watchOS. Each of these targets link agains a binary framework that is imported via SPM.

Building works fine but as soon as I want to archive the project at the last step it complains that the Signature for the third party binary framework already exists. Which I think is a valid error message, but it seems to be a bug that the archive process either:

  • Does not override it, which would be reasonable
  • Or it should distinguish between the platforms
  • Or should just not create two signature and just have one signature file created

The error message I see

“ThirdParty.xcframework.signature” couldn’t be copied to “Signatures” because an item with the same name already exists.
Domain: NSCocoaErrorDomain Code: 516
Failure Reason: A file with the name “ThirdParty.xcframework.signature” already exists. Recovery Suggestion: To save the file, either provide a different name, or move aside or delete the existing file, and try again.

-- The operation couldn’t be completed. File exists Domain: NSPOSIXErrorDomain Code: 17 Failure Reason: File exists
-- System Information 
macOS Version 13.4.1 (Build 22F82)
Xcode 15.0 (22221.2) (Build 15A5195k)
Timestamp: 2023-07-08T12:43:57+02:00

A simplified project setup is like the following.

┌──────────────────────────────────────────────┐
│                 SPM Package                  │
│                                              │
│         ┌────────────────────────┐           │
│         │ ThirdParty.xcframework │           │
│         └────────────────────────┘           │
│                      │                       │
└──────────────────────┼───────────────────────┘
          ┌────────────┴───────────┐            
┌─────────┼────────────────────────┼───────────┐
│         │      CoreFramework     │           │
│         ▼                        ▼           │
│ ┌───────────────┐       ┌────────────────┐   │
│ │  iOS Target   │       │ watchOS Target │   │
│ └───────────────┘       └────────────────┘   │
│         │                        │           │
└─────────┼────────────────────────┼───────────┘
          │                        │            
          │                        │            
          │                        │            
          │                        ▼            
          │   Embedded in  ┌───────────────┐    
          │      (not  ┌───│  watchOS App  │    
          │   standalone)  └───────────────┘    
          │            │                        
          │            │                        
          │            │                        
          │            │                        
          ▼            │                        
 ┌─────────────────┐   │                        
 │     iOS App     │◀──┘                        
 └─────────────────┘                                  

I have the feeling it's rather a beta bug, but I wanted to ensure that's the case and its not me doing something wrong.

Does anyone know if this setup is correct or if there is something I oversee here ?

Any help is highly appreciated !

Feedback is also filed under: FB12373687

Duplicated Signature when archiving a multi platform project
 
 
Q