Add Firebase Source Distribution for visionOS into existing Xcode Cloud Support for iOS & macOS
Description
I have a working Xcode Cloud setup for iOS and macOS, and I'm trying to add visionOS support. Following Firebase's documentation for visionOS, I need to use the source distribution of Firestore instead of the binary distribution.
I've added a ci_post_clone.sh script that sets the required environment variable for visionOS builds:
#!/bin/bash
if [[ $CI_PRODUCT_PLATFORM == "xrOS" ]]; then
echo "Running setup for visionOS..."
export FIREBASE_SOURCE_FIRESTORE=1
fi
(this apparently still requires 'xrOS' instead of 'visionOS')
However, this results in the following error during the build:
an out-of-date resolved file was detected at /.../project.xcworkspace/xcshareddata/swiftpm/Package.resolved, which is not allowed when automatic dependency resolution is disabled; please make sure to update the file to reflect the changes in dependencies.
So since setting FIREBASE_SOURCE_FIRESTORE=1 changes which dependencies are required:
- Normal setup uses: abseil-cpp-binary, grpc-binary
- Source distribution needs: abseil-cpp-swiftpm, grpc-ios, boringssl-swiftpm
What's the recommended way to handle this in Xcode Cloud when you want to maintain builds for all platforms? Any guidance would be appreciated!
Reproducing the issue
No response
Firebase SDK Version
10.29.0
Xcode Version
16.2
Installation Method
Swift Package Manager
Firebase Product(s)
Firestore
Targeted Platforms
visionOS
Relevant Log Output
If using Swift Package Manager, the project's Package.resolved
Expand Package.resolved for iOS/macOS snippet
{
"originHash" : "caa7602a4f2bc52fa7deda56872a290d759a149b7585392847863d82e2c124b8",
"pins" : [
{
"identity" : "abseil-cpp-binary",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/abseil-cpp-binary.git",
"state" : {
"revision" : "194a6706acbd25e4ef639bcaddea16e8758a3e27",
"version" : "1.2024011602.0"
}
},
{
"identity" : "algoliasearch-client-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/algolia/algoliasearch-client-swift",
"state" : {
"revision" : "4322ab2dc8cdb7acb6d06a019fd56f84dc998f25",
"version" : "8.21.0"
}
},
{
"identity" : "amplitude-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/amplitude/Amplitude-iOS",
"state" : {
"revision" : "4471ff73fffdff9a9b256422a0a0b9233582f33d",
"version" : "8.22.0"
}
},
{
"identity" : "analytics-connector-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/amplitude/analytics-connector-ios.git",
"state" : {
"revision" : "e2ca17ac735bcbc48b13062484541702ef45153d",
"version" : "1.0.3"
}
},
{
"identity" : "app-check",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/app-check.git",
"state" : {
"revision" : "3b62f154d00019ae29a71e9738800bb6f18b236d",
"version" : "10.19.2"
}
},
{
"identity" : "arcore-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google-ar/arcore-ios-sdk",
"state" : {
"revision" : "686fe380b672b9eb6a9ae37c2013a4382e25dc54",
"version" : "1.45.0"
}
},
{
"identity" : "firebase-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/firebase-ios-sdk.git",
"state" : {
"revision" : "eca84fd638116dd6adb633b5a3f31cc7befcbb7d",
"version" : "10.29.0"
}
},
{
"identity" : "giphy-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/Giphy/giphy-ios-sdk",
"state" : {
"revision" : "cdefbedc9f99d40cc64667a2bfaae67a1cf36fbb",
"version" : "2.2.12"
}
},
{
"identity" : "googleappmeasurement",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleAppMeasurement.git",
"state" : {
"revision" : "fe727587518729046fc1465625b9afd80b5ab361",
"version" : "10.28.0"
}
},
{
"identity" : "googledatatransport",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleDataTransport.git",
"state" : {
"revision" : "a637d318ae7ae246b02d7305121275bc75ed5565",
"version" : "9.4.0"
}
},
{
"identity" : "googleutilities",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleUtilities.git",
"state" : {
"revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6",
"version" : "7.13.3"
}
},
{
"identity" : "grpc-binary",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/grpc-binary.git",
"state" : {
"revision" : "e9fad491d0673bdda7063a0341fb6b47a30c5359",
"version" : "1.62.2"
}
},
{
"identity" : "gtm-session-fetcher",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/gtm-session-fetcher.git",
"state" : {
"revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b",
"version" : "3.5.0"
}
},
{
"identity" : "interop-ios-for-google-sdks",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/interop-ios-for-google-sdks.git",
"state" : {
"revision" : "2d12673670417654f08f5f90fdd62926dc3a2648",
"version" : "100.0.0"
}
},
{
"identity" : "ios-branch-sdk-spm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/BranchMetrics/ios-branch-sdk-spm",
"state" : {
"revision" : "13de0ad975dc317e568d5430adedfd1f56ec081d",
"version" : "3.6.4"
}
},
{
"identity" : "leveldb",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/leveldb.git",
"state" : {
"revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1",
"version" : "1.22.5"
}
},
{
"identity" : "libwebp-xcode",
"kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/libwebp-Xcode",
"state" : {
"revision" : "b2b1d20a90b14d11f6ef4241da6b81c1d3f171e4",
"version" : "1.3.2"
}
},
{
"identity" : "lifetimetracker",
"kind" : "remoteSourceControl",
"location" : "https://github.com/krzysztofzablocki/LifetimeTracker.git",
"state" : {
"revision" : "fccc98aae719f6615d1f0cfd8f5e60f3888bdf62",
"version" : "1.8.4"
}
},
{
"identity" : "mapbox-common-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mapbox/mapbox-common-ios.git",
"state" : {
"revision" : "c2aa7022afdcf5a070ace4e3b608562101a04690",
"version" : "23.10.1"
}
},
{
"identity" : "mapbox-core-maps-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mapbox/mapbox-core-maps-ios.git",
"state" : {
"revision" : "51f776b11bcff34ced88fcf14e4ed9c568257232",
"version" : "10.18.0"
}
},
{
"identity" : "mapbox-maps-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mapbox/mapbox-maps-ios.git",
"state" : {
"revision" : "8ef49bb140bbd5d51917f1e69d4c3949a176c009",
"version" : "10.18.2"
}
},
{
"identity" : "nanopb",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/nanopb.git",
"state" : {
"revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1",
"version" : "2.30910.0"
}
},
{
"identity" : "nuke",
"kind" : "remoteSourceControl",
"location" : "https://github.com/kean/Nuke.git",
"state" : {
"branch" : "12.2.0-beta.2",
"revision" : "f8e1035e887fe4fe50b0a2c2759527d261645062"
}
},
{
"identity" : "onesignal-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/OneSignal/OneSignal-iOS-SDK",
"state" : {
"revision" : "02ede33062016cd948ba1e4f157e2f5617e12c8e",
"version" : "5.2.9"
}
},
{
"identity" : "promises",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/promises.git",
"state" : {
"revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac",
"version" : "2.4.0"
}
},
{
"identity" : "purchases-ios-spm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/RevenueCat/purchases-ios-spm.git",
"state" : {
"revision" : "7f0b552b4d9b446a12740192fe0174dd6d77c6b2",
"version" : "5.7.1"
}
},
{
"identity" : "skeletonview",
"kind" : "remoteSourceControl",
"location" : "https://github.com/Juanpe/SkeletonView.git",
"state" : {
"revision" : "2f5274827d310e32c09325dd3e0007120940988e",
"version" : "1.31.0"
}
},
{
"identity" : "swift-protobuf",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-protobuf.git",
"state" : {
"revision" : "ebc7251dd5b37f627c93698e4374084d98409633",
"version" : "1.28.2"
}
},
{
"identity" : "tocropviewcontroller",
"kind" : "remoteSourceControl",
"location" : "https://github.com/TimOliver/TOCropViewController.git",
"state" : {
"revision" : "a634cb7cdfd580006e79a6e74e64417fe9e9783b",
"version" : "2.7.4"
}
},
{
"identity" : "turf-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mapbox/turf-swift.git",
"state" : {
"revision" : "213050191cfcb3d5aa76e1fa90c6ff1e182a42ca",
"version" : "2.8.0"
}
}
],
"version" : 3
}
Expand Package.resolved for iOS/macOS snippet
{
"originHash" : "caa7602a4f2bc52fa7deda56872a290d759a149b7585392847863d82e2c124b8",
"pins" : [
{
"identity" : "abseil-cpp-swiftpm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/abseil-cpp-SwiftPM.git",
"state" : {
"revision" : "140793ccfa916fe62f965249669e59ef325ae33c",
"version" : "0.20240116.1"
}
},
{
"identity" : "algoliasearch-client-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/algolia/algoliasearch-client-swift",
"state" : {
"revision" : "4322ab2dc8cdb7acb6d06a019fd56f84dc998f25",
"version" : "8.21.0"
}
},
{
"identity" : "amplitude-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/amplitude/Amplitude-iOS",
"state" : {
"revision" : "4471ff73fffdff9a9b256422a0a0b9233582f33d",
"version" : "8.22.0"
}
},
{
"identity" : "analytics-connector-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/amplitude/analytics-connector-ios.git",
"state" : {
"revision" : "e2ca17ac735bcbc48b13062484541702ef45153d",
"version" : "1.0.3"
}
},
{
"identity" : "app-check",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/app-check.git",
"state" : {
"revision" : "3b62f154d00019ae29a71e9738800bb6f18b236d",
"version" : "10.19.2"
}
},
{
"identity" : "arcore-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google-ar/arcore-ios-sdk",
"state" : {
"revision" : "686fe380b672b9eb6a9ae37c2013a4382e25dc54",
"version" : "1.45.0"
}
},
{
"identity" : "boringssl-swiftpm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/boringssl-SwiftPM.git",
"state" : {
"revision" : "38b03401110f03bde32bc7e86ff4f815238ed2d3",
"version" : "0.32.1"
}
},
{
"identity" : "firebase-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/firebase-ios-sdk.git",
"state" : {
"revision" : "eca84fd638116dd6adb633b5a3f31cc7befcbb7d",
"version" : "10.29.0"
}
},
{
"identity" : "giphy-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/Giphy/giphy-ios-sdk",
"state" : {
"revision" : "cdefbedc9f99d40cc64667a2bfaae67a1cf36fbb",
"version" : "2.2.12"
}
},
{
"identity" : "googleappmeasurement",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleAppMeasurement.git",
"state" : {
"revision" : "fe727587518729046fc1465625b9afd80b5ab361",
"version" : "10.28.0"
}
},
{
"identity" : "googledatatransport",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleDataTransport.git",
"state" : {
"revision" : "a637d318ae7ae246b02d7305121275bc75ed5565",
"version" : "9.4.0"
}
},
{
"identity" : "googleutilities",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleUtilities.git",
"state" : {
"revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6",
"version" : "7.13.3"
}
},
{
"identity" : "grpc-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/grpc/grpc-ios.git",
"state" : {
"revision" : "2adbb0708f53823e670e940f3a8d0a5d4b5ee145",
"version" : "1.62.5"
}
},
{
"identity" : "gtm-session-fetcher",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/gtm-session-fetcher.git",
"state" : {
"revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b",
"version" : "3.5.0"
}
},
{
"identity" : "interop-ios-for-google-sdks",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/interop-ios-for-google-sdks.git",
"state" : {
"revision" : "2d12673670417654f08f5f90fdd62926dc3a2648",
"version" : "100.0.0"
}
},
{
"identity" : "ios-branch-sdk-spm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/BranchMetrics/ios-branch-sdk-spm",
"state" : {
"revision" : "13de0ad975dc317e568d5430adedfd1f56ec081d",
"version" : "3.6.4"
}
},
{
"identity" : "leveldb",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/leveldb.git",
"state" : {
"revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1",
"version" : "1.22.5"
}
},
{
"identity" : "libwebp-xcode",
"kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/libwebp-Xcode",
"state" : {
"revision" : "b2b1d20a90b14d11f6ef4241da6b81c1d3f171e4",
"version" : "1.3.2"
}
},
{
"identity" : "lifetimetracker",
"kind" : "remoteSourceControl",
"location" : "https://github.com/krzysztofzablocki/LifetimeTracker.git",
"state" : {
"revision" : "fccc98aae719f6615d1f0cfd8f5e60f3888bdf62",
"version" : "1.8.4"
}
},
{
"identity" : "mapbox-common-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mapbox/mapbox-common-ios.git",
"state" : {
"revision" : "c2aa7022afdcf5a070ace4e3b608562101a04690",
"version" : "23.10.1"
}
},
{
"identity" : "mapbox-core-maps-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mapbox/mapbox-core-maps-ios.git",
"state" : {
"revision" : "51f776b11bcff34ced88fcf14e4ed9c568257232",
"version" : "10.18.0"
}
},
{
"identity" : "mapbox-maps-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mapbox/mapbox-maps-ios.git",
"state" : {
"revision" : "8ef49bb140bbd5d51917f1e69d4c3949a176c009",
"version" : "10.18.2"
}
},
{
"identity" : "nanopb",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/nanopb.git",
"state" : {
"revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1",
"version" : "2.30910.0"
}
},
{
"identity" : "nuke",
"kind" : "remoteSourceControl",
"location" : "https://github.com/kean/Nuke.git",
"state" : {
"branch" : "12.2.0-beta.2",
"revision" : "f8e1035e887fe4fe50b0a2c2759527d261645062"
}
},
{
"identity" : "onesignal-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/OneSignal/OneSignal-iOS-SDK",
"state" : {
"revision" : "02ede33062016cd948ba1e4f157e2f5617e12c8e",
"version" : "5.2.9"
}
},
{
"identity" : "promises",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/promises.git",
"state" : {
"revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac",
"version" : "2.4.0"
}
},
{
"identity" : "purchases-ios-spm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/RevenueCat/purchases-ios-spm.git",
"state" : {
"revision" : "7f0b552b4d9b446a12740192fe0174dd6d77c6b2",
"version" : "5.7.1"
}
},
{
"identity" : "skeletonview",
"kind" : "remoteSourceControl",
"location" : "https://github.com/Juanpe/SkeletonView.git",
"state" : {
"revision" : "2f5274827d310e32c09325dd3e0007120940988e",
"version" : "1.31.0"
}
},
{
"identity" : "swift-protobuf",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-protobuf.git",
"state" : {
"revision" : "ebc7251dd5b37f627c93698e4374084d98409633",
"version" : "1.28.2"
}
},
{
"identity" : "tocropviewcontroller",
"kind" : "remoteSourceControl",
"location" : "https://github.com/TimOliver/TOCropViewController.git",
"state" : {
"revision" : "a634cb7cdfd580006e79a6e74e64417fe9e9783b",
"version" : "2.7.4"
}
},
{
"identity" : "turf-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mapbox/turf-swift.git",
"state" : {
"revision" : "213050191cfcb3d5aa76e1fa90c6ff1e182a42ca",
"version" : "2.8.0"
}
}
],
"version" : 3
}
If using CocoaPods, the project's Podfile.lock
Expand Podfile.lock snippet
Replace this line with the contents of your Podfile.lock!
I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
You may need to either build all the platforms from the source distribution or do the VisionOS build in a clean environment.
You may need to either build all the platforms from the source distribution or do the VisionOS build in a clean environment.
Hmm I‘m already building the visionOS build in a separate workflow. How else would I clean it up? Remove the package resolved in a script and enforce a manual package resolve? Thanks for the reply!
Hmm, I would think a new workflow would give a clean environment. Is there a lingering .build directory? Are you able to reproduce outside of Xcode Cloud?
Hey @arthurschiller. We need more information to resolve this issue but there hasn't been an update in 5 weekdays. I'm marking the issue as stale and if there are no new updates in the next 5 days I will close it automatically.
If you have more information that will help us get to the bottom of this, just add a comment!
Sorry I hadn't had the time yet to loo
Hey @arthurschiller. We need more information to resolve this issue but there hasn't been an update in 5 weekdays. I'm marking the issue as stale and if there are no new updates in the next 5 days I will close it automatically.
If you have more information that will help us get to the bottom of this, just add a comment!
Sorry I hadn't had the time yet to look into it again. Will hopefully be able to on Wednesday or Thursday.
Hey @arthurschiller. We need more information to resolve this issue but there hasn't been an update in 5 weekdays. I'm marking the issue as stale and if there are no new updates in the next 5 days I will close it automatically.
If you have more information that will help us get to the bottom of this, just add a comment!
Since there haven't been any recent updates here, I am going to close this issue.
@arthurschiller if you're still experiencing this problem and want to continue the discussion just leave a comment here and we are happy to re-open this.