打包静态库

!/bin/sh

Script.sh

VideoPlayerLib

Created by lzz on 2019/4/10.

Copyright © 2019 lzz. All rights reserved.

注意:脚本目录和xxxx.xcodeproj要在同一个目录,如果放到其他目录,请自行修改脚本。

要build的target名

target_Name=XCReporter

echo "target_Name=${target_Name}"

工程名

project_name={project_name}"

打包模式 Debug/Release 默认是Release

development_mode=Release

当前脚本文件所在的路径 $(pwd)

SCRIPT_DIR={SCRIPT_DIR}======"

工程路径

PROJECT_DIR=${SCRIPT_DIR} 和下面写法也样

PROJECT_DIR={PROJECT_DIR}======"

build之后的文件夹路径

build_DIR={build_DIR}======"

真机build生成的.framework 文件路径

DEVICE_DIR={development_mode}-iphoneos/${project_name}.framework

真机build生成的sdk文件路径

DEVICE_DIR_A={development_mode}-iphoneos/{project_name}
echo "======真机.framework路径=${DEVICE_DIR_A}======"

模拟器build生成的sdk文件路径

SIMULATOR_DIR_A={development_mode}-iphonesimulator/{project_name}
echo "======模拟器.framework路径=${SIMULATOR_DIR_A}======"

目标文件夹路径(也就SDK的文件:.framework文件 和 bundle文件)

INSTALL_DIR={project_name}
echo "======SDK的文件夹路径=${INSTALL_DIR}======"

目标 sdk 路径

INSTALL_DIR_A={project_name}/{project_name}
echo "======目标sdk路径=${INSTALL_DIR}======"

判断build文件夹是否存在,存在则删除

rm -rf 命令的功能:删除一个目录中的一个或多个文件或目录

if [ -d "{build_DIR}"
fi

判断目标文件夹是否存在,存在则删除该文件夹

if [ -d "{INSTALL_DIR}"
fi

创建目标文件夹

mkdir -p "${INSTALL_DIR}"

echo "======盒子已经准备好了,开始生产.a 并合成装到盒子里吧======"

build之前clean一下

xcodebuild -target {development_mode} -sdk iphonesimulator clean

xcodebuild -target {development_mode} -sdk iphoneos clean

模拟器build

xcodebuild -target {development_mode} -sdk iphonesimulator

真机build

xcodebuild -target {development_mode} -sdk iphoneos

1.复制真机的${project_name}.framework到目标文件夹

使用-R参数可实现递归功能,即所有子目录中的文件与目录均拷贝

cp -R "{INSTALL_DIR}"

2.删除真机 INSTALL_DIR 中原来的XCReporter 文件

判断目标文件夹是否存在,存在则删除该文件夹

if [ -f "{INSTALL_DIR_A}"
fi

XCode12编译的模拟器静态库也支持了arm64,导致出现真机库和模拟器库不能合并的问题。移除模拟器编译中的arm64 架构

lipo "{SIMULATOR_DIR_A}"

合成模拟器和真机 XCReporter 文件替换目标文件夹中${project_name}.framework 下的 真机 XCReporter 文件

lipo -create "{SIMULATOR_DIR_A}" -output "${INSTALL_DIR_A}"

echo "======合成结束======"

-f 判断文件是否存在

if [ -f "{INSTALL_DIR_A}"
fi

打开目标文件夹

open "${INSTALL_DIR}"

你可能感兴趣的:(打包静态库)