xcode firebase消息错误OSAtomicCompareAndSwapPtrBarrier

Gla*_*son 10 ios firebase ionic3

我在 ionic 3(旧版)中有一个应用程序,在构建它时,我在文件“GtalkExtensions.pbobjc”的这一部分的 Firebase Messaging 库中收到错误

if (!OSAtomicCompareAndSwapPtrBarrier(nil, worker, (void * volatile *)&descriptor)) {
      [worker release];
    }
Run Code Online (Sandbox Code Playgroud)

“OSAtomicCompareAndSwapPtrBarrier”的冲突类型

在需要之前,必须从模块“Darwin.libkern.OSAtomic”导入“OSAtomicCompareAndSwapPtrBarrier”声明

函数“OSAtomicCompareAndSwapPtrBarrier”的隐式声明在 C99 中无效

如何解决这个问题我已经完全删除了cocoapods并测试了几个版本,但没有帮助。

Mac Mini M1 Mac 操作系统 Ventura XCode 14.2

iUr*_*rii 18

该问题与新的 Protobuf (3.23.X) 库有关。如果您想修复当前版本的 Firebase 而不升级到最新版本,您可以在 Podfile 中固定“Protobuf”的先前工作版本:

...
target 'YourTarget' do
  project 'YourProject'
  ...
  pod 'Protobuf', '= 3.22.1' # Pinned version for Firebase Messaging
end
Run Code Online (Sandbox Code Playgroud)

然后删除 Podfile.lock 并运行pod install


小智 5

它可能与 Protobuf 不兼容。也许你可以尝试在 Podfile.lock 中指定另一个版本,例如

- Protobuf (3.21.12)
Run Code Online (Sandbox Code Playgroud)


小智 1

我发现类似 https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/OSAtomicCompareAndSwapPtrBarrier.3.html

这是一个非常糟糕的主意,但实际上它有效

您可以导入出现此错误的文件并继续工作

#include <libkern/OSAtomic.h>
Run Code Online (Sandbox Code Playgroud)