pindo 5.8.3 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 140028c6728ecb94474c89ca0f661ce55c7c51251a01409a6b346b908c7ce291
4
- data.tar.gz: 50fcde757dee3bca2231e2f9d4b945a7a3b769cafd6738a0b94bd50985f9781f
3
+ metadata.gz: e26747a73dfa47b5379d698b521f08edfe4daa0fb72d1b298eeacb45db40d0c5
4
+ data.tar.gz: 6c1cdd4dd46bdca0107da545916c1f8caf7300eba9883010e383d7897d5472ed
5
5
  SHA512:
6
- metadata.gz: cdef0694dd7254e7b5ee11d8568637bd2497627186e46395d1aab08934c082e6a247ba1416d04e58e123242f3b7920de06962d04fbdc282bf886df37292fb7f0
7
- data.tar.gz: e39cf03c3a05e6bed5738759d3c882b1c18f037a7b67627e120f3fa84b4e2e0d534a73230178aaeeebc98d22657ecebeb5390d44f9b6dd2db8652f01ff953381
6
+ metadata.gz: 2bfa1a08f4bfca1704f240d4ee4517e1a45684dc38c84b91262f87203cf0768445834b75f2c951950782a93a66beb7e616e5c38329f8c38795d92e4b4c93e1d4
7
+ data.tar.gz: 395233f028b3df2350a442ab8ddebbe8514ced5f56f7d14229a6dd09b044dbffc4900848a43fe9b0e3ce8a66f63248e9e9635fe0b8cde32275e799070b644e62
@@ -160,14 +160,16 @@ module Pindo
160
160
  # ===== 使用 workflow 配置更新项目 =====
161
161
  if workflow_info && workflow_info[:package_name]
162
162
  package_name = workflow_info[:package_name]
163
+ project_id = app_info_obj ? app_info_obj["id"] : nil
163
164
 
164
165
  puts "\n使用工作流配置更新 iOS 项目:"
165
166
  puts " Package Name: #{package_name}"
166
167
 
167
- # 一次性更新 Display Name、Bundle ID 和 URL Schemes
168
+ # 一次性更新 Display Name、Bundle ID、URL Schemes JPS 快捷操作
168
169
  Pindo::XcodeBuildConfig.update_project_with_packagename(
169
170
  project_dir: pindo_project_dir,
170
- package_name: package_name
171
+ package_name: package_name,
172
+ project_id: project_id
171
173
  )
172
174
  else
173
175
  raise Informative, "未获取到工作流信息"
@@ -124,14 +124,16 @@ module Pindo
124
124
  # ===== 使用 workflow 配置更新项目 =====
125
125
  if workflow_info && workflow_info[:package_name]
126
126
  package_name = workflow_info[:package_name]
127
+ project_id = app_info_obj ? app_info_obj["id"] : nil
127
128
 
128
129
  puts "\n使用工作流配置更新 iOS 项目:"
129
130
  puts " Package Name: #{package_name}"
130
131
 
131
- # 一次性更新 Display Name、Bundle ID 和 URL Schemes
132
+ # 一次性更新 Display Name、Bundle ID、URL Schemes JPS 快捷操作
132
133
  Pindo::XcodeBuildConfig.update_project_with_packagename(
133
134
  project_dir: pindo_project_dir,
134
- package_name: package_name
135
+ package_name: package_name,
136
+ project_id: project_id
135
137
  )
136
138
  else
137
139
  raise Informative, "未获取到工作流信息"
@@ -206,7 +206,7 @@ module Pindo
206
206
 
207
207
  project_obj.targets.each do |target|
208
208
 
209
- if target.product_type.include?(Xcodeproj::Constants::PRODUCT_TYPE_UTI[:framework]) || target.product_type.include?(Xcodeproj::Constants::PRODUCT_TYPE_UTI[:dynamic_library]) ||
209
+ if target.product_type.include?(Xcodeproj::Constants::PRODUCT_TYPE_UTI[:framework]) || target.product_type.include?(Xcodeproj::Constants::PRODUCT_TYPE_UTI[:dynamic_library]) ||
210
210
  target.product_type.include?(Xcodeproj::Constants::PRODUCT_TYPE_UTI[:static_library]) || target.product_type.include?(Xcodeproj::Constants::PRODUCT_TYPE_UTI[:bundle])
211
211
  next
212
212
  end
@@ -236,7 +236,19 @@ module Pindo
236
236
  if !temp_info.nil? && !temp_info.empty?
237
237
  info_plist_path = File.join(new_project_dir, temp_info)
238
238
  if !File.exist?(info_plist_path)
