- MyLibrary:CocoaPod,我试图安装和运行,但失败。(https://github.com/steve-ham/MyLibrary)(包括下面的'MyFramework')
- MyFramework:带有'LibTorch-Lite' CocoaPod依赖项的iOS框架。(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
型
我在其他CocoaPods项目中没有遇到过这个问题,只有'LibTorch-Lite'才会发生这种情况。是否存在根本限制,无法将'LibTorch-Lite' Package 到.xcframework中,以便在我的'MyLibrary'项目中成功安装和执行?谢谢。
1条答案
按热度按时间i2loujxw1#
编辑:
在执行以下方法并将框架导入到另一个项目后,我无法发布项目(应用程序)进行testflight。我在这里留下这个答案,以防有人可以将其用作找到正确解决方案的垫脚石。
原始应答
我能够得到一个工作解决方案,但有一些限制:
我没有将对libTorch-Lite的依赖添加到我的podspec文件中,而是删除了对它的依赖,并将pods框架嵌入到我的框架中,如下所示:
x1c 0d1x的数据
当我构建这个框架并将其作为一个cocoapod导入到另一个项目中时,一切都顺利地进行了。
此方法的限制:
一般来说,在xcframework中包含cocoapods的推荐方法是运行
pod init
,将pod添加到podfile中,然后运行pod install
,然后在构建框架时,您可以运行类似于以下内容的操作,并将所有依赖的pod作为依赖项添加到podspec文件中。字符串
这样做(不嵌入pod框架并将依赖项添加到podspec)可以让cocopods正确处理版本并减少冲突的机会。当嵌入pod框架时,您面临的风险是导入您的包的应用程序/包将具有相同的pod依赖项,这将导致宿主项目中的错误。
所以,如果你的框架中也依赖于一个常用的pod,比如alamofire,那么它很有可能会破坏任何导入它的应用程序,假设它们也依赖于alamofire。