从 Acknowledgements.plist 中排除私人 Pods
Exclude Private Pods from Acknowledgements.plist
我的 iOS 应用程序的 CocoaPods Podfile
使用 post_install
挂钩将生成的 Acknowledgements.plist
文件复制到我的应用程序的设置包中。但是,该文件包含我想排除的(专有)私有 pods。
问题
我知道我可以手动修改复制的 Acknowledgements.plist
文件中的项目。我如何以编程方式从文件中排除特定的私有 pods?
代码
这是将 Acknowledgements.plist
复制到设置包的 post_install
挂钩。
post_install do |installer|
raw_acknowledgements = File.read('Pods/Target Support Files/Pods-MyApp/Pods-MyApp-Acknowledgements.plist')
formatted_acknowledgements = raw_acknowledgements.gsub(/(?<!>)(?<!\n)\n( *)(?![ \*])(?![ -])(?!\n)(?!<)/, ' ')
# How do I exclude specific pods before the file is copied?
File.open('MyApp/Supporting Files/Settings.bundle/Acknowledgements.plist', "w") { |file| file.puts formatted_acknowledgements }
end
更新
我在下面添加了一个目前有效的答案。但是,我愿意接受不涉及修改许可证或使用插件的另一个答案。
选项 1
通过从 Podspec
中删除 LICENSE 文件和 license
对象,可以从生成的 Acknowledgements.plist
中排除私有 pods。在私有 podspec.json
文件中,license
对象看起来类似于:
"license": { "type": "Proprietary", "file": "LICENSE" }
如果不同时删除 LICENSE 文件,此解决方案将无法工作。
选项 2
不需要修改私有 pod 许可证的替代解决方案是使用 CocoaPods Acknowledgements 插件。安装 cocoapods-acknowledgements
gem 后,将类似这样的内容添加到您的 Podfile
:
plugin 'cocoapods-acknowledgements',
:settings_bundle => true,
:targets => ['MyApp'],
:exclude => ['PrivatePodA', 'PrivatePodB']
请注意,此解决方案不需要问题中的 post_install
钩子。
我的 iOS 应用程序的 CocoaPods Podfile
使用 post_install
挂钩将生成的 Acknowledgements.plist
文件复制到我的应用程序的设置包中。但是,该文件包含我想排除的(专有)私有 pods。
问题
我知道我可以手动修改复制的 Acknowledgements.plist
文件中的项目。我如何以编程方式从文件中排除特定的私有 pods?
代码
这是将 Acknowledgements.plist
复制到设置包的 post_install
挂钩。
post_install do |installer|
raw_acknowledgements = File.read('Pods/Target Support Files/Pods-MyApp/Pods-MyApp-Acknowledgements.plist')
formatted_acknowledgements = raw_acknowledgements.gsub(/(?<!>)(?<!\n)\n( *)(?![ \*])(?![ -])(?!\n)(?!<)/, ' ')
# How do I exclude specific pods before the file is copied?
File.open('MyApp/Supporting Files/Settings.bundle/Acknowledgements.plist', "w") { |file| file.puts formatted_acknowledgements }
end
更新
我在下面添加了一个目前有效的答案。但是,我愿意接受不涉及修改许可证或使用插件的另一个答案。
选项 1
通过从 Podspec
中删除 LICENSE 文件和 license
对象,可以从生成的 Acknowledgements.plist
中排除私有 pods。在私有 podspec.json
文件中,license
对象看起来类似于:
"license": { "type": "Proprietary", "file": "LICENSE" }
如果不同时删除 LICENSE 文件,此解决方案将无法工作。
选项 2
不需要修改私有 pod 许可证的替代解决方案是使用 CocoaPods Acknowledgements 插件。安装 cocoapods-acknowledgements
gem 后,将类似这样的内容添加到您的 Podfile
:
plugin 'cocoapods-acknowledgements',
:settings_bundle => true,
:targets => ['MyApp'],
:exclude => ['PrivatePodA', 'PrivatePodB']
请注意,此解决方案不需要问题中的 post_install
钩子。