- MyLibrary:CocoaPod,我试图安装和运行,但失败。(https://github.com/steve-ham/MyLibrary)(包括在“MyFramework”下面)
- MyFramework:iOS框架与'LibTorch-Lite' CocoaPod依赖。(https://github.com/steve-ham/MyFramework)
当我运行'MyLibrary应用程序'(https://github.com/steve-ham/MyLibrary)我得到下面的错误:
libc++abi: terminating with uncaught exception of type torch::jit::ErrorReport:
Unknown custom class type quantized.Conv2dPackedParamsBase. Please ensure it is registered.:
quantized::conv1d(Tensor qx, __torch__.torch.classes.quantized.Conv2dPackedParamsBase packed_weight, float output_scale, int output_zero_point) -> Tensor
~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
terminating with uncaught exception of type torch::jit::ErrorReport:
Unknown custom class type quantized.Conv2dPackedParamsBase. Please ensure it is registered.:
quantized::conv1d(Tensor qx, __torch__.torch.classes.quantized.Conv2dPackedParamsBase packed_weight, float output_scale, int output_zero_point) -> Tensor
~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
我使用下面的代码从MyFramework项目(https://github.com/steve-ham/MyFramework)创建MyFramework.xcframework
xcodebuild archive -workspace MyFramework.xcworkspace \
-scheme MyFramework \
-sdk iphoneos \
-archivePath "./MyFramework.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
xcodebuild archive -workspace MyFramework.xcworkspace \
-scheme MyFramework \
-sdk iphonesimulator \
-archivePath "./MyFramework_sim.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO \
EXCLUDED_ARCHS=arm64
xcodebuild -create-xcframework \
-framework "MyFramework.xcarchive/Products/Library/Frameworks/MyFramework.framework" \
-framework "MyFramework_sim.xcarchive/Products/Library/Frameworks/MyFramework.framework" \
-output MyFramework.xcframework
当我使用其他CocoaPod项目而不是'LibTorch-Lite'时,没有这样的错误。难道仅仅是不可能将'LibTorch-Lite' Package 到.xcframework中并像上面 Package 到CocoaPod中那样部署它吗?谢谢.
1条答案
按热度按时间ocebsuys1#
编辑:
在执行以下方法并将框架导入到另一个项目后,我无法将项目(应用程序)发布到testflight。我把这个答案留在这里,以防有人可以把它作为找到正确答案的垫脚石。
原始应答
我能够得到一个工作解决方案,但有一些限制:
我没有将对libTorch-Lite的依赖添加到我的podspec文件中,而是删除了对它的依赖,并将pods框架嵌入到我的框架中,如下所示:
当我构建这个框架并将其作为一个cocoapod导入到另一个项目中时,一切都顺利地进行了。
此方法的限制:
一般来说,在xcframework中包含cocoapods的推荐方法是运行
pod init
,将pod添加到podfile中,然后运行pod install
,然后在构建框架时,您可以运行类似于以下内容的操作,并将所有依赖的pod作为依赖项添加到podspec文件中。这样做(不嵌入pods框架并将依赖项添加到podspec)允许cocopods正确处理版本并减少冲突的机会。在嵌入pod框架时,您可能会遇到这样的风险:导入您的包的应用程序/包将具有相同的pod依赖项,这将导致宿主项目中出现错误。
所以,如果你的框架中也依赖于一个常用的pod,比如alamofire,那么它很有可能会破坏任何导入它的应用程序,假设它们也依赖于alamofire。