M1 "Command ValidateEmbeddedBinary failed with a nonzero exit code" Archiving Error in Xcode

Reliable Workaround Found (Updated 29th of Dec 2021):

I have another work around (possible solution) that seems more reliable than my other answer as both my iOS app and watchOS app seem to be compiling without compile time errors (I now get run time errors!). This SO accepted answer was of some help: Remove & Re-add the WatchKit extension

I wasn't able to follow/understand the second instruction despite re-reading it several times. I re-added it manually by pressing the '+' and pressing 'New Copy Files Phase' and then manually entered the info that was there previously e.g. subpath field ($(CONTENTS_FOLDER_PATH)/Watch) and adding the Watch.app as a reference under 'Name'.

I also enabled 'Copy only when installing' and it seemed to compile reliably after that. It seemed to rename the phase from 'Embed Watch Content' to 'Copy Files' which is the only difference along with the checked box I can see.

I have no idea why this works or what was wrong previously. Just that these steps helped me.

Copy Files Phase

Unreliable Workaround Found (Updated 29th of October 2021):

Leaving this here for posterity in case it might be useful to someone but this was the previous answer.

An unreliable work around I found was to archive the "Watch" App. Which will may or may not succeed but then trying to archive the normal iOS App will have a much better chance of succeeding in producing an archive. Again this reinforces that there maybe a deceptive race condition happening.

I'm also experiencing this in Xcode 13 but can get it to build by restarting the machine, cleaning & deleting derived data.

Another Workaround Found:

The Package Dependencies (SPM) didn't match the entries Frameworks, Libraries, and Embedded Content. I manually updated them and it seems to work now. I was missing SwiftHEXColors. However I still think there is a race condition as it's reproducible now.

Watch Extension -- General Tab

Package Dependencies

Sorry I thought I fixed it but the issue returned!