2

我正在制作一个 xcframework。在我的框架项目中,我添加了 Alamofire、Realm 等可可豆荚。当我将我的 xcframework 集成到我的应用程序中时,应用程序崩溃并显示以下错误:

dyld: Symbol not found: _$s9Alamofire10HTTPMethodO3getyA2CmFWC
  
Referenced from: /private/var/containers/Bundle/Application/E81F9FBA-3876-4959-B675-B89A4EC0257A/BykesPod.app/Frameworks/MYFRAMEWORK.framework/MYFRAMEWORK
  
Expected in: /private/var/containers/Bundle/Application/E81F9FBA-3876-4959-B675-B89A4EC0257A/DEMOAPP.app/Frameworks/Alamofire.framework/Alamofire
 
in /private/var/containers/Bundle/Application/E81F9FBA-3876-4959-B675-B89A4EC0257A/DEMOAPP.app/Frameworks/MYFRAMEWORK.framework/MYFRAMEWORK

dyld: launch, loading dependent libraries
DYLD_LIBRARY_PATH=/usr/lib/system/introspection
DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib

以下是我的框架项目的 pod 文件

target 'MYFRAMEWORK' do
    project './MYFRAMEWORK.xcodeproj'
      pod 'Realm'
      pod 'RealmSwift'
      pod 'Alamofire', '~> 4.8'
      pod 'MBProgressHUD','1.1.0'
      pod 'SwiftyJSON'
end

我在 podspec 文件中添加了以下依赖项:

s.dependency "Realm"
s.dependency "RealmSwift"
s.dependency "Alamofire","~> 4.8.2"
s.dependency "MBProgressHUD","~> 1.1.0"
s.dependency "SwiftyJSON"

以下是我的演示应用程序的 pod 文件:

target 'DEMOAPP' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  pod 'PODNAME'
end

以下是我制作 xcframeworks 的命令

xcodebuild archive -workspace MYFRAMEWORK.xcworkspace  -scheme MYFRAMEWORK -sdk iphoneos -archivePath "archives/0/ios_device.xcarchive" BUILD_LIBRARY_FOR_DISTRIBUTION=YES SKIP_INSTALL=NO

xcodebuild archive -workspace MYFRAMEWORK.xcworkspace  -scheme MYFRAMEWORK -sdk iphonesimulator -archivePath "archives/0/ios_simulators.xcarchive" BUILD_LIBRARY_FOR_DISTRIBUTION=YES SKIP_INSTALL=NO

xcodebuild -create-xcframework -framework archives/0/ios_device.xcarchive/Products/Library/Frameworks/MYFRAMEWORK.framework -framework archives/0/ios_simulators.xcarchive/Products/Library/Frameworks/MYFRAMEWORK.framework -output build/MYFRAMEWORK.xcframework    

注意:我的代码 xcode 版本是 12.4

4

2 回答 2

1

解决此问题的方法是在 Target Build 设置中启用以下选项

  1. 在 Xcode 中打开 Target 构建设置
  2. 搜索Build Libraries for distribution
  3. 将其更改为“是”。

注意:如果您正在分发项目/库/框架并且它包含/依赖于Cocoapods将以下脚本添加到集成框架的目标项目中。此脚本启用Build Libraries for distribution所有安装Cocoapod依赖项。

post_install do |installer|
installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
        config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
        end
    end
end
于 2021-08-26T02:18:03.100 回答
0

目前,我找到的解决方案是在我的应用程序的 Pods 项目中使“构建库以进行分发”标志为真。请参阅随附的屏幕截图。

为分发标志构建库

于 2021-08-25T13:39:13.587 回答