You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CocoaPods的post_install中排除Acknowledgements.plist的私有Pod

解决方案

核心逻辑是直接解析CocoaPods自动生成的Acknowledgements.plist结构,定向删除指定私有Pod的条目后再写入Settings bundle,不需要修改Pod许可证、不需要引入第三方插件,完全依赖CocoaPods内置能力实现。

你可以直接替换原来的post_install代码为如下内容:

post_install do |installer|
  # 按需修改为你要排除的私有Pod名称,需和Acknowledgements里对应条目的Title完全一致
  EXCLUDED_PRIVATE_PODS = ["YourPrivatePod1", "YourPrivatePod2"]

  # 读取原始自动生成的Acknowledgements文件
  raw_acknowledgements = File.read('Pods/Target Support Files/Pods-MyApp/Pods-MyApp-Acknowledgements.plist')
  # 将plist文本解析为可操作的Ruby哈希结构
  plist_data = Plist.parse_xml(raw_acknowledgements)
  
  # 过滤排除指定私有Pod的条目
  plist_data["PreferenceSpecifiers"] = plist_data["PreferenceSpecifiers"].reject do |item|
    # 跳过致谢页的头部标题项,只处理Pod条目
    next false if item["Title"] == "Acknowledgements"
    EXCLUDED_PRIVATE_PODS.include?(item["Title"])
  end

  # 将处理后的哈希转回标准plist格式字符串
  processed_plist = plist_data.to_plist
  # 保留你原有格式化换行的逻辑
  formatted_acknowledgements = processed_plist.gsub(/(?<!>)(?<!\n)\n( *)(?![ \*])(?![ -])(?!\n)(?!<)/, ' ')

  # 写入到Settings bundle目标路径
  File.open('MyApp/Supporting Files/Settings.bundle/Acknowledgements.plist', "w") do |file|
    file.puts formatted_acknowledgements
  end
end

注意事项

  • 排除列表中的Pod名称需要和Acknowledgements.plist中对应条目的Title字段完全匹配,大小写敏感
  • 如果你的项目存在多target,需要对应修改原始Acknowledgements.plist的读取路径
  • 执行pod install后可以直接打开生成的Settings.bundle下的Acknowledgements.plist,校验目标私有Pod是否已经被成功移除

内容的提问来源于stack exchange,提问作者JWK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:51:03