关于xcode7生成的framework静态库文件,模拟器和真机framwork如何合并

原创 2016年08月29日 11:09:02

关于xcode7生成的framework静态库文件,模拟器和真机framwork如何合并

前置部分条件

修改 Build Setting 的 属性 Mach-o Type = Static Library,不然打包之后的 Framework运行会崩溃
edit Scheme 中,选中run - Build Configuration - release
选中 Build Phases,再点击左边的+,新增一个 New Run Script Phase,然后在下面会多出一栏 Run Script,编辑黑色区域的内容
还有,在 Build Phases -> Headers,编辑头文件,把所有的文件,放入 Public 里,如果放入 project或者private编译出来的包显示无法找到该文件
如果你在静态库中加入了 Category 分类时,你需要在你需要打包的项目里, Build Setting -> Other linker Flags里,添加一句, -ObjC,然后当你把 framework 引入其他项目的时候,需要在那个被引入项目里,同样是 Build Setting -> Other linker Flags 添加 -all_load,引入静态库中的 分类,不然无法找到

if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework

DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework

SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework


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

mkdir -p "${INSTALL_DIR}"

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"

lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"

#open "${DEVICE_DIR}"
#open "${SRCROOT}/Products"
fi

把以上内容复制进去,以前的打包,不是分为 真机模式和模拟器模式吗?分别用这两种模式运行一次键盘按钮 command + B 编译,(在第一次运行的时候,会报错,比如,先编译模拟器,显示的错误为:cp: /Users/rogueandy/Library/Developer/Xcode/DerivedData/RgFramework-ajtxefrptmusfqfucljaacrjdbpf/Build/Products/Release-iphoneos/RgFramework.framework/: No such file or directory,因为这是编译的模拟器,所以没有编译真机,你去看生成的framwork,它是存在的Release-iphonesimulator模拟器的framwork,因为模拟器和真机需要分开来编译生成,所以,报错很正常,不管,继续选择编译真机,就是用你的手机来编译,之后就肯定会显示 编译成功,此时,你看编译文件下下,是否同时存在了Release-iphoneosRelease-iphonesimulator
此时,你的framework合并之后的文件,会在项目根目录里,有一个 Products 文件夹下,里面的那个framework 文件就是你真正合并之后的文件,拖入其他项目即可使用)。

iOS 关于真机和模拟器framework合并

有时候在项目中,模拟器和真机上运行一个项目的时候,因为某些静态库的原因,可能某一个方面不能运行,大部分情况就是模拟器上不可以但是在真机上可以。接下来要做的就是把某一个工程生成的静态库进行打包以后生成的...
  • koocui
  • koocui
  • 2017年07月06日 11:56
  • 241

合并模拟器Framework与真机Framework

如果写了一个Framework,根据Build时选择的机器类型,会分为模拟器Framework和真机Framework,两者是不能混用的。 此时可以通过配置一个Run Script,在Scrip...
  • SHTLoveXX
  • SHTLoveXX
  • 2016年05月30日 16:12
  • 1612

iOS开发之制作framework并将模拟器Framework与真机Framework合并

什么是framework Framework是资源的集合,将静态库(iOS8以后可以是动态库)和其头文件包含到一个结构中,让Xcode可以方便地把它纳入到你的项目中。 分为真机—Debug(调...
  • james_1010
  • james_1010
  • 2016年11月28日 10:54
  • 1663

ios framework 真机和模拟器合并

最近百度地图的SDK更新了,为了兼容IOS 9 ,不得不做更新。 下载SDK后发现,原来的静态库.a木有了。现在是framework,而且做了真机和模拟器两个,显然需要我们将两个framework合...
  • HeroRazor
  • HeroRazor
  • 2016年07月18日 16:17
  • 874

用lipo合并模拟器Framework与真机Framework【转载】

如果写了一个Framework,根据Build时选择的机器类型,会分为模拟器Framework和真机Framework,两者是不能混用的。 此时可以通过配置一个Run Script,在Scrip...
  • gavin8803
  • gavin8803
  • 2016年08月03日 14:57
  • 437

通用静态库的生成(模拟器和真机通用)

如果我们打包静态库肯定会有这样的需求:就是你打包一个库既能在真机上使用,也可以在模拟器上使用,怎么来打包生成一个通用的静态库呢? 其实也不难,首先,你得先通过真机打包生成真机可以用的静态库(这个库可以...
  • baidu_31683691
  • baidu_31683691
  • 2016年10月06日 12:14
  • 663

关于真机模拟器framework和.a合并为通用的方法

最近在做项目的时候,因为自己写的framework在真机调试的时候会打真机包,不过有的时候会遇到测试机子不够用的情况,所以就在想可不可以打个真机模拟器通用的包。因为在以前我在上家公司做一款教育产品的时...
  • dark_baron
  • dark_baron
  • 2016年05月24日 19:43
  • 514

Mac下合并模拟器和真机.a文件

使用命令 lipo simulator.a device.a ouput both.a 其中 simulator.a: 生成的模拟器
  • Hello_Hwc
  • Hello_Hwc
  • 2014年09月27日 10:49
  • 1623

iOS framework 合并真机和模拟器run Scripte

脚本会根据debug和release模式,来添加响应的后缀来区分。 set -e if [ "${ACTION}" = "build" ] then     INSTALL_...
  • shenqicc
  • shenqicc
  • 2015年11月25日 12:56
  • 878

ios 合并真机和模拟器的.a文件(lipo)

lipo -create SQY/iOS/iphoneos/libGamePlusAPI.a SQY/iOS/iphonesimulator/libGamePlusAPI.a -output SQY...
  • cl61917380
  • cl61917380
  • 2015年03月19日 15:52
  • 1464
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于xcode7生成的framework静态库文件,模拟器和真机framwork如何合并
举报原因:
原因补充:

(最多只允许输入30个字)