错误:升级到xcode 11.1和macOS 10.15 Catalina后,未知类型名称'tls_protocol_version_t'

时间:2019-10-09 12:24:06

标签: xcode macos xcode11 macos-catalina

将我的macOS更新为10.15 Catalina,还将xcode更新为11.1。现在在构建代码时,出现错误“错误:未知类型名称'tls_protocol_version_t'”。我清理了构建文件夹,重置了xcode,清除了xcode缓存。似乎没有任何办法可以解决问题。

完整的错误日志如下-

在/ My Repo / MyApp / trunk / App / App-Prefix.pch:8中包含的文件中:

在/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h中包含的文件中: 12:

在/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h中包含的文件中: 128:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLSession.h:744:11:错误:类型名称未知'tls_protocol_version_t'

@property tls_protocol_version_t TLSMinimumSupportedProtocolVersion API_AVAILABLE(macos(10.15),ios(13.0),watchos(6.0),tvos(13.0));

3 个答案:

答案 0 :(得分:0)

在MacOS 10.15.3上使用XCode 11.3.1时,我遇到了同样的问题:相当老的Objective-C应用程序不再生成该错误

Unknown type name `tls_protocol_version_t`

给。它使用一个预编译的头文件,我尝试按照建议的方式手动添加typedef定义,但这只会导致更多错误。

我最终直接在其中添加了typedef

NSURLSession.h

即以root用户身份编辑

 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLSession.h

并在

之后添加以下typedef
NSURLSessionTaskState

typedef:

typedef CF_ENUM(uint16_t, tls_protocol_version_t) {
     tls_protocol_version_TLSv10 CF_SWIFT_NAME(TLSv10) = 0x0301,
     tls_protocol_version_TLSv11 CF_SWIFT_NAME(TLSv11) = 0x0302,
     tls_protocol_version_TLSv12 CF_SWIFT_NAME(TLSv12) = 0x0303,
     tls_protocol_version_TLSv13 CF_SWIFT_NAME(TLSv13) = 0x0304,
     tls_protocol_version_DTLSv10 CF_SWIFT_NAME(DTLSv10) = 0xfeff,
     tls_protocol_version_DTLSv12 CF_SWIFT_NAME(DTLSv12) = 0xfefd,
 };

答案 1 :(得分:0)

在一个相当老的项目和Xcode 11中,我也遇到了同样的问题。从另一个答案中添加tls_protocol_version_t的typedef确实可行,但是显然不是理想的解决方案。

In注意到我在项目中有一个Security.framework的副本,它不是“相对于SDK”而是“相对于组”(与SystemConfiguration.framework/相同),所以我删除了这两个副本并重新包含在目标的“常规”>“框架”设置。那还不够。我注意到Foundation不存在,所以我也添加了它。做到了。结论:检查您的框架!

答案 2 :(得分:-1)

不确定这是否正确,但是我在App-Prefix.pch中添加了以下代码,它解决了该问题。

typedef enum tls_protocol_version_t  {
  tls_protocol_version_TLSv10 = 0x0301,
  tls_protocol_version_TLSv11 = 0x0302,
  tls_protocol_version_TLSv12 = 0x0303,
  tls_protocol_version_TLSv13 = 0x0304,
  tls_protocol_version_DTLSv10 = 0xfeff,
  tls_protocol_version_DTLSv12 = 0xfefd
 } tls_protocol_version_t;