如何在M1芯片上使用Firebase的空安全功能?
如何在M1芯片上使用Firebase的空安全功能?
已使用最新版本解决了此问题。\n我已经尝试了最新版本的Firebase,并且得到了以下错误:CocoaPods无法找到与\"Firebase/Firestore\"兼容的版本:\n# nullsafety # not work #solved\n firebase_core: ^1.5.0 #solved now ^1.6.0\n firebase_auth: ^3.0.2 #solved now ^3.1.0\n cloud_firestore: ^2.5.0 #solved now ^2.5.1\n #solved now firebase_storage: ^10.0.3\n # non nullsafety # work\n # firebase_core: ^0.4.0+9\n # firebase_auth: ^0.14.0+5\n # cloud_firestore: ^0.12.9+5\n
\n我的环境:\n
- \n
➜ ios git:(master) ✗ ruby --version ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.arm64e-darwin20]
➜ ios git:(master) ✗ gem --version 3.0.3
\n
\n
\n我尝试了以下步骤:\n➜ flash-chat-flutter git:(master) ✗ flutter clean\nCleaning Xcode workspace... 4.4s\n....\n
\n
➜ ios git:(master) ✗ pod cache clean --all
\n
➜ ios git:(master) ✗ pod deintegrate Deintegrating `Runner.xcodeproj` Deleted 1 'Check Pods Manifest.lock' build phases. .... Deleted 1 empty `Frameworks` groups from project. Removing `Pods` directory. Project has been deintegrated. No traces of CocoaPods left in project. Note: The workspace referencing the Pods project still remains.
\n
➜ ios git:(master) ✗ sudo arch -x86_64 gem install ffi Password: Building native extensions. This could take a while... Successfully installed ffi-1.15.3 Parsing documentation for ffi-1.15.3 Done installing documentation for ffi after 3 seconds 1 gem installed
\n
➜ ios git:(master) ✗ sudo gem install cocoapods --pre .... Fetching xcodeproj-1.21.0.gem .... Successfully installed cocoapods-1.11.0.rc.1 Parsing documentation for addressable-2.8.0 Installing ri documentation for addressable-2.8.0 .... Done installing documentation for addressable, cocoapods-core, molinillo, xcodeproj, cocoapods after 2 seconds 5 gems installed
\n
\n我在这些步骤中遇到了问题 ...\n
\n
➜ ios git:(master) ✗ arch -x86_64 pod update Update all pods Updating local specs repositories Analyzing dependencies cloud_firestore: 使用在'firebase_core'中定义的Firebase SDK版本“8.5.0” firebase_auth: 使用在'firebase_core'中定义的Firebase SDK版本“8.5.0” firebase_core: 使用在'firebase_core'中定义的Firebase SDK版本“8.5.0” [!] CocoaPods无法找到与pod“cloud_firestore”兼容的版本: 在Podfile中: cloud_firestore(来自`.symlinks/plugins/cloud_firestore/ios`) 找到满足依赖关系`cloud_firestore(来自`.symlinks/plugins/cloud_firestore/ios`)`的规范,但它们需要更高的最低部署目标。 [!] 在目标`Runner`上自动分配平台`iOS`和版本`8.0`,因为未指定平台。请在您的Podfile中为此目标指定一个平台。请参阅`https://guides.cocoapods.org/syntax/podfile.html#platform`。
\n➜ ios git:(master) ✗ arch -x86_64 pod install\nAnalyzing dependencies\ncloud_firestore: 使用在\'firebase_core\'中定义的Firebase SDK版本“8.5.0”\nfirebase_auth: 使用在\'firebase_core\'中定义的Firebase SDK版本“8.5.0”\nfirebase_core: 使用在\'firebase_core\'中定义的Firebase SDK版本“8.5.0”\n[!] CocoaPods无法找到与pod“Firebase/Firestore”兼容的版本:\n 在快照(Podfile.lock)中:\n Firebase/Firestore(= 6.34.0,〜> 6.0)\n 在Podfile中:\n cloud_firestore(来自`.symlinks/plugins/cloud_firestore/ios`)解析为2.5.0,它依赖于\n Firebase/Firestore(= 8.5.0)\n您可能:\n * 源存储库已过时,您可以使用`pod repo update`或`pod install --repo-update`进行更新。\n * 更改了开发库`cloud_firestore`中依赖项`Firebase/Firestore`的约束。\n 您应该运行`pod update Firebase/Firestore`以应用您所做的更改。\n[!] 在目标`Runner`上自动分配平台`iOS`和版本`8.0`,因为未指定平台。请在您的Podfile中为此目标指定一个平台。请参阅`https://guides.cocoapods.org/syntax/podfile.html#platform`。\n
\n我还按照非空安全的方法进行了以下步骤,只能参考Running CocoaPods on Apple Silicon (M1)。
如何在M1芯片上使用Firebase空安全?
如果在M1芯片上使用Firebase时遇到问题,可能是由于Cocoapods版本不兼容引起的。为了解决这个问题,可以按照以下步骤进行操作:
1. 打开项目中的ios/pods/Local Podspaces
文件夹。
2. 检查所有的.json
文件,找到最后一个版本,例如:"ios": "10.0"
。
3. 打开ios/Podfile
文件,取消注释顶部的platform :ios, '9.0'
,并将其更改为最后一个版本,例如:platform :ios, '10.0'
。
4. 参考cocoapods version flutter中的解释和讨论,了解更多关于Cocoapods版本与Flutter兼容性的信息。
通过执行以上步骤,您可以解决在M1芯片上使用Firebase时遇到的空安全问题。
如何在M1上使用null safety工作与Firebase?
最近,我在M1芯片上使用Flutter时遇到了一些问题,包括iOS和Android构建。以下是我在解决问题过程中的一些关键时刻:
1. 意识到即使在Silicon芯片上,也需要安装Rosetta(我在安装Xcode时一起安装了它)。
2. 在终端中运行以下命令来安装ffi和cocoapods:sudo arch -x86_64 gem install ffi和sudo arch -x86_64 gem install cocoapods。不需要在Rosetta终端中安装。
3. 关于Android。我安装了Arctic Fox(2020.3.1),尽管它已经包含了Java,但我发现还是需要单独安装Java。我从Oracle安装了Java(版本11,与Arctic Fox使用的版本相同)。
4. 发现iOS构建只能在Flutter beta频道上工作(当前版本为Flutter 2.5.0-5.2.pre)。
5. 意识到在pubspec.yaml中添加或删除包可能会破坏工作环境。即使运行Flutter clean也无法解决问题。我发现只需将项目文件夹重置,并使用git重新加载源文件,就可以使一切恢复正常(我确保不在git中包含任何与pod相关的文件)。
6. 发现Firebase包需要iOS 10或更高版本。我在Xcode中打开了Runner.xcworkspace,并将iOS部署目标设置为10。
目前,我的设置中的Firebase版本如下:
- firebase_core: ^1.4.0
- firebase_storage: ^10.0.1
- cloud_firestore: ^2.4.0
- firebase_auth: ^3.0.2
另外,我使用的是Zulu JDK ARM64,而不是Java。因此,总结一下环境配置:sdk: ">=2.12.0 <3.0.0",并且目前Firebase null safety在iOS上不起作用。我已经尝试了所有版本的null safety,但仍然报错。