方案
我的项目(iOS / watchOS / tvOS共享的代码库)具有ENABLE_BITCODE = YES
的构建设置,并利用了尚未支持bitcode的基础库,尽管引用了App Thinning中的Apple文档
Bitcode是默认设置,但是可选。对于watchOS和tvOS应用程序, bitcode是必需的。如果您提供bitcode,所有应用程序和框架 在应用程序包中(项目中的所有目标)需要包含bitcode
我目前正在将这些基础图书馆与迦太基合并。
问题
为了有一个干净的构建过程,我尝试向各个所有者提交一些拉取请求以启用bitcode,但是由于其代码库的复杂性,这些代码库适用于多个操作系统/体系结构,我的拉取请求仍处于待定状态:因此,为了能够构建我自己的项目,我仍然需要手动更改其构建设置。
问题
如何将Carthage进程短路以将特定构建设置(在本例中为ENABLE_BITCODE = YES
)注入相关库?
答案 0 :(得分:3)
我找到了一个解决方案,通过使shell脚本能够擦除bitcode的禁用,以防有人面对或好奇解决类似的问题,脚本是这样的:
carthage update --platform ios
for D in ./Carthage/Checkouts/*; do
if [ -d "${D}" ]; then
find $D -type d -name \*.xcodeproj -print0 |
while IFS= read -r -d $'\0' folder; do
sed -i '' 's/ENABLE_BITCODE = NO;//g' $folder/project.pbxproj
done
fi
done
carthage build --platform ios
基本上脚本的机制是:
pbxproj
生活在xcodeproj
内并切断字符串ENABLE_BITCODE = NO
framework
答案 1 :(得分:1)
要添加到Andrea的答案中,请确保您使用--no-use-binaries
进行迦太基构建,因为该依赖项可能在其已发布的框架中禁用了位码,而无需使用--no-use-binaries
,就可以使用它。