Cocoapods podfile 目标仅向测试添加框架

Posted

技术标签:

【中文标题】Cocoapods podfile 目标仅向测试添加框架【英文标题】:Cocoapods podfile target adding frameworks to tests only 【发布时间】:2016-12-07 22:31:41 【问题描述】:

我正在尝试修改我的 podfile 以在测试目标中包含用于网络测试的 pod。这是我的 podfile 的样子:

target 'BPD-mobile' do
   # Used to simplify reads/writes to coredata
   pod 'MagicalRecord', '~> 2.3.0'                 #obj-c
   pod 'MFSideMenu', '~> 0.5.5'                    #obj-c
   pod 'UIDevice-Hardware', '~> 0.1.7'             #obj-c
   pod 'Flurry-ios-SDK', '~> 7.1.1'                #obj-c
   pod 'AKNumericFormatter', '~> 0.0.2'            #obj-c
   pod 'JSBadgeView', '~> 1.3.2'                   #obj-c
   pod 'RETableViewManager', '~> 1.6'              #obj-c
   pod 'RNBlurModalView', '~> 0.1.0'               #obj-c
   pod 'APLKeyboardControls', '~> 0.1.3'           #obj-c
   pod 'MBProgressHUD', '~> 0.9.1'                 #obj-c
   pod 'RBStoryboardLink', '~> 0.1.4'              #obj-c
   pod 'DTCoreText', '~> 1.6.16'                   #obj-c

   # This pod is used for all networking requests
   pod 'AFNetworking', '~> 3.1.0'                  #obj-c
   pod 'MTMigration', '~> 0.0.5'                   #obj-c
   pod 'Harpy', '~> 3.3.10'                        #obj-c
   pod 'SDWebImage', '~> 3.7.3'                    #obj-c
   pod 'ELCImagePickerController', '~> 0.2.0'      #obj-c
   pod 'UAAppReviewManager', '~> 0.2.6'            #obj-c
   pod 'DZNEmptyDataSet', '~> 1.7.2'               #obj-c

   # Used to report crashes to github and open issues for them
   pod 'Fabric'#, '~> 1.6.4'                       #obj-c
   pod 'Crashlytics'#, '~> 3.8.2'                  #obj-c

   pod 'DeepLinkKit', '~> 1.1.0'                   #obj-c

   # User for UI Layout and additional widgets
   pod 'Eureka', '~> 2.0.0-beta.1'                 #swift 3.0

   # Adds pull screen down for callback functionality, used to
   # sync with server
   pod 'PullToRefreshCoreText', :git => 'https://github.com/BigPurpleDot/PullToRefreshCoreText' #obj-c

   # Pods to only be used for this target
   target "BPD-mobile Tests" do

       # This pod is used to hijack http methods and respond with
       # pre recorded information
       pod 'OHHTTPStubs', '~> 5.2.3'

       # This pod is used to record http response data for reuse
       pod 'SWHttpTrafficRecorder', '~> 1.0.2'
   end
end

请注意,我将测试目标嵌套在 BPD-mobile 目标中。当我尝试编译它时,它说找不到“Pods_BPD_mobile_Tests”框架。我查看了项目中的 pods 文件夹,它们是这样的:

'Pods-BPD-mobile',

'Pods-BPD-mobile-BPD-mobile 测试'

“Pods_BPD_mobile 测试”窗格为红色。我假设我需要以某种方式构建 podfile,以便测试框架输出到“Pods_BPD_mobile Tests”,或者我必须更改一些设置,以便它在新路径下查找测试框架。我必须更改哪些设置/我的 podfile 应如何查找要构建的项目?

编辑:

问题似乎是目标名称中有空格:

https://github.com/CocoaPods/CocoaPods/issues/3754

我不太明白解决方案,谁能详细说明?

【问题讨论】:

【参考方案1】:

好的,所以这与我的配置无关,是 cocoapods 错误。因为我的目标名称中有一个空格,所以我不得不手动编辑为测试目标和主目标运行的脚本,并在 "$1" 周围添加单引号,将其变成:'"$1"' 根据这个 github 问题:

https://github.com/CocoaPods/CocoaPods/issues/3754

【讨论】:

以上是关于Cocoapods podfile 目标仅向测试添加框架的主要内容,如果未能解决你的问题,请参考以下文章

cocoapods报错

Podfile 中目标内的目标

为 CocoaPods 的 pod 设置部署目标

CocoaPods 'pod lib create' 不生成 Podfile

cocoapods 0.37.1 - 更新 Podfile 时,框架不再链接

Cocoapods的Podfile常见语法总结