firebase-ios-sdk: empty field `MinimumOSVersion` for internal FB frameworks causes failure on uploading to App Store Connect with Xcode 15.3

Description

overview

Trying out Xcode 15.3 tonight, and now getting a reproducible failure on uploading a binary to App Store Connect (that isn’t present with 15.2), because of an empty field MinimumOSVersion on some of the internal FB frameworks (abseil, BoringSSL-GRPC, etc).

details

We’ve had a stable implementation of the Firebase (FB) Apple SDK for some time, and use current versions in our CI pipeline of Xcode (15.x), and stay up to date on current versions of the SDK. Building and deploying have been fine on Xcode 15.2.

Tonight, updated to Xcode 15.3, and now when I try to deploy to App Store Connect (ASC), I get an asset validation error. Screenshot (with local deploying, not through CI – but we get the same error with both local and CI build-and-deploy cycles) showing a portion of the errors, full errors listed in the log section below:

Screenshot 2024-03-05 at 19 03 40

A snippet of the error, as text, is:

Asset validation failed
Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in 'Admin Dev.app/Frameworks/abseil.framework' is ''. (ID: d12c8ead-3eb1-4c9d-bc4a-ef80a80d40aa)

The remainder of the validation errors all point to a MinimumOSVersion empty field in FB internal frameworks, as shown in the log section below.

attempted fixes

  • All in Xcode 15.3, I tried the usual debugging steps – clean the build folder, wipe the Derived Data folder, remove the SDK and then re-add it to the Xcode project file. None of those things fixed the failure on attempted upload to ASC.
  • I searched and found this prior issue that seemed it might be relevant (although specifically dealing with Carthage, so not necessarily directly relevant) – but that didn’t help either
  • no current/new issues in the SDK repo have been opened yet that also identify this issue
  • tried different FB SDK versions (10.18, 10.21, 10.22) – no change, still failure on upload

the culprit?

Taking the exact same Xcode project file without any changes to project configuration, that when built and resulting binary uploaded to ASC caused an asset validation failure as described above with Xcode 15.3 – if I instead build and upload with Xcode 15.2, no validation failure and the upload succeeds, and ASC sees the submitted build as expected.

Which, to me, suggests that this is a new issue specific to Xcode 15.3 – that a non-empty MinimumOSVersion field seems to be now required for frameworks, that wasn’t required for Xcode 15.2.

Thoughts?

Reproducing the issue

No response

Firebase SDK Version

10.22.0

Xcode Version

15.3.0

Installation Method

Swift Package Manager

Firebase Product(s)

All

Targeted Platforms

iOS

Relevant Log Output

Asset validation failed
Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in 'Admin Dev.app/Frameworks/abseil.framework' is ''. (ID: d12c8ead-3eb1-4c9d-bc4a-ef80a80d40aa)

Asset validation failed
Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in 'Admin Dev.app/Frameworks/BoringSSL-GRPC.framework' is ''. (ID: a59395c2-9227-4db1-aeef-809d84215b57)

Asset validation failed
Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in 'Admin Dev.app/Frameworks/gRPC-C++.framework' is ''. (ID: b50b4c86-3bdc-456e-93a5-89787cc0b7a1)

Asset validation failed
Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in 'Admin Dev.app/Frameworks/gRPC-Core.framework' is ''. (ID: 1f309121-9458-4ea0-91c6-26ebb20de0c0)

Asset validation failed
Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle Admin Dev.app/Frameworks/abseil.framework is required. (ID: b6f16926-93dd-4191-942e-e035a3a1b00a)

Asset validation failed
Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle Admin Dev.app/Frameworks/BoringSSL-GRPC.framework is required. (ID: 647c01cb-7321-4ca4-8960-8c1c67d067d7)

Asset validation failed
Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle Admin Dev.app/Frameworks/gRPC-C++.framework is required. (ID: 19af2833-568a-4c6d-a04b-39af0838c07c)

Asset validation failed
Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle Admin Dev.app/Frameworks/gRPC-Core.framework is required. (ID: 6d39ac91-ecf6-4c69-a918-3e9c7dbf4fc4)

Asset validation failed
The bundle 'Payload/Admin Dev.app/Frameworks/abseil.framework' is missing plist key. The Info.plist file is missing the required key: CFBundleShortVersionString. Please find more information about CFBundleShortVersionString at https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring (ID: 27a8df16-1c6c-48c7-bb22-ff9e2bc44561)

Asset validation failed
The bundle 'Payload/Admin Dev.app/Frameworks/BoringSSL-GRPC.framework' is missing plist key. The Info.plist file is missing the required key: CFBundleShortVersionString. Please find more information about CFBundleShortVersionString at https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring (ID: 6de56077-56b2-45bc-b2d5-01475a55faa7)

