iOS制作.a静态库
1. 创建.a工程
2. 将 Build Settings -> Build Active Architectrue Only 设置为NO
3. 修改支持的版本信息 Build Setting -> iOS Deployment Target 设置为 iOS10.0
4. 如果用到了xib,或者资源文件,将bundle拖入工程中。或者通过 Build Phases -> Dependencies 添加依赖的形式
5. Build Phases -> Copy Files 中,拖入要暴露的头文件
6. 相关的shell脚本
#!bin/sh
# 目标名称
# target_name=FFTempLib
read -p "请输入要制作的lib库名称: " target_name
# #workspace 如果使用了cocoapods 要用 workspace_name
# workspace_name=FFTempLib.xcworkspace
#scheme
# scheme_name=FFTempLib
# 项目所在路径
project_dir=$(pwd)
# 构建模式 Release/Debug
mode=Release
build_dir=${project_dir}/build
#合并之后的目标路径
product_dir=${project_dir}/library
#真机生成的静态库的路径
iphoneos_dir=${build_dir}/${mode}-iphoneos
#真机生产的头文件的地址
iphoneos_header_dir=${iphoneos_dir}/include/${target_name}
#真机生成的静态库的地址
iphoneos_lib_dir=${iphoneos_dir}/lib${target_name}.a
#模拟器生成的静态库的路径
simulator_dir=${build_dir}/${mode}-iphonesimulator
#模拟器生成的头文件的地址
simulator_header_dir=${simulator_dir}/include/${target_name}
##模拟器生成的静态库的地址
simulator_lib_dir=${simulator_dir}/lib${target_name}.a
rm -rf "${build_dir}"
if [[ -d "${product_dir}" ]]; then
rm -rf "${product_dir}"
fi
xcodebuild -target "${target_name}" -scheme "${target_name}" -configuration "${mode}" -sdk iphoneos15.2 clean build BUILD_DIR="${build_dir}" BUILD_ROOT="${build_dir}" VALID_ARCHS="arm64 armv7"
xcodebuild -target "${target_name}" -scheme "${target_name}" -configuration "${mode}" -sdk iphonesimulator15.2 clean build BUILD_DIR="${build_dir}" BUILD_ROOT="${build_dir}" VALID_ARCHS="i386 x86_64"
# 合并模拟器的架构和真机架构
if [[ -f "${iphoneos_lib_dir}" ]] && [[ -f "${simulator_lib_dir}" ]] ; then
# 如果不存在 就生成目录
if [[ ! -d "${product_dir}" ]]; then
mkdir -p "${product_dir}"
fi
lipo -create "${simulator_lib_dir}" "${iphoneos_lib_dir}" -output "${iphoneos_lib_dir}"
# 将头文件copy到Header文件夹下
cp -r "${iphoneos_header_dir}" "${iphoneos_dir}/Headers"
# 移除默认头文件
rm -rf "${iphoneos_dir}/include"
# 将需要的文件copy
cp -r "${iphoneos_dir}/" "${product_dir}"
if [[ -d "${product_dir}" ]]; then
# 打开目录
open "${product_dir}"
fi
else
echo "有错误出现,没有生成真机或模拟器的静态库"
exit 1
fi
if [[ -d "${product_dir}" ]]; then
open "${product_dir}"
fi
7. 实例地址