iOS控件

iOS保姆式教学编写framework和Bundle

2023-09-04  本文已影响0人  简单就是真

一、最近在学习如何编写SDK,下面介绍一下如何生成framework和Bundle
1.创建framework项目 ,File-->ios -->Framework


image.png

2.需要把要编译的源码移植到项目中,一开始项目会默认生成xxx.h文件,如果原来的源代码中没有xx.h文件,就可以使用的那个当前项目xx.h作为framework的头文件,如果有的话,可以直接删除


image.png
3.如果发现项目没有Products这个文件的话,到项目所在文件,右键xcodeproj显示包内容,搜索productRefGroup,把mainGroup的值复制给productRefGroup,关闭,xcode会自动刷新出来
image.png
4.修改配置参数
image.png

5.项目中如果用到了pch文件需要设置pch文件路径


image.png
6.设置开放的头文件,把开放文件从project移动到public
image.png
7.清空Bundle资源文件
image.png
8.创建Bundle文件
image.png
image.png
9.配置Bundle
image.png
image.png

10.添加图片和xib的资源


image.png
11.准备工作做完后,就可以编译Bundle了,command + B 编译完后,就可以直接移植到需要的宿主APP了
image.png
12.整合真机和模拟器framework,创建整合项目Aggregate
image.png
13.添加脚本
image.png
下面是脚本

!/bin/sh

要build的target名

TARGET_NAME={PROJECT_NAME} if [[1 ]]
then
TARGET_NAME=1 fi UNIVERSAL_OUTPUT_FOLDER="{SRCROOT}/${PROJECT_NAME}_Products/"

创建输出目录,并删除之前的framework文件

mkdir -p "{UNIVERSAL_OUTPUT_FOLDER}" rm -rf "{UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"

分别编译模拟器和真机的Framework

xcodebuild -target "{TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration{CONFIGURATION} -sdk iphoneos BUILD_DIR="{BUILD_DIR}" BUILD_ROOT="{BUILD_ROOT}" clean build
xcodebuild -target "{TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration{CONFIGURATION} -sdk iphonesimulator BUILD_DIR="{BUILD_DIR}" BUILD_ROOT="{BUILD_ROOT}" clean build

拷贝framework到univer目录

cp -R "{BUILD_DIR}/{CONFIGURATION}-iphonesimulator/{TARGET_NAME}.framework" "{UNIVERSAL_OUTPUT_FOLDER}"

合并framework,输出最终的framework到build目录

lipo -create -output "{UNIVERSAL_OUTPUT_FOLDER}/{TARGET_NAME}.framework/{TARGET_NAME}" "{BUILD_DIR}/{CONFIGURATION}-iphonesimulator/{TARGET_NAME}.framework/{TARGET_NAME}" "{BUILD_DIR}/{CONFIGURATION}-iphoneos/{TARGET_NAME}.framework/${TARGET_NAME}"

删除编译之后生成的无关的配置文件

dir_path="{UNIVERSAL_OUTPUT_FOLDER}/{TARGET_NAME}.framework/"
for file in ls dir_path do if [[{file} =~ ".xcconfig" ]]
then
rm -f "{dir_path}/{file}"
fi
done

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

if [ -d "{SRCROOT}/build" ] then rm -rf "{SRCROOT}/build"
fi

rm -rf "{BUILD_DIR}/{CONFIGURATION}-iphonesimulator" "{BUILD_DIR}/{CONFIGURATION}-iphoneos"

打开合并后的文件夹

open "${UNIVERSAL_OUTPUT_FOLDER}"
把以上脚本直接复制就可以
14.分别编译模拟器和真机环境下的frmaework


image.png
image.png

15.最后编译整合项目,command+b 编译好后,会直接打开文件,这是最终的framework


image.png

二、集成Framework
1.导入framework和Bundle文件


image.png

2.添加所需要的库


image.png

三、处理集成framework后报错问题:
1.源码中包含三方包,添加-lstdc++,出现报错信息


image.png
  1. Other Linker 添加 $(OTHER_LDFLAGS) -ObjC 解决selector not recognized 运行报错


    image.png

3.importFramework


image.png

4.编译。运行,自此framework集成全部完成,这个过程是痛苦的,也是查找了很多的资料,解决了一个有一个问题,也希望能帮助到需要帮助的人

上一篇下一篇

猜你喜欢

热点阅读