Closed paulb777 closed 8 months ago
Thanks for the work here Paul! I tried out your implementation, but then I realized this pod uses Firebase 10.20—my main project is built with Flutter and therefore depends on Flutterfire, which itself depends on Firebase 10.18 right now I believe, so I'm not sure I can be of much help. Let me know if I've misunderstood something or if I can help in some other way.
@lukemmtt Thanks for taking a look. I added 10.18.0 versions in addition to 10.20.0, so you should be able to access with pod 'FirebaseFirestoreBinary', '10.18.0'
in the Podfile.
Great, will try again tomorrow, thanks!
I tried with my Flutter app and unfortunately, the same error:
fatal error: module 'cloud_firestore' not found
source 'https://github.com/paulb777/TestFirebaseBinaryStaging.git'
source 'https://cdn.cocoapods.org/'
target 'Runner' do
use_frameworks!
pod 'FirebaseFirestoreBinary', '10.18.0'
end
@ulusoyca The Podfile instructions I shared are only about the Firestore specification. They need to be merged with the specifications for the Flutter pods.
@ulusoyca The Podfile instructions I shared are only about the Firestore specification. They need to be merged with the specifications for the Flutter pods.
Can you provide full example so that I can test? This is my full pod file.
# Uncomment this line to define a global platform for your project
platform :ios, '13.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
source 'https://github.com/paulb777/TestFirebaseBinaryStaging.git'
source 'https://cdn.cocoapods.org/'
target 'Runner' do
use_frameworks!
pod 'FirebaseFirestoreBinary', '10.18.0'
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
xcconfig_path = config.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
end
end
end
I added an update to attempt to work with the Flutter process of overriding the FirebaseFirestore pod: Try replacing pod 'FirebaseFirestoreBinary', '10.18.0'
with pod 'FirebaseFirestore', :git => 'https://github.com/paulb777/firestore-ios-sdk-frameworks.git', :tag => '10.18.0'
in the Podfile.
That worked for me Paul using pod 'FirebaseFirestore', :git => 'https://github.com/paulb777/firestore-ios-sdk-frameworks.git', :tag => '10.18.0'
After doing pod deintegrate and pod update I verifed that all of the abseil, BoringSSL-GRPC and FirebaseFirestore repos were no longer in the podfile.lock.
My app built much faster and worked just fine as far as I can see :) Thank you!
I should note that previously I had been using pod 'FirebaseFirestore/WithLeveldb'
to get around missing symbols. I couldn't use that and had to revert to pod 'FirebaseFirestore
'.
The app ran fine without it, so I'm fine here, but just noting for others.
pod update
[!] Unable to find a specification for FirebaseFirestoreBinary (= 10.18.0)
depended upon by FirebaseFirestore
You have either:
anmolgupta@anmols-mbp ios % hi @paulb777 when i update my pod file it gives me this error
Podfile `target 'Runner' do use_frameworks! use_modular_headers! pod 'FirebaseFirestore', :git => 'https://github.com/paulb777/firestore-ios-sdk-frameworks.git', :tag => '10.18.0'
flutter_install_all_ios_pods File.dirname(File.realpath(FILE)) end `
pod update
[!] Unable to find a specification for
FirebaseFirestoreBinary (= 10.18.0)
depended upon byFirebaseFirestore
You have either:
- mistyped the name or version.
- not added the source repo that hosts the Podspec to your Podfile.
anmolgupta@anmols-mbp ios % hi @paulb777 when i update my pod file it gives me this error
Podfile `target 'Runner' do use_frameworks! use_modular_headers! pod 'FirebaseFirestore', :git => 'https://github.com/paulb777/firestore-ios-sdk-frameworks.git', :tag => '10.18.0'
flutter_install_all_ios_pods File.dirname(File.realpath(FILE)) end `
firebase_storage: ^11.2.5 firebase_core: ^2.15.0 cloud_firestore: ^4.14.0 cloud_functions: ^4.4.2 firebase_messaging: ^14.7.10 firebase_crashlytics: ^3.4.9 firebase_database: ^10.2.0 firebase_auth: ^4.9.0
@matt-hall-zory Glad to hear it worked for you. 👍
@anmolgupta321 Make sure you include the following two source
lines in the Podfile:
source 'https://github.com/paulb777/TestFirebaseBinaryStaging.git'
source 'https://cdn.cocoapods.org/'
@paulb777, I think you've done it!
In my flutter_project_root/ios
directory, I added these lines near the top of my podfile:
source 'https://github.com/paulb777/TestFirebaseBinaryStaging.git'
source 'https://cdn.cocoapods.org/'
And this line in target 'Runner' do
block:
pod 'FirebaseFirestore', :git => 'https://github.com/paulb777/firestore-ios-sdk-frameworks.git', :tag => '10.18.0'
Without this optimization (after running flutter clean):
With this optimization (after running flutter clean):
This result is just as good as it was a few months ago when the original precompiled binary stopped working. Not sure if there's more work to be done for other implementations, but as far as I can tell, your fix works. Thanks for your contributions!
Interesting! I checked this in the react-native-firebase test app, using the non-Flutter instructions - Podfile changes:
diff --git a/tests/ios/Podfile b/tests/ios/Podfile
index 8a09b8d6d..93caa54a3 100644
--- a/tests/ios/Podfile
+++ b/tests/ios/Podfile
@@ -5,6 +5,10 @@ require 'json'
# source 'https://github.com/firebase/SpecsStaging'
# source 'https://cdn.cocoapods.org/'
+# Testing https://github.com/invertase/firestore-ios-sdk-frameworks/pull/88
+source 'https://github.com/paulb777/TestFirebaseBinaryStaging.git'
+source 'https://cdn.cocoapods.org/'
+
# Settings to test various overrides if desired
appPackage = JSON.parse(File.read(File.join('..', 'node_modules', '@react-native-firebase', 'app', 'package.json')))
$FirebaseSDKVersion = appPackage['sdkVersions']['ios']['firebase']
@@ -69,6 +73,9 @@ target 'testing' do
# Use pre-compiled firestore frameworks to optimize compile time. Auto-includes leveldb if needed.
# pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => $FirebaseSDKVersion
+ # Testing https://github.com/invertase/firestore-ios-sdk-frameworks/pull/88
+ pod 'FirebaseFirestoreBinary', $FirebaseSDKVersion
+
# If leveldb auto-inclusion fails and build fails with leveldb symbol conflicts, use this subspec:
# pod 'FirebaseFirestore/WithoutLeveldb', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => $FirebaseSDKVersion
I did not see the abseil / gRPC go away from the Podfile but the binary ones were added:
diff --git a/tests/ios/Podfile.lock b/tests/ios/Podfile.lock
index 6ed746108..7cd199e92 100644
--- a/tests/ios/Podfile.lock
+++ b/tests/ios/Podfile.lock
@@ -764,6 +764,19 @@ PODS:
- FirebaseCoreExtension (~> 10.0)
- FirebaseFirestoreInternal (~> 10.17)
- FirebaseSharedSwift (~> 10.0)
+ - FirebaseFirestoreAbseilBinary (1.2022062300.0)
+ - FirebaseFirestoreBinary (10.20.0):
+ - FirebaseCore (~> 10.20)
+ - FirebaseCoreExtension (~> 10.20)
+ - FirebaseFirestoreInternalBinary (~> 10.20)
+ - FirebaseSharedSwift (~> 10.20)
+ - FirebaseFirestoreGRPCBoringSSLBinary (1.49.1)
+ - FirebaseFirestoreGRPCCoreBinary (1.49.1):
+ - FirebaseFirestoreAbseilBinary (~> 1.2022062300.0)
+ - FirebaseFirestoreGRPCBoringSSLBinary (~> 1.49.1)
+ - FirebaseFirestoreGRPCCPPBinary (1.49.1):
+ - FirebaseFirestoreAbseilBinary (~> 1.2022062300.0)
+ - FirebaseFirestoreGRPCCoreBinary (~> 1.49.1)
- FirebaseFirestoreInternal (10.20.0):
- abseil/algorithm (~> 1.20220623.0)
- abseil/base (~> 1.20220623.0)
@@ -778,6 +791,12 @@ PODS:
- "gRPC-C++ (~> 1.49.1)"
- leveldb-library (~> 1.22)
- nanopb (< 2.30910.0, >= 2.30908.0)
+ - FirebaseFirestoreInternalBinary (10.20.0):
+ - FirebaseCore (~> 10.20)
+ - FirebaseFirestoreAbseilBinary (~> 1.2022062300.0)
+ - FirebaseFirestoreGRPCCPPBinary (~> 1.49.1)
+ - leveldb-library (~> 1.22)
+ - nanopb (< 2.30910.0, >= 2.30908.0)
- FirebaseFunctions (10.20.0):
- FirebaseAppCheckInterop (~> 10.10)
- FirebaseAuthInterop (~> 10.0)
@@ -2083,6 +2102,7 @@ DEPENDENCIES:
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
+ - FirebaseFirestoreBinary (= 10.20.0)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- Jet (from `../node_modules/jet`)
@@ -2151,6 +2171,13 @@ DEPENDENCIES:
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
+ https://github.com/paulb777/TestFirebaseBinaryStaging.git:
+ - FirebaseFirestoreAbseilBinary
+ - FirebaseFirestoreBinary
+ - FirebaseFirestoreGRPCBoringSSLBinary
+ - FirebaseFirestoreGRPCCoreBinary
+ - FirebaseFirestoreGRPCCPPBinary
+ - FirebaseFirestoreInternalBinary
trunk:
- abseil
- AppCheckCore
@@ -2357,7 +2384,13 @@ SPEC CHECKSUMS:
FirebaseDatabase: 7e838abb62ac2e1a1c792cbeb51df3c4b6607f54
FirebaseDynamicLinks: 61a82d43b81cd74a3cdbb1d65f07fb0241aaa553
FirebaseFirestore: 21be9ea244830f6cac15464550c2975c43f9dffc
+ FirebaseFirestoreAbseilBinary: bfaea8f46afee1737cfa36bfb2cedca3d6762af3
+ FirebaseFirestoreBinary: 322e38440fc3aadd7d12934678a626777242defa
+ FirebaseFirestoreGRPCBoringSSLBinary: de993f159ad7a27094de7ff8b080730916409990
+ FirebaseFirestoreGRPCCoreBinary: 1beaa77a8fe26e03c8f2e9d40b4b45651e2acbcc
+ FirebaseFirestoreGRPCCPPBinary: 7fa452b2736744dc5d14f1841a9b215bdb93e33b
FirebaseFirestoreInternal: 0dc0762afd68192e9d45c31d3dd3017accc84333
+ FirebaseFirestoreInternalBinary: 1337255ff452130dd8378056164c854abd74520e
FirebaseFunctions: 2b6ec69b93c49347025190ccb0a27cdbfd1cad66
FirebaseInAppMessaging: 1a9bba3e245cb3ff3fe96e828de2932208d6fc65
FirebaseInstallations: 558b1da7d65afeb996fd5c814332f013234ece4e
@@ -2447,6 +2480,6 @@ SPEC CHECKSUMS:
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
Yoga: 13c8ef87792450193e117976337b8527b49e8c03
-PODFILE CHECKSUM: fd2f683bc28d2fe2477257935924fd91d3c54766
+PODFILE CHECKSUM: 769ca25f247a61af8c1a4700dca19df4467a71b5
COCOAPODS: 1.14.3
I did not see the abseil or gRPC stuff go away, and the build failed with duplicate symbol errors
❌ duplicate symbol '_OBJC_CLASS_$_PodsDummy_abseil' in
❌ duplicate symbol '_OBJC_METACLASS_$_PodsDummy_abseil' in
❌ duplicate symbol '_OBJC_CLASS_$_PodsDummy_gRPC_C__' in
❌ duplicate symbol '_OBJC_METACLASS_$_PodsDummy_gRPC_C__' in
❌ duplicate symbol '_OBJC_CLASS_$_PodsDummy_BoringSSL_GRPC' in
❌ duplicate symbol '_OBJC_METACLASS_$_PodsDummy_BoringSSL_GRPC' in
❌ duplicate symbol '_OBJC_CLASS_$_PodsDummy_gRPC_Core' in
❌ duplicate symbol '_OBJC_METACLASS_$_PodsDummy_gRPC_Core' in
❌ ld: 8 duplicate symbols for architecture arm64
❌ clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **
The following build commands failed:
Ld /Users/mike/work/invertase/react-native-firebase/tests/ios/build/Build/Products/Debug-iphonesimulator/testing.app/testing normal (in target 'testing' from project 'testing')
(1 failure)
When I tried the Flutter style:
+ # Testing https://github.com/invertase/firestore-ios-sdk-frameworks/pull/88
+ pod 'FirebaseFirestoreBinary', :git => 'https://github.com/paulb777/firestore-ios-sdk-frameworks.git', :tag => $FirebaseSDKVersion
+
❓ With the flutter style there was still some LeveldbAutodect
pod stuff in the Podfile - is that expected?
...and I received undefined symbol errors:
Undefined symbols for architecture arm64:
"_$s19FirebaseSharedSwift0A11DataDecoderC0D16DecodingStrategyO4blobyA2EmFWC", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderCAEycfC in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderCAEycfc in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$s17FirebaseFirestore0B15QueryObservableC13configurationACySayqd__GGAA0bC0V13ConfigurationVyAE_G_tcAERszSeRd__lufcySo16FIRQuerySnapshotCSg_s5Error_pSgtcfU_qd__SgSo0g8DocumentH0CXEfU2_qd__yKXEfU_ in FirebaseFirestore(FirestoreQueryObservable.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC19KeyDecodingStrategyO14useDefaultKeysyA2EmFWC", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderCAEycfC in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderCAEycfc in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$s17FirebaseFirestore0B15QueryObservableC13configurationACySayqd__GGAA0bC0V13ConfigurationVyAE_G_tcAERszSeRd__lufcySo16FIRQuerySnapshotCSg_s5Error_pSgtcfU_qd__SgSo0g8DocumentH0CXEfU2_qd__yKXEfU_ in FirebaseFirestore(FirestoreQueryObservable.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC19keyDecodingStrategyAC03KeygH0OvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderC6decode_4fromxxm_yptKSeRzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC20DateDecodingStrategyO6customyAE10Foundation0F0Vs0E0_pKccAEmFWC", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderCAEycfC in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderCAEycfc in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$s17FirebaseFirestore0B15QueryObservableC13configurationACySayqd__GGAA0bC0V13ConfigurationVyAE_G_tcAERszSeRd__lufcySo16FIRQuerySnapshotCSg_s5Error_pSgtcfU_qd__SgSo0g8DocumentH0CXEfU2_qd__yKXEfU_ in FirebaseFirestore(FirestoreQueryObservable.o)
⚠️ _$s19FirebaseSharedSwift0A11DataDecoderC20DateDecodingStrategyO0A9FirestoreE9timestampAEvgZ in FirebaseFirestore(TimestampDecodingStrategy.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC20dataDecodingStrategyAC0dgH0OvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderC6decode_4fromxxm_yptKSeRzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC20dateDecodingStrategyAC04DategH0OvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderC6decode_4fromxxm_yptKSeRzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC23passthroughTypeResolverAA026StructureCodingPassthroughgH0_pXpvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderC6decode_4fromxxm_yptKSeRzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC34NonConformingFloatDecodingStrategyO5throwyA2EmFWC", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderCAEycfC in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderCAEycfc in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$s17FirebaseFirestore0B15QueryObservableC13configurationACySayqd__GGAA0bC0V13ConfigurationVyAE_G_tcAERszSeRd__lufcySo16FIRQuerySnapshotCSg_s5Error_pSgtcfU_qd__SgSo0g8DocumentH0CXEfU2_qd__yKXEfU_ in FirebaseFirestore(FirestoreQueryObservable.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC34nonConformingFloatDecodingStrategyAC03NonghiJ0OvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderC6decode_4fromxxm_yptKSeRzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC6decode_4fromxxm_yptKSeRzlFTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderC6decode_4fromxxm_yptKSeRzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataDecoderC8userInfoSDys010CodingUserG3KeyVypGvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7DecoderC6decode_4fromxxm_yptKSeRzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC0D16EncodingStrategyO4blobyA2EmFWC", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderCAEycfC in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderCAEycfc in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC19KeyEncodingStrategyO14useDefaultKeysyA2EmFWC", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderCAEycfC in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderCAEycfc in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC19keyEncodingStrategyAC03KeygH0OvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderC6encodeySDySSypGxKSERzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC20DateEncodingStrategyO6customyAEy10Foundation0F0V_s0E0_ptKccAEmFWC", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderCAEycfC in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderCAEycfc in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$s19FirebaseSharedSwift0A11DataEncoderC20DateEncodingStrategyO0A9FirestoreE9timestampAEvgZ in FirebaseFirestore(TimestampEncodingStrategy.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC20dataEncodingStrategyAC0dgH0OvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderC6encodeySDySSypGxKSERzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC20dateEncodingStrategyAC04DategH0OvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderC6encodeySDySSypGxKSERzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC23passthroughTypeResolverAA026StructureCodingPassthroughgH0_pXpvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderC6encodeySDySSypGxKSERzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC34NonConformingFloatEncodingStrategyO5throwyA2EmFWC", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderCAEycfC in FirebaseFirestore(EncoderDecoder.o)
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderCAEycfc in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC34nonConformingFloatEncodingStrategyAC03NonghiJ0OvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderC6encodeySDySSypGxKSERzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC6encodeyypxKSERzlFTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderC6encodeySDySSypGxKSERzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift0A11DataEncoderC8userInfoSDys010CodingUserG3KeyVypGvsTj", referenced from:
⚠️ _$sSo12FIRFirestoreC17FirebaseFirestoreE7EncoderC6encodeySDySSypGxKSERzlF in FirebaseFirestore(EncoderDecoder.o)
❌ "_$s19FirebaseSharedSwift38StructureCodingPassthroughTypeResolverP02isfG0ySbqd__lFZTq", referenced from:
⚠️ l_got.$s19FirebaseSharedSwift38StructureCodingPassthroughTypeResolverP02isfG0ySbqd__lFZTq in FirebaseFirestore(CodablePassThroughTypes.o)
❌ ld: symbol(s) not found for architecture arm64
❌ clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **
I've pushed my experiments to this branch in two commits, one attempting the FirebaseFirestoreBinary
pod dep, and one attempting the FirebaseFirestore
dep that references into the git repo
yarn
is needed in order to install almost all things, I believe it needs node v18+ at the moment, may work with v16yarn tests:ios:pod:install
will do exact equivalent of cd tests/ios && pod install
yarn tests:ios:build
will run the build, but running the build from Xcode from tests/ios/testing.xcworkspace
after a pod install should be roughly equivalentSo I can't seem to make it work quite yet for the react-native-firebase case - perhaps I'm missing something?
Worth mentioning in the meantime ccache continues to result in builds of approximately 3 minutes total in github runners despite compiling literally every single firebase module plus a bunch of other modules
It looks like there may be a lingering binary build of the Firestore Swift sources in your project. It might help to remove DerivedData for the project. If that doesn't help, we need to track down where the FirebaseFirestore(EncoderDecoder.o)
is coming from.
With the new design, leveldb should always be built as source. (It's small and fast to build).
If you're stuck with react-native, share repro instructions and I can take a look.
Fix #79
This PR provides a CocoaPods integrated binary Firestore distribution:
To try it out:
https://github.com/paulb777/TestFirebaseBinaryStaging.git
as a podspec sourceFirebaseFirestoreBinary
For example a Podfile like:
I've done limited testing and would appreciate others to try it out.
Since GitHub isn't showing the change in the PR, see https://github.com/paulb777/firestore-ios-sdk-frameworks/tree/binary-prototype for the result of the PR to the repo.
Notes:
rsync
, use this workaround.