美文网首页
打包静态库

打包静态库

作者: 阿泽V5 | 来源:发表于2020-12-02 17:15 被阅读0次

!/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=target_Name echo "project_name={project_name}"

打包模式 Debug/Release 默认是Release

development_mode=Release

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

SCRIPT_DIR=(pwd) echo "======脚本路径={SCRIPT_DIR}======"

工程路径

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

PROJECT_DIR=SCRIPT_DIR echo "======工程路径={PROJECT_DIR}======"

build之后的文件夹路径

build_DIR=SCRIPT_DIR/Build echo "======Build路径={build_DIR}======"

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

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

真机build生成的sdk文件路径

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

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

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

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

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

目标 sdk 路径

INSTALL_DIR_A={build_DIR}/Products/{project_name}/{project_name}.framework/{project_name}
echo "======目标sdk路径=${INSTALL_DIR}======"

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

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

if [ -d "{build_DIR}" ] then rm -rf "{build_DIR}"
fi

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

if [ -d "{INSTALL_DIR}" ] then rm -rf "{INSTALL_DIR}"
fi

创建目标文件夹

mkdir -p "${INSTALL_DIR}"

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

build之前clean一下

xcodebuild -target {target_Name} -configuration{development_mode} -sdk iphonesimulator clean

xcodebuild -target {target_Name} -configuration{development_mode} -sdk iphoneos clean

模拟器build

xcodebuild -target {target_Name} -configuration{development_mode} -sdk iphonesimulator

真机build

xcodebuild -target {target_Name} -configuration{development_mode} -sdk iphoneos

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

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

cp -R "{DEVICE_DIR}" "{INSTALL_DIR}"

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

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

if [ -f "{INSTALL_DIR_A}" ] then rm -f "{INSTALL_DIR_A}"
fi

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

lipo "{SIMULATOR_DIR_A}" -remove arm64 -output "{SIMULATOR_DIR_A}"

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

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

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

-f 判断文件是否存在

if [ -f "{INSTALL_DIR_A}" ] then echo "======验证合成包是否成功======" lipo -info "{INSTALL_DIR_A}"
fi

打开目标文件夹

open "${INSTALL_DIR}"

相关文章

  • iOS静态库与动态库的区别与打包

    iOS静态库与动态库的区别与打包iOS静态库与动态库的区别与打包

  • iOS打包.a静态库步骤

    打包静态库流程 1.创建静态库 2.实现类 3.公开.h文件 4.打包模拟器静态库 5.打包真机静态库 6.合并模...

  • 目录一、库二、静态库、动态库、Framework三、打包静态库 1、.a静态库和.framework静态库的区别 ...

  • iOS 打包动态库和静态库

    打包注意,真机下打包的静态库只能在真机下运行,模拟器下打包的静态库只能在模拟器下运行 1.打包.a静态库 在.h和...

  • 使用cocoapods打包静态库(依赖私有库,开源库,私有库又

    之前整理过一种打包静态库的方法: 打包静态库(源码中包含其他静态库以及开源库)。不过这种方式的缺点很明显:1. 需...

  • Code signing "QuCore-ThirdParty.

    检查QuCore-ThirdParty.framework为debug版本静态库,尝试使用release版本静态库打包

  • 静态库制作总结

    静态库打包的完整正确步骤确定是静态库.a的肯定是静态库.framework的需要设置链接类型:target -> ...

  • cocoapods打包静态库,引用了AFNetworking等三

    接上篇cocoapods打包静态库(静态库引用.a,.Framework, .bundle文件,本文讲解再引入AF...

  • 打包静态库.a

    以xcode9.1为例,创建新的静态库工程,如图 设置需要暴露的头文件添加Headers, 步骤为:TARGET-...

  • 静态库打包

    为什么把代码打包成库? 不想让别人看到.m文件 直接Link编译好的二进制代码,节省编译时间 方便代码的管理 Li...

网友评论

      本文标题:打包静态库

      本文链接:https://www.haomeiwen.com/subject/uxjuwktx.html