Asset validation failed
This bundle is invalid. The bundle at path Payload/Admin Dev.app/Frameworks/gRPC-C++.framework has an invalid CFBundleIdentifier 'com.firebase.Firebase-gRPC-C++' There are invalid characters(characters that are not dots, hyphen and alphanumerics) that have been replaced with their code point 'com.firebase.Firebase-gRPC-C\u002b\u002b' CFBundleIdentifier must be present, must contain only alphanumerics, dots, hyphens and must not end with a dot. [see the Core Foundation Keys at https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-102070-TPXREF105] (ID: aa6e77fc-31e9-46b6-93fb-d6faf45d2557)

Asset validation failed
The bundle 'Payload/Admin Dev.app/Frameworks/gRPC-C++.framework' is missing plist key. The Info.plist file is missing the required key: CFBundleShortVersionString. Please find more information about CFBundleShortVersionString at https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring (ID: d4201a2c-ea21-4eed-bdb5-24d78808fa6d)

Asset validation failed
The bundle 'Payload/Admin Dev.app/Frameworks/gRPC-Core.framework' is missing plist key. The Info.plist file is missing the required key: CFBundleShortVersionString. Please find more information about CFBundleShortVersionString at https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring (ID: da7affd3-02e2-4838-8282-98b5d3875da7)

Asset validation failed
Invalid Bundle. The bundle Admin Dev.app/Frameworks/abseil.framework does not support the minimum OS Version specified in the Info.plist. (ID: 6574fabe-1d5f-48c2-a274-03b143882ee7)

Asset validation failed
Invalid Bundle. The bundle Admin Dev.app/Frameworks/BoringSSL-GRPC.framework does not support the minimum OS Version specified in the Info.plist. (ID: a3bc3b9a-b4d7-4bd0-ba9e-bbbabda64035)

Asset validation failed
Invalid Info.plist value. The CFBundleExecutable Info.plist key contains the gRPC-C++ value in the “Payload/Admin Dev.app/Frameworks/gRPC-C++.framework” bundle. This key’s value can’t contain any of the following unsupported characters: \ [ ] { } ( ) + * (ID: bbf78706-589b-4db3-b301-3e0e1c53d490)

Asset validation failed
Invalid Bundle. The bundle Admin Dev.app/Frameworks/gRPC-C++.framework does not support the minimum OS Version specified in the Info.plist. (ID: 33936306-5006-47dc-b127-ad097840d5e6)

Asset validation failed
Invalid Bundle. The bundle Admin Dev.app/Frameworks/gRPC-Core.framework does not support the minimum OS Version specified in the Info.plist. (ID: 3493b850-0bef-4460-9bd9-4d88eb42129d)

If using Swift Package Manager, the project’s Package.resolved

Expand Package.resolved snippet

Replace this line with the contents of your Package.resolved.

If using CocoaPods, the project’s Podfile.lock

Expand Podfile.lock snippet

Replace this line with the contents of your Podfile.lock!

About this issue

  • Original URL
  • State: closed
  • Created 4 months ago
  • Reactions: 9
  • Comments: 22 (9 by maintainers)

Most upvoted comments

Hi everyone, I will have a fix out shortly for this. There’s been several validation changes in Xcode 15.3 to work through. I’ll update when these dependencies are updated.

This issue is now a dupe of https://github.com/firebase/firebase-ios-sdk/issues/12441 so I’m going to close it in favor of that one.

There’s several validation errors at play here, but I’ve released fixes for all of the ones in this issue. The only SDK still broken is GoogleAppMeasurementOnDeviceConversion.

From #12441:

The binary SPM distributions for Abseil, gRPC, and BoringSSL have now been updated and released. The latest version of Firebase should pick them up if you update your SPM workspace. Each of the three SDKs also now has a privacy manifest.

Updating your SPM workspace should pull in these new versions which fix the errors in this issues’s top post:

@jesus-mg-ios, it looks like Firebase updated but not Firebase’s dependencies: gRPC and Abseil. This should be fixable by updating the SPM workspace.

Seems to be working well thank you! For anyone else who comes across this you will probably need to clear derived data after. This might make all your packages go red in spm, just go up to the top, hit file, packages, update to latest package versions and you should be A OK. Just shipped an app update to apple and got the green checkmark. thanks @ncooke3

are patch fixes released except for the GoogleAppMeasurementOnDeviceConversion

Yes, and I’ll use https://github.com/firebase/firebase-ios-sdk/issues/12441 to track updates there.

I didn’t find anything released in the releases.

The existing Firebase 10.22.0 version is compatible with the latest Abseil and gRPC/BoringSSL-gRPC versions I published today. If you update your SPM workspace, Firebase will remain on 10.22.0, but these binary dependencies will update to their new patch releases.

I have a project with pods and with external 3rd party libraries, and i have this issue, deleted derived data, updated external libraries File -> packages -> Update to latest package Versions then i tried to archive and upload and it succeeded

@alexookah, filing an issue in that repo is the best idea. I’ll reach out to the Maps team as well. Thanks for raising the issue.