ios – 如何存档包含自定义框架的应用程序?

ios – 如何存档包含自定义框架的应用程序?,第1张

概述我有一个我创建的 xcode框架项目,我可以编译成一个myframework.framework文件.编译之后,我将这个框架拖到我应用程序的Frameworks项目文件夹中,然后利用框架中的类,将适当的import语句添加到需要它的任何类;这允许我的应用程序成功编译与在框架中定义的类的引用.要使应用程序成功部署到我的设备,我还将我的自定义框架添加到我的目标的“嵌入式二进制文件”部分.有了这一切,我 我有一个我创建的 xcode框架项目,我可以编译成一个myframework.framework文件.编译之后,我将这个框架拖到我应用程序的Frameworks项目文件夹中,然后利用框架中的类,将适当的import语句添加到需要它的任何类;这允许我的应用程序成功编译与在框架中定义的类的引用.要使应用程序成功部署到我的设备,我还将我的自定义框架添加到我的目标的“嵌入式二进制文件”部分.有了这一切,我可以从xcode构建我的应用程序,并在我的设备上运行它.

当我尝试存档我的应​​用程序商店的应用程序时,我的问题出现.当我尝试这样做时,我会收到大量编译器错误,其中xcode表示它无法找到我自定义框架中定义的任何类的声明.

如何在xcode中设置存档,以便正确引用和嵌入我的自定义框架?

解决方法 您实际上不需要将其放在“嵌入式​​二进制文件”部分中.您只需要在“链接的框架和库”部分中.确保您的框架是通用框架(意味着可以为所有体系结构编译),并确保您具有正确的编译器标志集(-ObjC,如果您的框架有任何类别等)如果您的框架包含任何c代码,并且要在客户端应用程序中启用位代码,那么您可能还需要设置其他一些“Other C Flags”,您应该将“-fembed-bitcode”放在框架其他C标志这些是我需要做的事情来让我的框架应用程序到商店,我认为这只是一个误解,你需要把它放在嵌入式二进制文件中,以使其存档.

这是我用来生成通用框架的构建脚本.它建立在我的桌面上.如果您的框架在Swift中,您可以取消注释第8节.您要创建一个聚合目标,并在构建阶段将其添加为运行脚本.

# Merge Script# 1# Set bash script to exit immediately if any commands fail.set -e# 2# Setup some constants for use later on.FRAMEWORK_name="MyFramework"# 3# If remnants from a prevIoUs build exist,delete them.if [ -d "${SRCROOT}/build" ]; thenrm -rf "${SRCROOT}/build"fi# 4# Build the framework for device and for simulator (using# all needed architectures).xcodebuild -target "${FRAMEWORK_name}" -configuration Release -arch arm64 -arch armv7 -arch armv7s only_active_arch=no defines_module=yes -sdk "iphoneos"xcodebuild -target "${FRAMEWORK_name}" -configuration Release -arch x86_64 -arch i386 only_active_arch=no defines_module=yes -sdk "iphonesimulator"# 5# Remove .framework file if exists on Desktop from prevIoUs run.if [ -d "${HOME}/Desktop/${FRAMEWORK_name}.framework" ]; thenrm -rf "${HOME}/Desktop/${FRAMEWORK_name}.framework"fi# 6# copy the device version of framework to Desktop.cp -r "${SRCROOT}/build/Release-iphoneos/${FRAMEWORK_name}.framework" "${HOME}/Desktop/${FRAMEWORK_name}.framework"# 7# Replace the framework executable within the framework with# a new version created by merging the device and simulator# frameworks' executables with lipo.lipo -create -output "${HOME}/Desktop/${FRAMEWORK_name}.framework/${FRAMEWORK_name}" "${SRCROOT}/build/Release-iphoneos/${FRAMEWORK_name}.framework/${FRAMEWORK_name}" "${SRCROOT}/build/Release-iphonesimulator/${FRAMEWORK_name}.framework/${FRAMEWORK_name}"# 8# copy the Swift module mapPings for the simulator into the# framework.  The device mapPings already exist from step 6.#cp -r "${SRCROOT}/build/Release-iphonesimulator/${FRAMEWORK_name}.framework/Modules/${FRAMEWORK_name}.swiftmodule/" "${HOME}/Desktop/${FRAMEWORK_name}.framework/Modules/${FRAMEWORK_name}.swiftmodule"# 9# Delete the most recent build.if [ -d "${SRCROOT}/build" ]; thenrm -rf "${SRCROOT}/build"fi

一旦你的框架在桌面上,如果你进入它的内部,就会有一个与你的框架名称相同的文本文档.如果您导航到它,并在终端上运行命令“lipo -info”,您应该得到以下输出:

Architectures in the fat file: MyFramework are: armv7 armv7s i386 x86_64 arm64
总结

以上是内存溢出为你收集整理的ios – 如何存档包含自定义框架的应用程序?全部内容,希望文章能够帮你解决ios – 如何存档包含自定义框架的应用程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1097709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存