Tam*_*ane 6 macos xcode objective-c ios swift
我已经创建了基于swift的Cocoa Touch Framework项目,TestLib然后我添加了Cocoa Framework名为的新目标TestLibOSX.当我在iOS应用程序上使用该框架时,似乎没有任何问题,但是当我创建OSX控制台应用程序时,XCode抱怨它无法找到TestLibOSX模块.我错过了什么吗?
PS 这不一样:)
编辑:似乎这一定是可能的,因为我可以看到Lister以这种方式实现.
好吧,通用框架确实很痛苦。不仅适用于 iOS 和 OSX,而且仅适用于 iOS 内部,因为您需要 2 个框架:一个用于模拟器,一个用于设备。处理 iOS 的方式是使用“聚合”目标。我相信可以利用相同的途径来集成 OS X 目标。
当您构建框架时,您会得到一个 .framework(乐高积木)文件夹。在那里,有两件非常重要的事情:
在这两个地方,您都必须实现支持您想要支持的所有架构。如果您单独构建框架并希望将它们融合在一起,则必须执行以下操作:
实际上,这很混乱,所以这就是我所做的!
该脚本相当简单,只要稍微涉猎一下,我相信可以对其进行调整以添加 OSX 支持。我希望这能为您指明正确的方向:)
脚本内容:
#!/bin/sh
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
# Step 1. Build Device and Simulator versions
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
# Step 2. Copy the framework structure (from iphoneos build) to the universal folder
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"
# Step 3. Copy Swift modules (from iphonesimulator build) to the copied framework directory
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/." "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"
# Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory
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 5. Convenience step to copy the framework to the project's directory
cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}"
# Step 6. Convenience step to open the project's directory in Finder
open "${PROJECT_DIR}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1715 次 |
| 最近记录: |