美文网首页小知识就是你ios工具大全
打包自己的framework(Xcode7&OSX10.

打包自己的framework(Xcode7&OSX10.

作者: JamesGu0116 | 来源:发表于2015-10-10 15:13 被阅读5403次

网络上好多教程都不能用了,花了一天时间自己去填坑,怒分享之。

我借鉴了好多资料,谢谢你们啦。

第一步:新建Framework项目 第二步:编写代码,构建完成项目 第三步:新建一个我们用来运行编译脚本的Target 第四步:在新建的Target里边添加一个脚本 第五步:填入脚本 第六步:运行并根据需要编译
# 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 -arch armv7 -arch armv7s -arch arm64 clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator -arch x86_64 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 "${SRCROOT}/Products/"

检测类库支持的版本(注意指向framework内部)

lipo -info ~/Documents/SFMapKit/Products/SFMapKit.framework/SFMapKit

相关文章

网友评论

  • zedxpp:xcode9.2按文中步骤来, 打包的framework是空壳.里面只有info文件, 其他的文件都没有
  • f645acd72ebf:那段代码出来一大堆xcodebuild进程一直在生产framework,产生递归调用了怎么办
    JamesGu0116:@从初春到盛夏 你确定你是在新建target里添加的脚本吗
  • 机器猫的百宝袋:1.楼主,知道封装framework时,涉及到三方的framework如何设置(配置路径)
    2.问题1的最终形式为百度SDK导入工程时,会提示开发者必须导入的framework
    JamesGu0116:@机器猫的百宝袋 放进去但是不编译进framework
    机器猫的百宝袋:@一个熟悉而又陌生的人 我知道会有这个问题,现在情况是:我自己封装的库用到了百度sdk的相关方法。我想把百度sdk放到主工程中,自己封装的framework中不放百度的sdk。但是主工程中编译时回报自己封装库中导入baidu的sdk的头文件找不到。
    网上说要在自己封装库的build Setting 中设置 header search path什么的,如何设置不太清楚
    JamesGu0116:@机器猫的百宝袋 我没试过,但是千万不要这么做,封装第三方库就是作死行为,万一用到你类库的人也用了百度,就很尴尬了,封装第三方类库是一个很菜的表现
  • 温特儿:按照楼主的做法,我发现,制作出来的framework,在项目打包上架的时候,会出现提交审核报错 ERROR ITMS-90087,按照Apple的说法,SDK是不能包含x86_64, i386 架构,楼主这个要怎么解决?
    希望楼主看到可以回复下!
    JamesGu0116:@winterSeven 脚本就是编译了俩库,然后融合了,你删一个就好了
    温特儿:@一个熟悉而又陌生的人 我就是直接复制你的脚本,可能还有其他我没注意到的,希望楼主能指出来。
    JamesGu0116:@winterSeven 仔细读读脚本,把脚本改一下就好了
  • Sunday_gao:不明白脚本那一块是为什么,请指点一下
    Sunday_gao:@一个熟悉而又陌生的人 如果选择 generic iOS device的话 就不用再合并了
    JamesGu0116:@coder_Alex 就是编译俩类库,然后把俩类库合成一个类库
  • e18fe4955e6e:你有qq吗 我加你下。我的415478506
  • e18fe4955e6e:使用真机,导入头文件就编译错误。
    使用模拟器。image not found
    BetrayalPromise:@忘穿秋水 这个问题是因为 你的工程没有允许你的framework loadModule
  • Supersweet007:我改成静态包,不影响上架吧?
  • 卓无尘:可以留下qq讨论一下吗? 对动态库生成这点还是有疑问。
  • da27c260cc85:这东西添加到项目里,苹果允许上架么?
    卓无尘:@Vassily 今天查了下资料,在创建动态库的时候有个Mach-O在build setting里的设置,可以调整成Static Library,不知道这样生成的是不是静态库,会不会被拒,可以讨论下么?
    da27c260cc85:@一个熟悉而又陌生的人 动态库和静态库的区分
    JamesGu0116:@Vassily 这就是你打包的类库,有啥不允许😦
  • ddaa8dae50b0:为什么要新建Target ? 直接在framework原工程上编译 脚本里面写lipo就行了吧
    ddaa8dae50b0:你都新建了一个framework类型的工程了, 又在工程下建一个target来编framework.

    你想表达的是在原来可以编译运行的 非framework 工程下再建一个target专门编译framework吧? 关注的点不一样
    JamesGu0116:@Ian_He 当然利用主Target编译出来的类库不是不可以,但是主Target是根据设备去编译的,你不知道编译出来的是虚拟机还是真机,这也就不细说了,也是可以通过脚本判断出来的,但是如果编译出来是真机的,没有想要的版本,比如:armv7 armv7s arm64中的一个,你还得改主Target,总之要改的地方不少,况且代码都讲究低耦合,不要有侵入性,项目也是如此,添加Target能在不改变原本项目的前提下,减少一次编译时间,何乐而不为
    JamesGu0116:@Ian_He 仔细读读脚本,xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos -arch armv7 -arch armv7s -arch arm64 clean build
    xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator -arch x86_64 clean build,这两句会build两个类库,要是在主Target上去运行脚本,主Target会先build一遍,然后再build两个类库,何必呢,多build一个不浪费时间吗?
  • 5778f39898f0:喜欢不够,还得收藏。
  • 程序猿小武:您好,我想问下,关于资源文件和XIB的问题,应该怎么处理呢
    JamesGu0116:@潇武子 包含头文件有什么问题,我这个是可以直接打出包来的呀
    程序猿小武:@JamesGu 可是我还没到那步呢- -,http://www.jianshu.com/p/3bc8ea7b88ce这是另一篇针对里面含有xib,image问题的一个帖子,我现在的问题是包含头文件都有问题,都该哭了,我在搞搞 :confounded:
    JamesGu0116:@潇武子 试试建个bundle,我也没试过,大概就是这个样子的
  • Brant白叔:动态库要iOS8才能上架,这样兼容不到7
    2068e5e51f60:@好多BUG 动态库只能用在app extension里面,直接在应用使用动态库肯定被拒
  • 377841418262:支持一下。
  • 煜寒了:从群里来到群里去
    JamesGu0116:@煜寒了 真给面子

本文标题:打包自己的framework(Xcode7&OSX10.

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