cocoapods 1.11.0.beta.1 → 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9fcadf827e9027cd39852af93dcf24362edbb7079702070590bd5aee2358f6aa
4
- data.tar.gz: 1f097f852a1037fa1eb692387373a3ba6d198310d10bf1203cb8ebfbff44f540
3
+ metadata.gz: 13b8afbc6a86002603657c70845d730e56705ce8d220c63949cd72b5b6b6cbe9
4
+ data.tar.gz: cbaca99762be90fc614455732acb9e1f3ed9d4c0ea1890a76983fcf4adfcaf6d
5
5
  SHA512:
6
- metadata.gz: df4609fa035e9a2d0b0665ce69291d7733e8ded721842985c1a996015f28bdb87cc952017c5fcc7fe990f6a5c9c99f23b952c48536f96e0d18f6b879800b6a3e
7
- data.tar.gz: 4e7dd86c41aad6d81b78be0f760cae0866780e30c4bd37b7386ce517ebe6aaa8d3d73388387ec467ebd75b4ad5fbaa4847e9b3cd6ddc12dbf9901025b1bb4a3d
6
+ metadata.gz: 2c0be8b7faa61f7bd79a17e9bd9d768f32ae534c51ce2a7d295e0d187a7c195470a250d283013b26c258f577ae3795f2038508a2627d676ecb21930b1e46b747
7
+ data.tar.gz: 45c4012f332e01e96c8140a3e41da6e245550b984d58012921b5fca2f76ea039b9d20cee0d67b9fdba0979bf4d2987af755d66be1204e0b73a4ef5340c105ab1
data/CHANGELOG.md CHANGED
@@ -4,6 +4,66 @@ To install or update CocoaPods see this [guide](https://guides.cocoapods.org/usi
4
4
 
5
5
  To install release candidates run `[sudo] gem install cocoapods --pre`
6
6
 
7
+ ## 1.11.1 (2021-09-13)
8
+
9
+ ##### Enhancements
10
+
11
+ * None.
12
+
13
+ ##### Bug Fixes
14
+
15
+ * Handle spec repo urls with user info when determining if they are CDN.
16
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
17
+ [#10941](https://github.com/CocoaPods/CocoaPods/issues/10941)
18
+
19
+ * Set `INFOPLIST_FILE` build setting to `$(SRCROOT)/App/App-Info.plist` during lint.
20
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
21
+ [#10927](https://github.com/CocoaPods/CocoaPods/issues/10927)
22
+
23
+ * Set `PRODUCT_BUNDLE_IDENTIFIER` for generated app during lint.
24
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
25
+ [#10933](https://github.com/CocoaPods/CocoaPods/issues/10933)
26
+
27
+
28
+ ## 1.11.0 (2021-09-01)
29
+
30
+ ##### Enhancements
31
+
32
+ * None.
33
+
34
+ ##### Bug Fixes
35
+
36
+ * None.
37
+
38
+
39
+ ## 1.11.0.rc.1 (2021-08-25)
40
+
41
+ ##### Enhancements
42
+
43
+ * None.
44
+
45
+ ##### Bug Fixes
46
+
47
+ * Correctly process multiple `xcframeworks` a pod provides.
48
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
49
+ [#10378](https://github.com/CocoaPods/CocoaPods/issues/10378)
50
+
51
+
52
+ ## 1.11.0.beta.2 (2021-08-11)
53
+
54
+ ##### Enhancements
55
+
56
+ * Integrate ODR categories into projects.
57
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
58
+ [#10855](https://github.com/CocoaPods/CocoaPods/pull/10855)
59
+
60
+ ##### Bug Fixes
61
+
62
+ * Pass correct paths for `select_slice` method.
63
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
64
+ [#10430](https://github.com/CocoaPods/CocoaPods/issues/10430)
65
+
66
+
7
67
  ## 1.11.0.beta.1 (2021-08-09)
8
68
 
9
69
  ##### Enhancements
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the CocoaPods command line tool.
3
3
  #
4
- VERSION = '1.11.0.beta.1'.freeze unless defined? Pod::VERSION
4
+ VERSION = '1.11.1'.freeze unless defined? Pod::VERSION
5
5
  end
@@ -70,8 +70,8 @@ copy_dir()
70
70
  local destination="$2"
71
71
 
72
72
  # Use filter instead of exclude so missing patterns don't throw errors.
73
- echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" \\"${source}\\" \\"${destination}\\""
74
- rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" "${source}" "${destination}"
73
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" \\"${source}*\\" \\"${destination}\\""
74
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" "${source}"/* "${destination}"
75
75
  }
76
76
 
77
77
  SELECT_SLICE_RETVAL=""
@@ -130,38 +130,11 @@ select_slice() {
130
130
  done
131
131
  }
132
132
 
133
- install_library() {
134
- local source="$1"
135
- local name="$2"
136
- local destination="#{Target::BuildSettings::XCFRAMEWORKS_BUILD_DIR_VARIABLE}/${name}"
137
-
138
- # Libraries can contain headers, module maps, and a binary, so we'll copy everything in the folder over
139
-
140
- local source="$binary"
141
- echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" \\"${source}/*\\" \\"${destination}\\""
142
- rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" "${source}/*" "${destination}"
143
- }
144
-
145
- # Copies a framework to derived data for use in later build phases
146
- install_framework()
147
- {
148
- local source="$1"
149
- local name="$2"
150
- local destination="#{Pod::Target::BuildSettings::XCFRAMEWORKS_BUILD_DIR_VARIABLE}/${name}"
151
-
152
- if [ ! -d "$destination" ]; then
153
- mkdir -p "$destination"
154
- fi
155
-
156
- copy_dir "$source" "$destination"
157
- echo "Copied $source to $destination"
158
- }
159
-
160
133
  install_xcframework() {
161
134
  local basepath="$1"
162
135
  local name="$2"
163
136
  local package_type="$3"
164
- local paths=("$@")
137
+ local paths=("${@:4}")
165
138
 
166
139
  # Locate the correct slice of the .xcframework for the current architectures
167
140
  select_slice "${paths[@]}"
@@ -179,7 +152,6 @@ install_xcframework() {
179
152
  fi
180
153
 
181
154
  copy_dir "$source/" "$destination"
182
-
183
155
  echo "Copied $source to $destination"
184
156
  }
185
157
 
@@ -162,8 +162,11 @@ module Pod
162
162
  'BUILD_SETTINGS_CHECKSUM' => build_settings,
163
163
  }
164
164
  if aggregate_target.includes_resources? || aggregate_target.includes_on_demand_resources?
165
- relative_file_paths = aggregate_target.resource_paths_by_config.values.flatten.uniq + aggregate_target.on_demand_resources.map(&:to_s)
166
- contents['FILES'] = relative_file_paths.sort_by(&:downcase)
165
+ relative_resource_file_paths = aggregate_target.resource_paths_by_config.values.flatten.uniq
166
+ relative_on_demand_resource_file_paths = aggregate_target.on_demand_resources.map do |res|
167
+ res.relative_path_from(sandbox.project_path.dirname).to_s
168
+ end
169
+ contents['FILES'] = (relative_resource_file_paths + relative_on_demand_resource_file_paths).sort_by(&:downcase)
167
170
  end
168
171
  TargetCacheKey.new(sandbox, :aggregate, contents)
169
172
  end
@@ -32,7 +32,8 @@ module Pod
32
32
  # For messages extensions, this only applies if it's embedded in a messages
33
33
  # application.
34
34
  #
35
- EMBED_FRAMEWORK_TARGET_TYPES = [:application, :application_on_demand_install_capable, :unit_test_bundle, :ui_test_bundle, :watch2_extension, :messages_application].freeze
35
+ EMBED_FRAMEWORK_TARGET_TYPES = [:application, :application_on_demand_install_capable, :unit_test_bundle,
36
+ :ui_test_bundle, :watch2_extension, :messages_application].freeze
36
37
 
37
38
  # @return [String] the name of the embed frameworks phase
38
39
  #
@@ -457,9 +458,9 @@ module Pod
457
458
  #
458
459
  # @return [void]
459
460
  #
460
- def add_on_demand_resources(sandbox, project, native_targets, file_accessors, parent_odr_group,
461
- target_odr_group_name)
462
- asset_tags_added = Set.new
461
+ def update_on_demand_resources(sandbox, project, native_targets, file_accessors, parent_odr_group,
462
+ target_odr_group_name)
463
+ category_to_tags = {}
463
464
  file_accessors = Array(file_accessors)
464
465
  native_targets = Array(native_targets)
465
466
 
@@ -469,8 +470,9 @@ module Pod
469
470
  old_odr_file_refs = old_target_odr_group&.recursive_children_groups&.each_with_object({}) do |group, hash|
470
471
  hash[group.name] = group.files
471
472
  end || {}
472
- native_targets.each do |user_target|
473
- user_target.remove_on_demand_resources(old_odr_file_refs)
473
+ native_targets.each do |native_target|
474
+ native_target.remove_on_demand_resources(old_odr_file_refs)
475
+ update_on_demand_resources_build_settings(native_target, nil => old_odr_file_refs.keys)
474
476
  end
475
477
  old_target_odr_group&.remove_from_project
476
478
  return
@@ -480,17 +482,18 @@ module Pod
480
482
  current_file_refs = target_odr_group.recursive_children_groups.flat_map(&:files)
481
483
 
482
484
  added_file_refs = file_accessors.flat_map do |file_accessor|
483
- target_odr_files_refs = Hash[file_accessor.on_demand_resources.map do |tag, resources|
485
+ target_odr_files_refs = Hash[file_accessor.on_demand_resources.map do |tag, value|
484
486
  tag_group = target_odr_group[tag] || target_odr_group.new_group(tag)
485
- asset_tags_added << tag
486
- resources_file_refs = resources.map do |resource|
487
+ category_to_tags[value[:category]] ||= []
488
+ category_to_tags[value[:category]] << tag
489
+ resources_file_refs = value[:paths].map do |resource|
487
490
  odr_resource_file_ref = Pathname.new(resource).relative_path_from(sandbox.root)
488
491
  tag_group.find_file_by_path(odr_resource_file_ref.to_s) || tag_group.new_file(odr_resource_file_ref)
489
492
  end
490
493
  [tag, resources_file_refs]
491
494
  end]
492
- native_targets.each do |user_target|
493
- user_target.add_on_demand_resources(target_odr_files_refs)
495
+ native_targets.each do |native_target|
496
+ native_target.add_on_demand_resources(target_odr_files_refs)
494
497
  end
495
498
  target_odr_files_refs.values.flatten
496
499
  end
@@ -506,10 +509,42 @@ module Pod
506
509
  end
507
510
  target_odr_group.recursive_children_groups.each { |g| g.remove_from_project if g.empty? }
508
511
 
509
- unless asset_tags_added.empty?
510
- attributes = project.root_object.attributes
511
- attributes['KnownAssetTags'] = (attributes['KnownAssetTags'] ||= []) | asset_tags_added.to_a
512
- project.root_object.attributes = attributes
512
+ attributes = project.root_object.attributes
513
+ attributes['KnownAssetTags'] = (attributes['KnownAssetTags'] ||= []) | category_to_tags.values.flatten
514
+ project.root_object.attributes = attributes
515
+
516
+ native_targets.each do |native_target|
517
+ update_on_demand_resources_build_settings(native_target, category_to_tags)
518
+ end
519
+ end
520
+
521
+ def update_on_demand_resources_build_settings(native_target, category_to_tags)
522
+ %w[ON_DEMAND_RESOURCES_INITIAL_INSTALL_TAGS ON_DEMAND_RESOURCES_PREFETCH_ORDER].each do |category_key|
523
+ native_target.build_configurations.each do |c|
524
+ key = case category_key
525
+ when 'ON_DEMAND_RESOURCES_INITIAL_INSTALL_TAGS'
526
+ :initial_install
527
+ when 'ON_DEMAND_RESOURCES_PREFETCH_ORDER'
528
+ :prefetched
529
+ else
530
+ :download_on_demand
531
+ end
532
+ tags_for_category = (c.build_settings[category_key] || '').split
533
+ category_to_tags_dup = category_to_tags.dup
534
+ tags_to_add = category_to_tags_dup.delete(key) || []
535
+ tags_to_delete = category_to_tags_dup.values.flatten
536
+ tags_for_category = (tags_for_category + tags_to_add - tags_to_delete).flatten.compact.uniq
537
+ if tags_for_category.empty?
538
+ val = c.build_settings.delete(category_key)
539
+ native_target.project.mark_dirty! unless val.nil?
540
+ else
541
+ tags = tags_for_category.join(' ')
542
+ unless c.build_settings[category_key] == tags
543
+ c.build_settings[category_key] = tags
544
+ native_target.project.mark_dirty!
545
+ end
546
+ end
547
+ end
513
548
  end
514
549
  end
515
550
  end
@@ -596,10 +631,12 @@ module Pod
596
631
  output_paths_by_config = {}
597
632
  if use_input_output_paths
598
633
  target.resource_paths_by_config.each do |config, resource_paths|
599
- input_paths_key = XCFileListConfigKey.new(target.copy_resources_script_input_files_path(config), target.copy_resources_script_input_files_relative_path)
634
+ input_paths_key = XCFileListConfigKey.new(target.copy_resources_script_input_files_path(config),
635
+ target.copy_resources_script_input_files_relative_path)
600
636
  input_paths_by_config[input_paths_key] = [script_path] + resource_paths
601
637
 
602
- output_paths_key = XCFileListConfigKey.new(target.copy_resources_script_output_files_path(config), target.copy_resources_script_output_files_relative_path)
638
+ output_paths_key = XCFileListConfigKey.new(target.copy_resources_script_output_files_path(config),
639
+ target.copy_resources_script_output_files_relative_path)
603
640
  output_paths_by_config[output_paths_key] = TargetIntegrator.resource_output_paths(resource_paths)
604
641
  end
605
642
  end
@@ -607,7 +644,9 @@ module Pod
607
644
  native_targets.each do |native_target|
608
645
  # Static library targets cannot include resources. Skip this phase from being added instead.
609
646
  next if native_target.symbol_type == :static_library
610
- TargetIntegrator.create_or_update_copy_resources_script_phase_to_target(native_target, script_path, input_paths_by_config, output_paths_by_config)
647
+ TargetIntegrator.create_or_update_copy_resources_script_phase_to_target(native_target, script_path,
648
+ input_paths_by_config,
649
+ output_paths_by_config)
611
650
  end
612
651
  end
613
652
 
@@ -720,8 +759,8 @@ module Pod
720
759
  # The 'Pods' group would always be there for production code however for tests its sometimes not added.
721
760
  # This ensures its always present and makes it easier for existing and new tests.
722
761
  parent_odr_group = target.user_project.main_group['Pods'] || target.user_project.new_group('Pods')
723
- TargetIntegrator.add_on_demand_resources(target.sandbox, target.user_project, target.user_targets,
724
- library_file_accessors, parent_odr_group, target_odr_group_name)
762
+ TargetIntegrator.update_on_demand_resources(target.sandbox, target.user_project, target.user_targets,
763
+ library_file_accessors, parent_odr_group, target_odr_group_name)
725
764
  end
726
765
  end
727
766
 
@@ -62,7 +62,8 @@ module Pod
62
62
  # @param [Hash] info_plist_entries see #info_plist_entries
63
63
  # @param [String] product_basename see #product_basename
64
64
  #
65
- def initialize(sandbox, project, platform, subgroup_name, group_name, app_target_label, add_main: true, add_launchscreen_storyboard: platform == :ios, info_plist_entries: {}, product_basename: nil)
65
+ def initialize(sandbox, project, platform, subgroup_name, group_name, app_target_label, add_main: true,
66
+ add_launchscreen_storyboard: platform == :ios, info_plist_entries: {}, product_basename: nil)
66
67
  @sandbox = sandbox
67
68
  @project = project
68
69
  @platform = platform
@@ -271,17 +271,17 @@ module Pod
271
271
  fa.spec.test_specification? && pod_target.test_app_hosts_by_spec[fa.spec]&.first == app_spec
272
272
  end
273
273
  target_odr_group_name = "#{pod_target.label}-OnDemandResources"
274
- UserProjectIntegrator::TargetIntegrator.add_on_demand_resources(target.sandbox, native_target.project,
275
- native_target, file_accessors,
276
- parent_odr_group, target_odr_group_name)
274
+ UserProjectIntegrator::TargetIntegrator.update_on_demand_resources(target.sandbox, native_target.project,
275
+ native_target, file_accessors,
276
+ parent_odr_group, target_odr_group_name)
277
277
  end
278
278
 
279
279
  # Now add the ODRs of our own app spec declaration.
280
280
  file_accessor = target.file_accessors.find { |fa| fa.spec == app_spec }
281
281
  target_odr_group_name = "#{target.subspec_label(app_spec)}-OnDemandResources"
282
- UserProjectIntegrator::TargetIntegrator.add_on_demand_resources(target.sandbox, native_target.project,
283
- native_target, file_accessor,
284
- parent_odr_group, target_odr_group_name)
282
+ UserProjectIntegrator::TargetIntegrator.update_on_demand_resources(target.sandbox, native_target.project,
283
+ native_target, file_accessor,
284
+ parent_odr_group, target_odr_group_name)
285
285
  end
286
286
 
287
287
  # @return [String] the message that should be displayed for the target
@@ -48,17 +48,23 @@ module Pod
48
48
  # @param [Hash] additional_entries
49
49
  # any additional entries to include in this Info.plist file.
50
50
  #
51
+ # @param [String] build_setting_value
52
+ # an optional value to set for the `INFOPLIST_FILE` build setting on the
53
+ # native target. If none is specified then the value is calculated from the
54
+ # Info.plist path relative to the sandbox root.
55
+ #
51
56
  # @return [void]
52
57
  #
53
58
  def create_info_plist_file_with_sandbox(sandbox, path, native_target, version, platform,
54
- bundle_package_type = :fmwk, additional_entries: {})
59
+ bundle_package_type = :fmwk, additional_entries: {},
60
+ build_setting_value: nil)
55
61
  UI.message "- Generating Info.plist file at #{UI.path(path)}" do
56
62
  generator = Generator::InfoPlistFile.new(version, platform, bundle_package_type, additional_entries)
57
63
  update_changed_file(generator, path)
58
64
 
59
- relative_path_string = path.relative_path_from(sandbox.root).to_s
65
+ build_setting_value ||= path.relative_path_from(sandbox.root).to_s
60
66
  native_target.build_configurations.each do |c|
61
- c.build_settings['INFOPLIST_FILE'] = relative_path_string
67
+ c.build_settings['INFOPLIST_FILE'] = build_setting_value
62
68
  end
63
69
  end
64
70
  end
@@ -219,7 +219,7 @@ module Pod
219
219
  file_accessors.map(&:preserve_paths),
220
220
  file_accessors.map(&:readme),
221
221
  file_accessors.map(&:resources),
222
- file_accessors.flat_map { |f| f.on_demand_resources.values.flatten },
222
+ file_accessors.map(&:on_demand_resources_files),
223
223
  file_accessors.map(&:source_files),
224
224
  file_accessors.map(&:module_map),
225
225
  ]
@@ -334,20 +334,26 @@ module Pod
334
334
  resource_bundles.values.flatten
335
335
  end
336
336
 
337
- # @return [Hash{String => Array<Pathname>}] The paths of the on demand resources specified
338
- # keyed by their tag.
337
+ # @return [Hash{String => Hash] The expanded paths of the on demand resources specified
338
+ # keyed by their tag including their category.
339
339
  #
340
340
  def on_demand_resources
341
341
  result = {}
342
342
  spec_consumer.on_demand_resources.each do |tag_name, file_patterns|
343
- paths = expanded_paths(file_patterns,
343
+ paths = expanded_paths(file_patterns[:paths],
344
344
  :exclude_patterns => spec_consumer.exclude_files,
345
345
  :include_dirs => true)
346
- result[tag_name] = paths
346
+ result[tag_name] = { :paths => paths, :category => file_patterns[:category] }
347
347
  end
348
348
  result
349
349
  end
350
350
 
351
+ # @return [Array<Pathname>] The expanded paths of the on demand resources.
352
+ #
353
+ def on_demand_resources_files
354
+ on_demand_resources.values.flat_map { |v| v[:paths] }
355
+ end
356
+
351
357
  # @return [Pathname] The of the prefix header file of the specification.
352
358
  #
353
359
  def prefix_header
@@ -71,12 +71,15 @@ module Pod
71
71
  # The URL of the source.
72
72
  #
73
73
  def cdn_url?(url)
74
- return unless url =~ %r{^https?:\/\/}
74
+ return false unless url =~ %r{^https?:\/\/}
75
75
 
76
76
  uri_options = {}
77
77
 
78
78
  netrc_info = Netrc.read
79
- netrc_host = URI.parse(url).host
79
+ uri = URI.parse(url)
80
+ return false unless uri.userinfo.nil?
81
+
82
+ netrc_host = uri.host
80
83
  credentials = netrc_info[netrc_host]
81
84
  uri_options[:http_basic_authentication] = credentials if credentials
82
85
 
@@ -288,7 +288,7 @@ module Pod
288
288
  @on_demand_resources ||= begin
289
289
  pod_targets.flat_map do |pod_target|
290
290
  library_file_accessors = pod_target.file_accessors.select { |fa| fa.spec.library_specification? }
291
- library_file_accessors.flat_map { |fa| fa.on_demand_resources.values.flatten }
291
+ library_file_accessors.flat_map(&:on_demand_resources_files)
292
292
  end.uniq
293
293
  end
294
294
  end
@@ -203,7 +203,7 @@ module Pod
203
203
  end
204
204
  end
205
205
 
206
- # @return [Array<String>] The list of all files tracked.
206
+ # @return [Array<Pathname>] The list of all files tracked.
207
207
  #
208
208
  def all_files
209
209
  Sandbox::FileAccessor.all_files(file_accessors)
@@ -583,12 +583,21 @@ module Pod
583
583
  app_target = Pod::Generator::AppTargetHelper.add_app_target(app_project, consumer.platform_name, deployment_target)
584
584
  sandbox = Sandbox.new(config.sandbox_root)
585
585
  info_plist_path = app_project.path.dirname.+('App/App-Info.plist')
586
- Pod::Installer::Xcode::PodsProjectGenerator::TargetInstallerHelper.create_info_plist_file_with_sandbox(sandbox, info_plist_path, app_target, '1.0.0', Platform.new(consumer.platform_name), :appl)
586
+ Pod::Installer::Xcode::PodsProjectGenerator::TargetInstallerHelper.create_info_plist_file_with_sandbox(sandbox,
587
+ info_plist_path,
588
+ app_target,
589
+ '1.0.0',
590
+ Platform.new(consumer.platform_name),
591
+ :appl,
592
+ :build_setting_value => '$(SRCROOT)/App/App-Info.plist')
587
593
  Pod::Generator::AppTargetHelper.add_swift_version(app_target, derived_swift_version)
588
- # Lint will fail if a AppIcon is set but no image is found with such name
589
- # Happens only with Static Frameworks enabled but shouldn't be set anyway
590
594
  app_target.build_configurations.each do |config|
595
+ # Lint will fail if a AppIcon is set but no image is found with such name
596
+ # Happens only with Static Frameworks enabled but shouldn't be set anyway
591
597
  config.build_settings.delete('ASSETCATALOG_COMPILER_APPICON_NAME')
598
+ # Ensure this is set generally but we have seen an issue with ODRs:
599
+ # see: https://github.com/CocoaPods/CocoaPods/issues/10933
600
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = 'org.cocoapods.${PRODUCT_NAME:rfc1034identifier}'
592
601
  end
593
602
  app_project.save
594
603
  app_project.recreate_user_schemes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.0.beta.1
4
+ version: 1.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eloy Duran
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-08-09 00:00:00.000000000 Z
14
+ date: 2021-09-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: cocoapods-core
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 1.11.0.beta.1
22
+ version: 1.11.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 1.11.0.beta.1
29
+ version: 1.11.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: claide
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -541,11 +541,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
541
541
  version: '2.6'
542
542
  required_rubygems_version: !ruby/object:Gem::Requirement
543
543
  requirements:
544
- - - ">"
544
+ - - ">="
545
545
  - !ruby/object:Gem::Version
546
- version: 1.3.1
546
+ version: '0'
547
547
  requirements: []
548
- rubygems_version: 3.1.3
548
+ rubygems_version: 3.0.9
549
549
  signing_key:
550
550
  specification_version: 4
551
551
  summary: The Cocoa library package manager.