- Build Active Architecture Only 选择NO,表示支持各种设备
这个设置决定 Xcode 是否只为当前活动的设备架构编译代码,还是为所有支持的架构编译代码。
设置为 YES:只编译当前连接设备或模拟器所需的架构(如 iPhone 真机使用 arm64,模拟器使用 x86_64)
设置为 NO:编译所有支持的架构(如 armv7, armv7s, arm64, x86_64 等)
- Build Settings-> sandbox, User Script Sandboxing 设置为NO
error: Sandbox: bash(52747) deny(1) file-read-data /Users/admin/kzmarkdown/KZGfmCommonMark/xcodebuild.sh (in target 'KZGfmCommonMark' from project 'KZGfmCommonMark')
sh: xcodebuild.sh: Operation not permitted 在Run Script 里面添加 xcodebuild.sh编译时报错
打开project.pbxproj 搜索productRefGroup,将productRefGroup上面一行的mainGroup的值,复制给productRefGroup,再保存一下,Xcode就自动刷新出来了。
合并framework脚本
给脚本赋予权限
chmod +x xcodebuild.sh
#!/bin/sh
BIN_DIR="bin"
if [ ! -d "$BIN_DIR" ]; then
mkdir -p "$BIN_DIR"
fi
BIN_DIR_TMP="bin_tmp"
if [ ! -d "$BIN_DIR_TMP" ]; then
mkdir -p "$BIN_DIR_TMP"
fi
cp -af ${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.framework/ ${BIN_DIR_TMP}/${PLATFORM_NAME}-${TARGET_NAME}.framework
cp -af ${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.framework/ ${BIN_DIR}/${TARGET_NAME}.framework
iphoneos_path=$BIN_DIR_TMP/iphoneos-${TARGET_NAME}.framework/${TARGET_NAME}
iphonesimulator_path=$BIN_DIR_TMP/iphonesimulator-${TARGET_NAME}.framework/${TARGET_NAME}
if [ -e "$iphoneos_path" ]&&[ -e "$iphonesimulator_path" ]; then
lipo -create $BIN_DIR_TMP/*-${TARGET_NAME}.framework/${TARGET_NAME} -output ${BIN_DIR}/${TARGET_NAME}.framework/${TARGET_NAME}
open $BIN_DIR
fi
- pod 发版时需要设置的属性
# Pod库的构建设置排除arm64架构模拟器
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
# 主工程的构建设置排除arm64架构模拟器
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
6.代码覆盖率
ENABLE_CODE_COVERAGE = NO;
GCC_GENERATE_TEST_COVERAGE_FILES = NO;
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
image.png
image.png