我在Swift应用程序中导入自己的Swift Cocoa Touch Framework时遇到问题。 该框架包含一个Swift文件,头文件和Info.plist。 我在其中创建框架的项目还包含一个测试应用程序作为另一个目标(单视图应用程序)。
测试应用程序中的测试工作正常。我使用
在Swift Test App中导入了Frameworkimport MyUtilities
它有效。但是当我将.framework文件复制到另一个Projekt并将其添加到“Embedded Binaries”和“Linked Frameworks and Libraries”时,导入时会出错。
Cannot load underlying module for 'MyUtilities'
在选择我的iPhone后构建框架后,我在debug-iphoneos文件夹中使用.framework文件,并在新项目中选择我的iPhone后构建并运行我的框架。
我还尝试使用来自互联网的脚本,它应该为模拟器和设备创建一个universal.framework文件。它显示了同样的错误。
奇怪的是,我得到了上面的错误,但Xcode说Build Succeeded并且还在我的iPhone上运行应用程序和让我使用我的框架的代码......所以实际上是导入工作,但我没有得到completition,看不到我的框架的文档......可能这是Xcode的错误......
所以对我的问题:有人知道,如何解决这个问题,所以我再次看到Xcode中的代码完整并摆脱了这个错误?
这是脚本,我下载导出框架以供普遍使用:
#CONFIG=${CONFIGURATION}
CONFIG=Release
# Step 1. Make sure the output directory exists
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIG}-universal
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
# Step 2. Build Device and Simulator versions
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIG} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIG} -sdk iphonesimulator -arch x86_64 -arch i386 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
# Step 3. Copy the framework structure to the universal folder. Subsequently copy the files of the swiftmodule (in Modules directory) of -iphonesimulator to the swiftmodule of universal framework directory.
cp -R "${BUILD_DIR}/${CONFIG}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"
cp -R "${BUILD_DIR}/${CONFIG}-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}/${CONFIG}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIG}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
答案 0 :(得分:1)
我认为问题在于您无法访问框架的头文件。我刚刚在这个问题上苦苦挣扎了很长一段时间。在Build Settings中,我认为你需要参考框架。如果要在使用框架的项目中构建框架,则应该可以:
现在为了恩典:在Build Settings下,搜索Framework Search Paths。并加入:
${TARGET_BUILD_DIR}/YourFrameworkName.framework
请查看How Do I Create a Development Framework In iOS Including Swift?了解更多详情。