合并模拟器和真机的静态库动态库aggregate
创建Aggregate的target
在Build Phases 添加Run Script,内容为
scriptFile=${SRCROOT}/universalA.sh
sh ${scriptFile}
universalA.sh放在工程根目录,内容为:
if [ "${ACTION}" = "build" ]then
echo "合并模拟器真机库"
target_Name=${PROJECT_NAME}echo "target_Name=${target_Name}"
build_DIR=${SRCROOT}/build
echo "build_DIR=${build_DIR}"
#真机build生成的头文件的文件夹路径
DEVICE_DIR_INCLUDE=${build_DIR}/Release-iphoneos/include/${PROJECT_NAME}echo "DEVICE_DIR_INCLUDE=${DEVICE_DIR_INCLUDE}"
#真机build生成的.a文件路径
DEVICE_DIR_A=${build_DIR}/Release-iphoneos/lib${PROJECT_NAME}.aecho "DEVICE_DIR_A=${DEVICE_DIR_A}"
#模拟器build生成的.a文件路径
SIMULATOR_DIR_A=${build_DIR}/Release-iphonesimulator/lib${PROJECT_NAME}.aecho "SIMULATOR_DIR_A=${SIMULATOR_DIR_A}"
#目标文件夹路径
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}echo "INSTALL_DIR=${INSTALL_DIR}"
#目标头文件文件夹路径
INSTALL_DIR_Headers=${SRCROOT}/Products/${PROJECT_NAME}/Headersecho "INSTALL_DIR_Headers=${INSTALL_DIR_Headers}"
#目标.a路径
INSTALL_DIR_A=${SRCROOT}/Products/${PROJECT_NAME}/lib${PROJECT_NAME}.aecho "INSTALL_DIR_A=${INSTALL_DIR_A}"#判断build文件夹是否存在,存在则删除
if [ -d "${build_DIR}" ]thenrm -rf "${build_DIR}"
fi#判断目标文件夹是否存在,存在则删除该文件夹
if [ -d "${INSTALL_DIR}" ]thenrm -rf "${INSTALL_DIR}"
fi#创建目标文件夹
mkdir -p "${INSTALL_DIR}"
#build之前clean一下
xcodebuild -target ${target_Name} clean
#模拟器build
echo "开始编译iphonesimulator"
xcodebuild -target ${target_Name} -configuration Release -sdk iphonesimulator
#真机build
echo "开始编译iphoneos"
xcodebuild -target ${target_Name} -configuration Release -sdk iphoneos
#复制头文件到目标文件夹
echo "拷贝头文件"
echo "头文件路劲:"${DEVICE_DIR_INCLUDE}
cp -R ${DEVICE_DIR_INCLUDE} ${INSTALL_DIR_Headers}#合成模拟器和真机.a包
echo "开始合并.a库"
lipo -create "${DEVICE_DIR_A}" "${SIMULATOR_DIR_A}" -output "${INSTALL_DIR_A}"#打开目标文件夹
open "${INSTALL_DIR}"fi
如果是framework:
内容为:
# Sets the target folders and the final framework product.
# 如果工程名称和Framework的Target名称不一样的话,要自定义FMKNAME
# 例如: FMK_NAME = "MyFramework"
FMK_NAME=${PROJECT_NAME}
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# -configuration ${CONFIGURATION}
# Clean and Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
rm -r "${WRK_DIR}"
open "${INSTALL_DIR}"
合并模拟器和真机的静态库动态库aggregate相关推荐
- 制作模拟器和真机通用静态库
通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况. 为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要. 现在有 ...
- XCode 创建:静态库 动态库 Framework
目录 使用 XCode 创建 .a 格式的静态库 使用 XCode 创建 .framework 格式的静态库 使用 XCode 创建 .dylib 格式的动态库 使用 XCode 创建 .framew ...
- Android识别模拟器,判断是模拟器还是真机
文章目录 前言 原理 禁止模拟器安装apk 代码识别 验证 最后 前言 对于android开发者来说,模拟器是开发工具,但是对用户来说,可能就是薅羊毛.找漏洞的赚钱工具. 不管是活动风控还是内容保护等 ...
- Android Screen Monitor抓取模拟器与真机界面
ASM(Android Screen Monitor)下载地址: https://code.google.com/archive/p/android-screen-monitor/ 获取ASM.jar ...
- iOS判断是模拟器还是真机
[代码]iOS判断是模拟器还是真机 #if TARGET_IPHONE_SIMULATOR//模拟器 #elif TARGET_OS_IPHONE//真机 #endif 转载于:https://www ...
- 模拟器与真机的程序差别J2ME
1. S60机器上文字需要设置如 public static final Font smallFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_P ...
- Xcode无法启动模拟器或者真机
这次遇到一个让人求生不得求死不能的事情,有个工程run后啥米都没发生,包括模拟器和真机都没有反应,我把头都快抓破了,着实的蛋疼,差点没重装xcode,最后终于在一位大神的感召下重生了,其实都是手贱的原 ...
- Appium移动端自动化测试--搭建模拟器和真机环境一
目录 模拟器--安装Android Studio及Android SDK 模拟器--更改VDM默认存储路径 真机(Android)环境设置 真机--开启开发者模式 真机-- 打开USB调试 真机连接- ...
- 移动端自动化测试appium(6)--搭建模拟器和真机环境
模拟器–安装Android Studio及Android SDK 推荐直接安装Android Studio,然后使用Android Studio安装SDK. 启动SDK Manager,安装自己所需要 ...
最新文章
- LayUI 走了,JDK17 来了
- ubuntu下php服务器搭建_Ubuntu服务器下搭建php运行环境的方法
- 【深度学习】基于PyTorch的模型训练实用教程之数据处理
- Mac 新建unix可执行文件
- php获取分辨率赋值,php如何获取客户端分辨率?实例教程
- linux上安装spark_hadoop_java_scala
- Linux-Shell基础(变量,字符串,数组)
- 数据结构 - 单链表(Linked List)实现在内存中实现数据以链表形式生成并根据序号排序
- 红橙Darren视频引申 第一次写NDK项目(Android studio 4.1.1)
- mysql数据库创建交叉表查询_sql – 我需要知道如何创建交叉表查询
- matlab imf1,NGPM_v1.4y GA多目标优化的程序 带约束 里面有教程 matlab 272万源代码下载- www.pudn.com...
- C#调用天气查询服务
- eclipse插件开发的打包
- CSS半透明磨砂效果实现
- 电磁干扰、电磁兼容性和电磁屏蔽区别及联系
- 第十一章:如何拆分项目目标?
- springboot网吧管理系统
- [*CTF2022]web题目复现及wp
- rust外服组建战队_rust怎么把人拉入队伍 | 手游网游页游攻略大全
- 启动hadoop组件时报错:(Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password))