CocoaPods如何在Release环境下,排除资源文件。

  • 开发的时候,经常有很多测试用文件会被拉入项目中,而打成的Release包并不需要包含这些文件。
  • 在主工程中,可以在BuildSettings添加EXCLUDED_SOURCE_FILE_NAMES解决这个问题。
  • 可是Pod Lib里面操作就有点复杂了。

在pod lib中的配置

LPDebugAsset.podspec中添加资源配置

  s.resource_bundles = {
    'LPDebugAsset' => [
      'LPDebugAsset/AssetsDebug/*', # Debug可访问
      'LPDebugAsset/Assets/*', # Debug/Release可访问
    ]
  }

上面的配置,会在TARGETS中生成蓝色资源Target:LPDebugAsset-LPDebugAsset,会在沙盒生成文件夹:Frameworks/LPDebugAsset.framework/LPDebugAsset.bundle

如何在Release环境下,移除AssetsDebug文件夹

方案1(不推荐)

在Podfile中添加配置EXCLUDED_SOURCE_FILE_NAMES

    # 找到资源Target,并且添加配置
    installer.pods_project.targets.each do |target|
      if target.name == 'LPDebugAsset-LPDebugAsset'
        target.build_configurations.each do |config|
          if config.name == 'Release'
            config.build_settings['EXCLUDED_SOURCE_FILE_NAMES'] ||= ''
            config.build_settings['EXCLUDED_SOURCE_FILE_NAMES'] += ' LPDebugAsset/AssetsDebug/* LPDebugAsset/AssetsDebug/**/*'
          end
        end
      end
    end

方案1能解决问题,但是会影响到你的Podfile

方案2(推荐)

podspec中添加配置

  s.pod_target_xcconfig = {
    "EXCLUDED_SOURCE_FILE_NAMES" => "$(ExcludeFile_$(CONFIGURATION))",
    "ExcludeFile_Release" => "LPDebugAsset/AssetsDebug/* LPDebugAsset/AssetsDebug/**/*",
    "ExcludeFile_Debug" => "",
  }

pod_target_xcconfig不能指定只在LPDebugAsset.debug.xcconfigsLPDebugAsset.release.xcconfigs中生成配置,所以采用取巧的方案来实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容