cocoapods-podgenerate 0.1.11 → 0.1.12
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: 4ff95024148a86a27ad23b6b884f1bfda2b1bac59e4c0274ac6b53dac16504fa
|
|
4
|
+
data.tar.gz: 6a1fbb763cc83d3dd9245eaa2ae38877f4a4e784fef6651f6003e13b69ab0759
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8b5840fbee3dac260a6673f870dfc7ce1bd1f57c47b71e055b9eee7bdbd1cb5361fe65c06702f9f4589fe3aae4475e31b9cc167c34708d49770c56aecacaa4ab
|
|
7
|
+
data.tar.gz: a74db8fc1218a2ae364bb15bb200c8b51692515bffe57322295567d9e971680a59efa60f46ce380db1a9982ff545255ba049df9efa034bfd1f3d0f3811a25227
|
|
@@ -110,6 +110,13 @@ module Pod
|
|
|
110
110
|
# 清理沙盒中残留的文件
|
|
111
111
|
Pod::Installer::SandboxDirCleaner.new(sandbox, pod_targets, aggregate_targets).clean!
|
|
112
112
|
|
|
113
|
+
# 跳过路径修复: touch Pods project.pbxproj 让 Xcode 感知到变化
|
|
114
|
+
# 否则 Xcode 的 Dynamic Project Reloading 不会触发
|
|
115
|
+
pods_pbxproj = File.join(sandbox.project_path.to_s, 'project.pbxproj')
|
|
116
|
+
if File.file?(pods_pbxproj)
|
|
117
|
+
FileUtils.touch(pods_pbxproj)
|
|
118
|
+
end
|
|
119
|
+
|
|
113
120
|
# H1 修复: 当没有目标需要生成时,跳过 update_project_cache 调用
|
|
114
121
|
# @target_installation_results 仅在 create_and_save_projects 内设置,
|
|
115
122
|
# 在跳过路径上始终为 nil,回退到空 InstallationResults.new({}, {})
|
|
@@ -75,26 +75,38 @@ module Pod
|
|
|
75
75
|
# 增量 + 并行保存项目
|
|
76
76
|
#
|
|
77
77
|
# 流程:
|
|
78
|
-
# 1.
|
|
79
|
-
# 2.
|
|
80
|
-
# 3.
|
|
78
|
+
# 1. SHA256 摘要比对,分出变更和未变更项目
|
|
79
|
+
# 2. 未变更项目:touch pbxproj 更新时间戳(触发 Xcode 动态刷新)
|
|
80
|
+
# 3. 变更项目:排序后并行保存
|
|
81
81
|
#
|
|
82
82
|
# 【Bug 修复 L1】
|
|
83
|
-
# 只有当 old_digest 和 current_digest 都非 nil
|
|
83
|
+
# 只有当 old_digest 和 current_digest 都非 nil 且相等时才跳过保存。
|
|
84
84
|
# 如果任一为 nil(例如文件不可读),一律重新保存以确保项目完整性。
|
|
85
85
|
#
|
|
86
|
+
# 【Xcode 动态刷新】
|
|
87
|
+
# v0.1.12 修复:未变更的项目也需要 touch pbxproj 文件,
|
|
88
|
+
# 否则 Xcode 不会触发 Dynamic Project Reloading(项目树不刷新)。
|
|
89
|
+
#
|
|
86
90
|
# @param projects [Array<Project>] 要保存的项目列表
|
|
87
91
|
def save_projects(projects)
|
|
88
|
-
to_save =
|
|
92
|
+
to_save = []
|
|
93
|
+
unchanged = []
|
|
94
|
+
projects.each do |project|
|
|
89
95
|
old = @project_digests[project.object_id]
|
|
90
96
|
cur = digest_pbxproj(project)
|
|
91
97
|
if old && cur && old == cur
|
|
92
|
-
|
|
93
|
-
false
|
|
98
|
+
unchanged << project
|
|
94
99
|
else
|
|
95
|
-
|
|
100
|
+
to_save << project
|
|
96
101
|
end
|
|
97
102
|
end
|
|
103
|
+
|
|
104
|
+
# 先 touch 未变更项目(轻量操作,触发 Xcode 动态刷新)
|
|
105
|
+
unless unchanged.empty?
|
|
106
|
+
Pod::UI.message "- Touching #{unchanged.size} unchanged projects for Xcode refresh"
|
|
107
|
+
unchanged.each { |p| touch_pbxproj(p) }
|
|
108
|
+
end
|
|
109
|
+
|
|
98
110
|
return if to_save.empty?
|
|
99
111
|
|
|
100
112
|
# 排序(串行 — sort 操作轻量,并行开销反而更大)
|
|
@@ -262,6 +274,24 @@ module Pod
|
|
|
262
274
|
nil
|
|
263
275
|
end
|
|
264
276
|
|
|
277
|
+
# touch 项目的 pbxproj 文件,更新修改时间戳
|
|
278
|
+
#
|
|
279
|
+
# Xcode 的 Dynamic Project Reloading 通过检测 xcodeproj 内
|
|
280
|
+
# project.pbxproj 的修改时间来触发。当 SHA256 摘要未变化时
|
|
281
|
+
# 跳过 save 会导致 Xcode 无法感知变化,项目树不刷新。
|
|
282
|
+
# 本方法即使内容不变也更新文件修改时间。
|
|
283
|
+
#
|
|
284
|
+
# @param project [Project] Xcodeproj 项目
|
|
285
|
+
def touch_pbxproj(project)
|
|
286
|
+
path = project.path
|
|
287
|
+
return unless path
|
|
288
|
+
pbx_path = path.to_s.end_with?('.xcodeproj') ? File.join(path.to_s, 'project.pbxproj') : path.to_s
|
|
289
|
+
return unless File.file?(pbx_path)
|
|
290
|
+
FileUtils.touch(pbx_path)
|
|
291
|
+
rescue StandardError
|
|
292
|
+
nil
|
|
293
|
+
end
|
|
294
|
+
|
|
265
295
|
# 计算线程池大小
|
|
266
296
|
def compute_pool_size
|
|
267
297
|
[[Etc.nprocessors - 1, 2].max, 16].min
|