4

我们的应用程序是在 2018 年中期使用 Swift 4 创建的,其他 3rd 方依赖于 Cocoapods。我添加了一个 Clip 目标,项目结构与 session 下的下载链接给出的不同。运行这个目标,这里是崩溃错误:

Reason: image not found

dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
  Referenced from: /private/var/containers/Bundle/Application/57185773-B735-4EE5-BB51-790DF004A85B/kt_iOS_Clip.app/kt_iOS_Clip
  Reason: image not found
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:/Developer/Library/PrivateFrameworks/GPUTools.framework/libglInterpose.dylib:/usr/lib/libMTLCapture.dylib

这是 Podfile:

platform :ios, '10.0'
inhibit_all_warnings!

target '<Main App>' do
    use_frameworks!
  
    pod 'SnapKit' , '4.2.0'                     
    pod 'Alamofire' , '4.7.3' 
    ......                  
    
  target '<Main App>Tests' do
    inherit! :search_paths
  end
  
  swift_41_pod_targets = ['Spring','PKHUD', 'FSPagerView', 'SQLite.swift','FaveButton']
  
  post_install do | installer |
      
      installer.pods_project.targets.each do |target|
          if target.name == 'Cache'
              target.build_configurations.each do |config|
                  level = '-Osize'
                  config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = level
                  puts "Set #{target.name} #{config.name} to Optimization Level #{level}"
              end
          end
          if swift_41_pod_targets.include?(target.name)
              
              target.build_configurations.each do |config|
                  
                  config.build_settings['SWIFT_VERSION'] = '4.1'
                  
              end
              
          end
          
      end
      
  end

  target '<Main App>UITests' do
    inherit! :search_paths
  end

end
4

5 回答 5

14

正如提到的其他答案,单独的应用程序剪辑目标并use_modular_headers!为我工作

platform :ios, '13.0'

target 'MainAppTarget' do
  
  use_frameworks!

  pod 'Firebase/Analytics'
  pod 'Firebase/RemoteConfig'

  target 'MainAppTargetTests' do
    inherit! :search_paths
  end

end

target 'AppClipTarget' do
  
  use_modular_headers!

  pod 'Firebase/Analytics'

  target 'AppClipTargetTests' do
    inherit! :search_paths
  end

  target 'AppClipTargetUITests' do
  end

end

于 2020-07-29T14:15:21.970 回答
1

有,但目前没有(2020.7.15)。

igor-makarov 已经向 master 提交了一个 app clip 支持,现在就等下一个 CocoaPods 发布吧。

https://github.com/CocoaPods/CocoaPods/commit/3a5deed0adfa306307027753898cca5e23be14bd

于 2020-07-15T08:48:13.577 回答
1

我通过在指向 AppClip 目标的 podfile 中添加另一个目标来解决此问题

参考:https ://www.natashatherobot.com/cocoapods-installing-same-pod-multiple-targets/

于 2020-07-08T12:43:15.643 回答
1

我认为正确的做法是设置另一个目标(在我的情况下,我将它放在主要目标之外,因为我只想要几个 pod)。

但是,Cocoapods 需要更新一些东西才能正确导出/设置所有内容。由于最近引入了 App Clips,Cocoapods 还没有发布带有修复的新稳定版本 ( https://github.com/CocoaPods/CocoaPods/pull/9882 )。所以我们只需要稍等片刻,我猜。同时,您可以手动添加 Embed Pods 框架,它会正常工作。

参考:https ://developer.apple.com/forums/thread/652683?login=true

于 2020-07-15T09:18:54.333 回答
0

对我有用的是:

sudo gem install cocoapods --pre

发布这篇文章时 Cocoapods 的最新稳定版本不支持带有 cocoaPods 的应用剪辑目标。

于 2020-09-21T14:32:04.393 回答