iOS动态库主要点

  1. Build Active Architecture Only 选择NO,表示支持各种设备
这个设置决定 Xcode 是否只为当前活动的设备架构编译代码,还是为所有支持的架构编译代码。

设置为 YES:只编译当前连接设备或模拟器所需的架构(如 iPhone 真机使用 arm64,模拟器使用 x86_64)
设置为 NO:编译所有支持的架构(如 armv7, armv7s, arm64, x86_64 等)
  1. 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编译时报错
  1. 打开project.pbxproj 搜索productRefGroup,将productRefGroup上面一行的mainGroup的值,复制给productRefGroup,再保存一下,Xcode就自动刷新出来了。

  2. 合并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

  1. 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容