Xcode26.4+ 适配问题

1、
OC第三方有的会报错#import <netinet6/in6.h>
因为内置的一些文件 不给暴露了(AFN、ZFPlayer、SensorsAnalyticsSDK、UleNetworkKit、UleWidget_PhotoBrowser)

可在podFile里添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
post_install do |installer|
# 修复第三方库中的 netinet6/in6.h
pods_root = installer.sandbox.root.to_s
target_import = '#import <netinet6/in6.h>'
Dir.glob(File.join(pods_root, '**', '*.{h,m,mm}'), File::FNM_EXTGLOB).each do |path|
next unless File.file?(path)
# 先快速检查目标字符串
found = false
File.foreach(path) do |line|
if line.include?(target_import)
found = true
break
end
end
next unless found
content = File.read(path)
new_content = content.gsub(
/^(\s*)#import\s*<netinet6\/in6\.h>\s*$/,
'\1// #import <netinet6/in6.h>'
)
next if new_content == content
begin
# 如果第三方文件没有写权限,增加 owner 写权限
unless File.writable?(path)
File.chmod(File.stat(path).mode | 0200, path)
end
File.write(path, new_content)
rescue
# 忽略无法修改的文件
end
end
end

2、
YYText里
Chained comparison 'X < Y < Z' does not behave the same as a mathematical expression
会导致 pod lib lint、pod repo push 失败
可以改成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[self _insideComposedCharacterSequences:line position:position block:^(CGFloat left, CGFloat right, NSUInteger prev, NSUInteger next) {
if (isVertical) {
position = fabs(left - point.y) < fabs(right - point.y) ? prev : next;
} else {
position = fabs(left - point.x) < fabs(right - point.x) ? prev : next;
}
}];

[self _insideEmoji:line position:position block:^(CGFloat left, CGFloat right, NSUInteger prev, NSUInteger next) {
if (isVertical) {
position = fabs(left - point.y) < fabs(right - point.y) ? prev : next;
} else {
position = fabs(left - point.x) < fabs(right - point.x) ? prev : next;
}
}];

或
使用xcode-26.3及以下版本
终端执行 (只影响当前终端环境)
export DEVELOPER_DIR=/Applications/Xcode-26.3.app/Contents/Developer
再去pod lib lint、pod repo push

3、Xcode27 工程里 iOS Deployment Target 需要将13.0改成15.0,PodFile里也需要修改,后续podspec里也要改成15.0
注意: ⚠️Xcode27只支持Apple Silicon架构 不支持Intel架构