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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e26747a73dfa47b5379d698b521f08edfe4daa0fb72d1b298eeacb45db40d0c5
|
|
4
|
+
data.tar.gz: 6c1cdd4dd46bdca0107da545916c1f8caf7300eba9883010e383d7897d5472ed
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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 和
|
|
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 和
|
|
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
|
-
#
|
|
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