Commit 214ebf9
committed
fix(analytics, messaging): dedupe GoogleUtilities classes under SPM dynamic frameworks
Under Expo's SPM + dynamic frameworks path, RNFBAnalytics.podspec and
RNFBMessaging.podspec only declared their direct Firebase SPM products
(FirebaseAnalytics, FirebaseMessaging). GULNetwork, GULReachability, and
GULMethodSwizzler were only reachable transitively through those, and
Xcode's SPM integration doesn't reliably promote a transitively-only
reached product to a shared PackageProduct.framework. It compiled a
private copy of each straight into RNFBAnalytics.framework and
RNFBMessaging.framework instead, so GULNetwork/GULMutableDictionary/
GULNetworkURLSession/GULReachabilityChecker/GULSessionDeallocTracker/
GULSwizzler ended up defined twice at runtime once both pods were loaded.
The fix declares those same GoogleUtilities products as an explicit
top-level spm_dependency on both podspecs, the same way GULAppDelegateSwizzler
already was. That's enough for Xcode to treat them as shared and build one
dynamic framework per product instead of duplicating them.
test-expo-ios-link.sh gained a new #9322 check that walks every built
.framework, nm's its defined external symbols, and fails if any of the
affected GUL classes are defined in more than one framework or privately
inside any RNFB* framework rather than a shared PackageProduct. Also removed
the hardcoded CC=clang/LD=clang xcodebuild args, which broke pure-Swift SPM
targets pulled in by this repro (FirebaseCoreInternal).
test-expo's package list and the closer's RNFB* target discovery are already
on main, so this commit does not touch them. The #9322 check still runs
against that graph. Every watched GUL class, including the two
SWIFTPM_MODULE_BUNDLER_FINDER symbols, has exactly one owner, and that owner
is never an RNFB* framework.
Added a short OKF note in ios-spm-native-imports.md: explicit GoogleUtilities
products can share a PackageProduct. That does not extend to FirebaseCore/
FIRApp.1 parent 50a946a commit 214ebf9
4 files changed
Lines changed: 164 additions & 1 deletion
File tree
- .github/workflows/scripts
- okf-bundle
- packages
- analytics
- messaging
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
257 | 257 | | |
258 | 258 | | |
259 | 259 | | |
260 | | - | |
261 | 260 | | |
262 | 261 | | |
263 | 262 | | |
| |||
303 | 302 | | |
304 | 303 | | |
305 | 304 | | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
248 | 248 | | |
249 | 249 | | |
250 | 250 | | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
251 | 275 | | |
252 | 276 | | |
253 | 277 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
70 | 113 | | |
71 | 114 | | |
72 | 115 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
68 | 86 | | |
69 | 87 | | |
70 | 88 | | |
| |||
0 commit comments