iOS 制作Framwork以及我所遇到的坑

前景

  • 心血来潮觉得自己也要有一个SDK了,于是乎就想起来要制作一个Framwork,为什么不做.a文件呢?因为.a文件还需要自己引入头文件配合使用,这个对于我这个懒人是不能忍受的。
  • 在制作的过程中遇到很多坑,也在网上查阅了很多资料,于是乎就想把其记录下来。

<br />

正文

  • 1.0 创建工程
创建工程
  • 1.1 然后就是输入SDK名称
输入SDK名称

<br />

  • 2.0 配置SDK支持的最低版本
版本信息
  • 2.1 其它配置信息
编译信息
link 信息
  • 2.2 支持bitcode
第一步
第二步
  • 3.0 然后就是自己添加一些类文件进去
Class

这里我就随便添加几个方法进去,提供外界调用。

<br />

  • 3.1 对外公开的文件如何显示
头文件公开

<br />

  • 3.2 导入头文件到.h文件中
.h文件的使用

<br />

  • 3.3 pch文件的使用 如果没有这个需求请忽略3.3
PCH创建
PCH文件引用

<br />

  • 4.0 合包
- 如果不进行合包操作,真机包只能再真机上面运行,模拟器的包只能在模拟器上面运行。

合包操作大概分为两种:手动、脚本。
手动就不说了,其实脚本也是手动,只不过不用自己敲

<br />

  • 4.1 添加脚本


    创建一个脚本
添加脚本代码

脚本代码如下,如果第一次编辑,会报错,报错的原因是找不到另外一个framework文件,在真机/模拟器编译一次就好了

模拟器编译一次、真机编译一次,不分顺序。

#需要注意的是,如果你的Framwork与你的工程名不一致,${PROJECT_NAME} 需要自改为你的framwork名称
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

<br />

  • 5.0 找到framework
显示
模拟器、真机区分

<br />

  • 6.0 导入工程测试
Add target
创建一个single View Application
  • 6.1 导入framework
导入
导入SDK
  • 6.3 使用
使用SDK

总结:制作framework就经历了上面的这些步骤

<br />

篇外:

  • Archive 打包失败
这个错误

要把framework放到与工程目录同级文件夹下,不要放入工程文件夹中。

错误

<br />
<br />

  • 找不到方法报错
找不到实现方法

两种情况,要么你没有实现.m文件,要么你使用了分类,如果你使用了分类,需要添加-ObjC(一般这个就足够了,如果还是不行,那就试试 -all_load 、 -force_load)

  • 万恶的Linker错误
错误

引起这个的方式有很多,我这里遇到的是:bitcode所引起的,如果你的SDK不支持bitcode 那么你的项目也不能开启bitcode,否则就会出现这样子的错误

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容