iOS: 如何创建一个独立的框架
iOS: How to create an independent framework
我正在创建一个小 SDK,我想发布一个 Foo.framework。
我所做的如下:
1- 创建项目框架。
2- 添加我的代码。
3- 添加聚合器。
在聚合器构建阶段中,我添加了这个 运行 脚本
#!/bin/sh
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-通用
//确保输出目录存在
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
//Step 1. 构建设备和模拟器版本
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT ="${BUILD_ROOT}" 清理构建
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT ="${BUILD_ROOT}" 清理构建
//第二步,将框架结构(从iphoneos build)复制到universal文件夹
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"
//第3步.使用lipo创建通用二进制文件并将组合的可执行文件放在复制的框架目录中
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}- iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/ ${PROJECT_NAME}"
//Step 4. 将框架复制到项目目录的便捷步骤
cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}"
//Step 5. 在Finder中打开项目目录的便捷步骤
打开“${PROJECT_DIR}”
然后我构建聚合器并获得 Foo.framwork
我的问题是,为了能够在另一个应用程序中使用该框架,我应该:
第 1 步 - 将框架拖放到我的项目中。
步骤 2- 并将其添加到嵌入式二进制文件中。
如果我不执行第 2 步,我会收到此错误
dyld:库未加载:@rpath/Foo.framework/Foo
参考自:/private/var/mobile/Containers/Bundle/Application/00A2E4FD-23F4-43E8-AA85-505785A4FF16/foo.app/foo
原因:找不到图片
如果我只想拖到我的项目中使用框架怎么办
(换句话说,仅将其添加到 Link Binary with Library)以使其易于集成。
提前致谢。
对于所有面临此类问题的人来说,解决方案就在这里。
只需按照这些说明构建框架
我正在创建一个小 SDK,我想发布一个 Foo.framework。 我所做的如下:
1- 创建项目框架。
2- 添加我的代码。
3- 添加聚合器。
在聚合器构建阶段中,我添加了这个 运行 脚本
#!/bin/sh
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-通用
//确保输出目录存在
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
//Step 1. 构建设备和模拟器版本
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT ="${BUILD_ROOT}" 清理构建
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT ="${BUILD_ROOT}" 清理构建
//第二步,将框架结构(从iphoneos build)复制到universal文件夹
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"
//第3步.使用lipo创建通用二进制文件并将组合的可执行文件放在复制的框架目录中
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}- iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/ ${PROJECT_NAME}"
//Step 4. 将框架复制到项目目录的便捷步骤
cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}"
//Step 5. 在Finder中打开项目目录的便捷步骤
打开“${PROJECT_DIR}”
然后我构建聚合器并获得 Foo.framwork 我的问题是,为了能够在另一个应用程序中使用该框架,我应该:
第 1 步 - 将框架拖放到我的项目中。
步骤 2- 并将其添加到嵌入式二进制文件中。
如果我不执行第 2 步,我会收到此错误
dyld:库未加载:@rpath/Foo.framework/Foo
参考自:/private/var/mobile/Containers/Bundle/Application/00A2E4FD-23F4-43E8-AA85-505785A4FF16/foo.app/foo
原因:找不到图片
如果我只想拖到我的项目中使用框架怎么办
(换句话说,仅将其添加到 Link Binary with Library)以使其易于集成。
提前致谢。
对于所有面临此类问题的人来说,解决方案就在这里。 只需按照这些说明构建框架