239
- raise Informative, "Missing Target #{target.name.to_s} Info.plist!!! #{info_plist_path} Modify Info.plist Error !!!"
239
+ raise Informative, "Missing Target #{target.name.to_s} Info.plist!!! #{info_plist_path} Modify Info.plist Error !!!"
240
+ end
241
+
242
+ # 修改 Info.plist 中的 CFBundleIdentifier 使用宏变量
243
+ # 由于 PRODUCT_BUNDLE_IDENTIFIER 已在 config_project_cert 中设置
244
+ # Info.plist 应该引用宏变量而非硬编码
245
+ info_plist_dict = Xcodeproj::Plist.read_from_path(info_plist_path)
246
+ current_bundle_id = info_plist_dict["CFBundleIdentifier"]
247
+
248
+ # 如果不是宏变量,则设置为使用 PRODUCT_BUNDLE_IDENTIFIER 宏
249
+ if current_bundle_id != "$(PRODUCT_BUNDLE_IDENTIFIER)"
250
+ info_plist_dict["CFBundleIdentifier"] = "$(PRODUCT_BUNDLE_IDENTIFIER)"
251
+ Xcodeproj::Plist.write_to_path(info_plist_dict, info_plist_path)
240
252
  end
241
253
 
242
254
  if target.product_type.to_s.eql?(Xcodeproj::Constants::PRODUCT_TYPE_UTI[:application]) then
@@ -12,8 +12,9 @@ module Pindo
12
12
  # 优化版本:只读写一次plist文件,提高性能
13
13
  # @param project_dir [String] iOS项目目录路径
14
14
  # @param package_name [String] 工作流的package_name(如:"Test Demo")
15
+ # @param project_id [String] JPS项目ID(可选,用于添加快捷操作)
15
16
  # @return [Boolean] 是否成功更新
16
- def self.update_project_with_packagename(project_dir: nil, package_name: nil)
17
+ def self.update_project_with_packagename(project_dir: nil, package_name: nil, project_id: nil)
17
18
  raise ArgumentError, "项目目录不能为空" if project_dir.nil?
18
19
  raise ArgumentError, "Package Name不能为空" if package_name.nil?
19
20
 
@@ -66,10 +67,36 @@ module Pindo
66
67
  puts " ✓ 已添加URL Scheme: #{bundle_scheme} (基于 Bundle ID)"
67
68
  end
68
69
 
70
+ # 4. 添加 JPS 快捷操作(UIApplicationShortcutItems)
71
+ if project_id && !project_id.to_s.empty?
72
+ # 创建或获取 UIApplicationShortcutItems 数组
73
+ info_plist_dict["UIApplicationShortcutItems"] ||= []
74
+
75
+ # 构建快捷操作类型
76
+ shortcut_type = "jps_project?#{project_id}"
77
+
78
+ # 检查是否已存在相同的快捷操作
79
+ existing_shortcut = info_plist_dict["UIApplicationShortcutItems"].find do |item|
80
+ item["UIApplicationShortcutItemType"] == shortcut_type
81
+ end
82
+
83
+ unless existing_shortcut
84
+ jps_shortcut = {
85
+ "UIApplicationShortcutItemType" => shortcut_type,
86
+ "UIApplicationShortcutItemTitle" => "访问 JPS 详情",
87
+ "UIApplicationShortcutItemIconType" => "UIApplicationShortcutIconTypeBookmark"
88
+ }
89
+ info_plist_dict["UIApplicationShortcutItems"] << jps_shortcut
90
+ puts " ✓ 已添加 JPS 快捷操作: #{shortcut_type}"
91
+ else
92
+ puts " ✓ JPS 快捷操作已存在: #{shortcut_type}"
93
+ end
94
+ end
95
+
69
96
  # 一次性写入plist
70
97
  Xcodeproj::Plist.write_to_path(info_plist_dict, info_plist_path)
71
98
 
72
- # 4. 更新 Xcode 项目中的 PRODUCT_BUNDLE_IDENTIFIER
99
+ # 5. 更新 Xcode 项目中的 PRODUCT_BUNDLE_IDENTIFIER
73
100
  if app_target
74
101
  app_target.build_configurations.each do |config|
75
102
  config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = final_bundle_id
data/lib/pindo/version.rb CHANGED
@@ -6,7 +6,7 @@ require 'time'
6
6
 
7
7
  module Pindo
8
8
 
9
- VERSION = "5.8.3"
9
+ VERSION = "5.9.0"
10
10
 
11
11
  class VersionCheck
12
12
  RUBYGEMS_API = 'https://rubygems.org/api/v1/gems/pindo.json'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pindo
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.8.3
4
+ version: 5.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - wade