pindo 5.13.7 → 5.13.9

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: fbf53e39f861e030ec56923a9d913e95a6fabe16f25294ef2062c56d140347f1
4
- data.tar.gz: 12005518e7084709a61b87f7be6345181224cd6f1e6f6766200be52982c4f319
3
+ metadata.gz: f1f5b841b91a7c9548ae422e6b7c73db4104f9d55c1266937c2ca23e1480c30a
4
+ data.tar.gz: 42e0235ff47d8f1a4a6d3d461a47a2ab30a3b6e0666e2d9dac24811b72cc50c9
5
5
  SHA512:
6
- metadata.gz: 6ecb9148510a631ede407c1fb78a87eb6cd7c65c64f4ca5b0209da3a6f54f2ad7af067e6b5a7895cee1882fc3208446e635beecb2500fa8dbc1fd47533c91473
7
- data.tar.gz: 852957fbaf4834176bf868e78ce613e9f9d147019de3b2fc6cbf24f1bd0a7c31f95bfb776cbcf7d7d730c4b679154ab68c75c83a3759a4ecf39d9f2d0cf766e3
6
+ metadata.gz: '085884e89d114f0499c38d1c8b879452330023dac6bed14e89d4d5882c866729ea6efa6bef6318d12fea4d72d7626a5f47b41c6a6f5faa03ca06d8c4daa89426'
7
+ data.tar.gz: be7b3c4603946b117d1d6051556b92870a834cb57f71cbf1a3857b37f97791274e75b2a7bb98258a26a44d60d96b88dc44369397130dc8f290b81264708e262b
@@ -7,9 +7,11 @@ require 'pindo/module/android/android_build_helper'
7
7
  require 'pindo/module/android/android_config_helper'
8
8
  require 'pindo/module/task/task_manager'
9
9
  require 'pindo/module/task/model/git_tag_task'
10
- require 'pindo/module/task/model/unity_export_task'
10
+ require 'pindo/module/task/model/unity/unity_update_task'
11
+ require 'pindo/module/task/model/unity/unity_yoo_asset_task'
12
+ require 'pindo/module/task/model/unity/unity_export_task'
11
13
  require 'pindo/module/task/model/build_task'
12
- require 'pindo/module/task/model/jps_upload_task'
14
+ require 'pindo/module/task/model/jps/jps_upload_task'
13
15
 
14
16
  module Pindo
15
17
  class Command
@@ -61,7 +63,9 @@ module Pindo
61
63
  ['--proj=NAME', '指定上传到测试平台的项目名称'],
62
64
  ['--bundle_name=NAME', '指定Android Package Name(如com.example.app,会拉取对应配置)'],
63
65
  ['--upload', '编译后上传到测试平台(自动发送给自己)'],
64
- ['--send', '发送通知到测试群组(同时发送给自己)']
66
+ ['--send', '发送通知到测试群组(同时发送给自己)'],
67
+ ['--skiplib', '跳过Unity必备库更新(加快构建速度)'],
68
+ ['--skipyoo', '跳过YooAsset资源打包(加快构建速度)']
65
69
  ].concat(super)
66
70
  end
67
71
 
@@ -71,6 +75,8 @@ module Pindo
71
75
  @args_send_flag = argv.flag?('send', false)
72
76
  @args_proj_name = argv.option('proj')
73
77
  @args_bundle_name = argv.option('bundle_name')
78
+ @args_skip_lib = argv.flag?('skiplib', false)
79
+ @args_skip_yoo = argv.flag?('skipyoo', false)
74
80
 
75
81
 
76
82
  if @args_send_flag
@@ -146,24 +152,49 @@ module Pindo
146
152
  git_tag_task = Pindo::TaskSystem::GitTagTask.new(config[:project_path])
147
153
  tasks << git_tag_task
148
154
 
149
- # 2. Unity 导出任务(仅 Unity 工程)
155
+ # 2. Unity 任务链(仅 Unity 工程)
150
156
  if is_unity
151
157
  # 确定 Android 导出路径
152
158
  base_android_path = File.join(config[:project_path], "GoodPlatform", "BaseAndroid")
153
159
  android_path = File.join(config[:project_path], "GoodPlatform", "Android")
154
160
  android_export_path = File.exist?(base_android_path) ? base_android_path : android_path
155
161
 
162
+ # 记录上一个任务,用于依赖链
163
+ last_task = git_tag_task
164
+
165
+ # 2.1 Unity 更新必备库任务(可选)
166
+ unless @args_skip_lib
167
+ unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
168
+ project_path: config[:project_path]
169
+ )
170
+ unity_update_task.dependencies << last_task.id
171
+ tasks << unity_update_task
172
+ last_task = unity_update_task
173
+ end
174
+
175
+ # 2.2 Unity YooAsset 资源构建任务(可选,依赖上一个任务)
176
+ unless @args_skip_yoo
177
+ unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
178
+ 'android',
179
+ project_path: config[:project_path]
180
+ )
181
+ unity_yoo_task.dependencies << last_task.id
182
+ tasks << unity_yoo_task
183
+ last_task = unity_yoo_task
184
+ end
185
+
186
+ # 2.3 Unity 导出任务(依赖上一个任务)
156
187
  unity_context = {}
157
188
  unity_context[:project_name] = @args_proj_name if @args_proj_name
158
189
 
159
- unity_task = Pindo::TaskSystem::UnityExportTask.new(
190
+ unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
160
191
  'android',
161
192
  project_path: config[:project_path],
162
193
  export_path: android_export_path,
163
194
  context: unity_context
164
195
  )
165
- unity_task.dependencies << git_tag_task.id
166
- tasks << unity_task
196
+ unity_export_task.dependencies << last_task.id
197
+ tasks << unity_export_task
167
198
  end
168
199
 
169
200
  # 3. 构建任务
@@ -11,9 +11,12 @@ require 'pindo/config/ios_config_parser'
11
11
  require 'pindo/config/build_info_manager'
12
12
  require 'pindo/base/pindocontext'
13
13
  require 'pindo/module/task/task_manager'
14
- require 'pindo/module/task/model/unity_export_task'
14
+ require 'pindo/module/task/model/unity/unity_config_task'
15
+ require 'pindo/module/task/model/unity/unity_update_task'
16
+ require 'pindo/module/task/model/unity/unity_yoo_asset_task'
17
+ require 'pindo/module/task/model/unity/unity_export_task'
15
18
  require 'pindo/module/task/model/build_task'
16
- require 'pindo/module/task/model/jps_upload_task'
19
+ require 'pindo/module/task/model/jps/jps_upload_task'
17
20
  require 'pindo/options/options'
18
21
  require 'pindo/options/helpers/bundleid_selector'
19
22
 
@@ -96,7 +99,11 @@ module Pindo
96
99
  # 命令的选项列表
97
100
  def self.options
98
101
  # 转换为 CLAide 格式
99
- option_items.map { |item| item.to_claide_option }.concat(super)
102
+ option_items.map { |item| item.to_claide_option }.concat([
103
+ ['--skipconfig', '跳过Unity编译模式配置(加快构建速度)'],
104
+ ['--skiplib', '跳过Unity必备库更新(加快构建速度)'],
105
+ ['--skipyoo', '跳过YooAsset资源打包(加快构建速度)']
106
+ ]).concat(super)
100
107
  end
101
108
 
102
109
  def initialize(argv)
@@ -114,6 +121,9 @@ module Pindo
114
121
  @args_upload_flag = @options[:send] || @options[:upload]
115
122
  @args_proj_name = @options[:proj]
116
123
  @args_increase_flag = @options[:increase]
124
+ @args_skip_config = argv.flag?('skipconfig', false)
125
+ @args_skip_lib = argv.flag?('skiplib', false)
126
+ @args_skip_yoo = argv.flag?('skipyoo', false)
117
127
 
118
128
  super
119
129
  @additional_args = argv.remainder!
@@ -212,24 +222,60 @@ module Pindo
212
222
 
213
223
  tasks = []
214
224
 
215
- # 1. Unity 导出任务(仅 Unity 工程)
225
+ # 1. Unity 任务链(仅 Unity 工程)
216
226
  if is_unity
217
227
  # 确定 iOS 导出路径
218
228
  base_ios_path = File.join(config[:project_path], "GoodPlatform", "BaseiOS")
219
229
  ios_path = File.join(config[:project_path], "GoodPlatform", "iOS")
220
230
  ios_export_path = File.exist?(base_ios_path) ? base_ios_path : ios_path
221
231
 
232
+ # 记录上一个任务,用于依赖链
233
+ last_task = nil
234
+
235
+ # 1.1 Unity 配置编译模式任务(可选)
236
+ unless @args_skip_config
237
+ unity_config_task = Pindo::TaskSystem::UnityConfigTask.new(
238
+ 'release', # AdHoc 也使用 release 模式
239
+ project_path: config[:project_path]
240
+ )
241
+ tasks << unity_config_task
242
+ last_task = unity_config_task
243
+ end
244
+
245
+ # 1.2 Unity 更新必备库任务(可选)
246
+ unless @args_skip_lib
247
+ unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
248
+ project_path: config[:project_path]
249
+ )
250
+ unity_update_task.dependencies << last_task.id if last_task
251
+ tasks << unity_update_task
252
+ last_task = unity_update_task
253
+ end
254
+
255
+ # 1.3 Unity YooAsset 资源构建任务(可选,依赖上一个任务)
256
+ unless @args_skip_yoo
257
+ unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
258
+ 'ios',
259
+ project_path: config[:project_path]
260
+ )
261
+ unity_yoo_task.dependencies << last_task.id if last_task
262
+ tasks << unity_yoo_task
263
+ last_task = unity_yoo_task
264
+ end
265
+
266
+ # 1.4 Unity 导出任务(依赖上一个任务)
222
267
  unity_context = {}
223
268
  unity_context[:project_name] = @args_proj_name if @args_proj_name
224
269
 
225
- unity_task = Pindo::TaskSystem::UnityExportTask.new(
270
+ unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
226
271
  'ios',
227
272
  project_path: config[:project_path],
228
273
  export_path: ios_export_path,
229
274
  deploy_mode: 'adhoc', # AdHoc 使用 adhoc 模式
230
275
  context: unity_context
231
276
  )
232
- tasks << unity_task
277
+ unity_export_task.dependencies << last_task.id if last_task
278
+ tasks << unity_export_task
233
279
  end
234
280
 
235
281
  # 2. 构建任务(AdHoc 模式)
@@ -10,7 +10,10 @@ require 'pindo/module/xcode/xcode_build_helper'
10
10
  require 'pindo/config/ios_config_parser'
11
11
  require 'pindo/config/build_info_manager'
12
12
  require 'pindo/module/task/task_manager'
13
- require 'pindo/module/task/model/unity_export_task'
13
+ require 'pindo/module/task/model/unity/unity_config_task'
14
+ require 'pindo/module/task/model/unity/unity_update_task'
15
+ require 'pindo/module/task/model/unity/unity_yoo_asset_task'
16
+ require 'pindo/module/task/model/unity/unity_export_task'
14
17
  require 'pindo/module/task/model/build_task'
15
18
  require 'pindo/options/options'
16
19
 
@@ -64,7 +67,11 @@ module Pindo
64
67
  # 命令的选项列表
65
68
  def self.options
66
69
  # 转换为 CLAide 格式
67
- option_items.map { |item| item.to_claide_option }.concat(super)
70
+ option_items.map { |item| item.to_claide_option }.concat([
71
+ ['--skipconfig', '跳过Unity编译模式配置(加快构建速度)'],
72
+ ['--skiplib', '跳过Unity必备库更新(加快构建速度)'],
73
+ ['--skipyoo', '跳过YooAsset资源打包(加快构建速度)']
74
+ ]).concat(super)
68
75
  end
69
76
 
70
77
  def initialize(argv)
@@ -77,6 +84,9 @@ module Pindo
77
84
  # 保存参数到实例变量
78
85
  # 优先使用选项参数,如果没有则使用位置参数
79
86
  @args_bundle_id = @options[:bundleid] || positional_bundleid
87
+ @args_skip_config = argv.flag?('skipconfig', false)
88
+ @args_skip_lib = argv.flag?('skiplib', false)
89
+ @args_skip_yoo = argv.flag?('skipyoo', false)
80
90
 
81
91
  super(argv)
82
92
  end
@@ -166,20 +176,56 @@ module Pindo
166
176
 
167
177
  tasks = []
168
178
 
169
- # 1. Unity 导出任务(仅 Unity 工程)
179
+ # 1. Unity 任务链(仅 Unity 工程)
170
180
  if is_unity
171
181
  # 确定 iOS 导出路径
172
182
  base_ios_path = File.join(project_path, "GoodPlatform", "BaseiOS")
173
183
  ios_path = File.join(project_path, "GoodPlatform", "iOS")
174
184
  ios_export_path = File.exist?(base_ios_path) ? base_ios_path : ios_path
175
185
 
176
- unity_task = Pindo::TaskSystem::UnityExportTask.new(
186
+ # 记录上一个任务,用于依赖链
187
+ last_task = nil
188
+
189
+ # 1.1 Unity 配置编译模式任务(可选)
190
+ unless @args_skip_config
191
+ unity_config_task = Pindo::TaskSystem::UnityConfigTask.new(
192
+ 'release', # AppStore 使用 release 模式
193
+ project_path: project_path
194
+ )
195
+ tasks << unity_config_task
196
+ last_task = unity_config_task
197
+ end
198
+
199
+ # 1.2 Unity 更新必备库任务(可选)
200
+ unless @args_skip_lib
201
+ unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
202
+ project_path: project_path
203
+ )
204
+ unity_update_task.dependencies << last_task.id if last_task
205
+ tasks << unity_update_task
206
+ last_task = unity_update_task
207
+ end
208
+
209
+ # 1.3 Unity YooAsset 资源构建任务(可选,依赖上一个任务)
210
+ unless @args_skip_yoo
211
+ unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
212
+ 'ios',
213
+ project_path: project_path
214
+ )
215
+ unity_yoo_task.dependencies << last_task.id if last_task
216
+ tasks << unity_yoo_task
217
+ last_task = unity_yoo_task
218
+ end
219
+
220
+ # 1.4 Unity 导出任务(依赖上一个任务)
221
+ unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
177
222
  'ios',
178
223
  project_path: project_path,
179
224
  export_path: ios_export_path,
180
225
  deploy_mode: 'release' # AppStore 使用 release 模式
181
226
  )
182
- tasks << unity_task
227
+ unity_export_task.dependencies << last_task.id if last_task
228
+ tasks << unity_export_task
183
229
  end
184
230
 
185
231
  # 2. 构建任务
@@ -7,8 +7,8 @@ require 'pindo/config/ios_config_parser'
7
7
  require 'pindo/config/build_info_manager'
8
8
  require 'pindo/base/pindocontext'
9
9
  require 'pindo/module/task/task_manager'
10
- require 'pindo/module/task/model/ipa_local_resign_task'
11
- require 'pindo/module/task/model/jps_upload_task'
10
+ require 'pindo/module/task/model/resign/ipa_local_resign_task'
11
+ require 'pindo/module/task/model/jps/jps_upload_task'
12
12
  require 'pindo/options/options'
13
13
 
14
14
  module Pindo
@@ -10,9 +10,11 @@ require 'pindo/module/xcode/xcode_build_helper'
10
10
  require 'pindo/base/pindocontext'
11
11
  require 'pindo/module/task/task_manager'
12
12
  require 'pindo/module/task/model/git_tag_task'
13
- require 'pindo/module/task/model/unity_export_task'
13
+ require 'pindo/module/task/model/unity/unity_update_task'
14
+ require 'pindo/module/task/model/unity/unity_yoo_asset_task'
15
+ require 'pindo/module/task/model/unity/unity_export_task'
14
16
  require 'pindo/module/task/model/build_task'
15
- require 'pindo/module/task/model/jps_upload_task'
17
+ require 'pindo/module/task/model/jps/jps_upload_task'
16
18
  require 'pindo/options/options'
17
19
  require 'pindo/options/helpers/bundleid_selector'
18
20
  require 'pindo/config/build_info_manager'
@@ -92,23 +94,42 @@ module Pindo
92
94
  # 命令的选项列表
93
95
  def self.options
94
96
  # 转换为 CLAide 格式
95
- option_items.map { |item| item.to_claide_option }.concat(super)
97
+ option_items.map { |item| item.to_claide_option }.concat([
98
+ ['--skiplib', '跳过Unity必备库更新(加快构建速度)'],
99
+ ['--skipyoo', '跳过YooAsset资源打包(加快构建速度)']
100
+ ]).concat(super)
96
101
  end
97
102
 
98
103
  def initialize(argv)
104
+ # 检测是否是 help 请求(避免在 help 模式下执行交互式选择)
105
+ # 注意:不能使用 argv.flag?,因为会消费参数,导致父类获取不到
106
+ is_help = ARGV.include?('--help') || ARGV.include?('-h')
107
+
99
108
  # 先提取 build_type(因为 bundleid 的 value_block 需要用到它)
100
109
  @build_type = argv.option('build_type', 'dev')
101
110
 
102
- # 一行代码完成参数初始化(自动推导命令名、自动启用缓存)
103
- @options = initialize_options(argv)
111
+ # 只有在非 help 模式下才初始化参数(避免触发交互式选择)
112
+ if is_help
113
+ @options = {}
114
+ @args_send_flag = false
115
+ @args_upload_flag = false
116
+ @args_proj_name = nil
117
+ @args_bundle_id = nil
118
+ else
119
+ # 一行代码完成参数初始化(自动推导命令名、自动启用缓存)
120
+ @options = initialize_options(argv)
121
+
122
+ # 保存参数到实例变量
123
+ @build_type = @options[:build_type] || @build_type # 使用 options 中的值,如果没有则用之前提取的
124
+ @args_send_flag = @options[:send]
125
+ # send 依赖 upload:如果指定了 send,自动启用 upload
126
+ @args_upload_flag = @options[:send] || @options[:upload]
127
+ @args_proj_name = @options[:proj]
128
+ @args_bundle_id = @options[:bundleid]
129
+ end
104
130
 
105
- # 保存参数到实例变量
106
- @build_type = @options[:build_type] || @build_type # 使用 options 中的值,如果没有则用之前提取的
107
- @args_send_flag = @options[:send]
108
- # send 依赖 upload:如果指定了 send,自动启用 upload
109
- @args_upload_flag = @options[:send] || @options[:upload]
110
- @args_proj_name = @options[:proj]
111
- @args_bundle_id = @options[:bundleid]
131
+ @args_skip_lib = argv.flag?('skiplib', false)
132
+ @args_skip_yoo = argv.flag?('skipyoo', false)
112
133
 
113
134
  super
114
135
  @additional_args = argv.remainder!
@@ -170,25 +191,50 @@ module Pindo
170
191
  git_tag_task = Pindo::TaskSystem::GitTagTask.new(config[:project_path])
171
192
  tasks << git_tag_task
172
193
 
173
- # 2. Unity 导出任务(仅 Unity 工程)
194
+ # 2. Unity 任务链(仅 Unity 工程)
174
195
  if is_unity
175
196
  # 确定 iOS 导出路径
176
197
  base_ios_path = File.join(config[:project_path], "GoodPlatform", "BaseiOS")
177
198
  ios_path = File.join(config[:project_path], "GoodPlatform", "iOS")
178
199
  ios_export_path = File.exist?(base_ios_path) ? base_ios_path : ios_path
179
200
 
201
+ # 记录上一个任务,用于依赖链
202
+ last_task = git_tag_task
203
+
204
+ # 2.1 Unity 更新必备库任务(可选)
205
+ unless @args_skip_lib
206
+ unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
207
+ project_path: config[:project_path]
208
+ )
209
+ unity_update_task.dependencies << last_task.id
210
+ tasks << unity_update_task
211
+ last_task = unity_update_task
212
+ end
213
+
214
+ # 2.2 Unity YooAsset 资源构建任务(可选,依赖上一个任务)
215
+ unless @args_skip_yoo
216
+ unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
217
+ 'ios',
218
+ project_path: config[:project_path]
219
+ )
220
+ unity_yoo_task.dependencies << last_task.id
221
+ tasks << unity_yoo_task
222
+ last_task = unity_yoo_task
223
+ end
224
+
225
+ # 2.3 Unity 导出任务(依赖上一个任务)
180
226
  unity_context = {}
181
227
  unity_context[:project_name] = @args_proj_name if @args_proj_name
182
228
 
183
- unity_task = Pindo::TaskSystem::UnityExportTask.new(
229
+ unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
184
230
  'ios',
185
231
  project_path: config[:project_path],
186
232
  export_path: ios_export_path,
187
233
  deploy_mode: @build_type, # 根据 build_type 传递部署模式
188
234
  context: unity_context
189
235
  )
190
- unity_task.dependencies << git_tag_task.id
191
- tasks << unity_task
236
+ unity_export_task.dependencies << last_task.id
237
+ tasks << unity_export_task
192
238
  end
193
239
 
194
240
  # 3. 构建任务
@@ -6,7 +6,7 @@ require 'pindo/module/pgyer/pgyerhelper'
6
6
  require 'pindo/module/build/git_repo_helper'
7
7
  require 'pindo/module/build/build_helper'
8
8
  require 'pindo/module/task/task_manager'
9
- require 'pindo/module/task/model/jps_upload_task'
9
+ require 'pindo/module/task/model/jps/jps_upload_task'
10
10
  require 'pindo/module/task/model/git_tag_task'
11
11
 
12
12
  module Pindo
@@ -9,8 +9,10 @@ require 'pindo/module/build/git_repo_helper'
9
9
  require 'pindo/module/task/pindo_task'
10
10
  require 'pindo/module/task/task_manager'
11
11
  require 'pindo/module/task/model/build_task'
12
- require 'pindo/module/task/model/unity_export_task'
13
- require 'pindo/module/task/model/jps_upload_task'
12
+ require 'pindo/module/task/model/unity/unity_update_task'
13
+ require 'pindo/module/task/model/unity/unity_yoo_asset_task'
14
+ require 'pindo/module/task/model/unity/unity_export_task'
15
+ require 'pindo/module/task/model/jps/jps_upload_task'
14
16
  require 'pindo/module/task/model/git_tag_task'
15
17
  require 'pindo/config/build_info_manager'
16
18
  require 'pindo/config/ios_config_parser'
@@ -78,6 +80,8 @@ module Pindo
78
80
  ['--adhoc', '使用AdHoc证书打包iOS(默认使用Dev证书)'],
79
81
  ['--deploy', '使用发布证书打包iOS'],
80
82
  ['--release', '使用Release模式构建Android(默认使用Debug)'],
83
+ ['--skiplib', '跳过Unity必备库更新(加快构建速度)'],
84
+ ['--skipyoo', '跳过YooAsset资源打包(加快构建速度)']
81
85
  ].concat(super)
82
86
  end
83
87
 
@@ -93,6 +97,8 @@ module Pindo
93
97
  @args_bundle_id = argv.option('bundleid')
94
98
  @args_bundle_name = argv.option('bundle_name')
95
99
  @args_types = argv.option('types')
100
+ @args_skip_lib = argv.flag?('skiplib', false)
101
+ @args_skip_yoo = argv.flag?('skipyoo', false)
96
102
 
97
103
  # 如果开启 send,自动开启 upload
98
104
  if @args_send_flag
@@ -137,7 +143,7 @@ module Pindo
137
143
  pindo_project_dir = Dir.pwd
138
144
 
139
145
  # 检查是否是Unity工程
140
- unity_helper = Pindo::Client::UnityHelper.share_instance
146
+ unity_helper = Pindo::Unity::UnityHelper.share_instance
141
147
  unless unity_helper.unity_project?(pindo_project_dir)
142
148
  raise Informative, "当前目录不是Unity工程,请在Unity工程根目录下执行此命令"
143
149
  end
@@ -173,17 +179,48 @@ module Pindo
173
179
  git_tag_task = Pindo::TaskSystem::GitTagTask.new(Dir.pwd)
174
180
  all_tasks << git_tag_task
175
181
 
176
- # 第一步:为每个平台创建导出和构建任务
182
+ # 记录依赖任务(用于后续平台任务的依赖链)
183
+ common_dependency_task = git_tag_task
184
+
185
+ # 第一步:创建 Unity 更新任务(所有平台共享,可选)
186
+ unless @args_skip_lib
187
+ unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
188
+ project_path: Dir.pwd
189
+ )
190
+ unity_update_task.dependencies << common_dependency_task.id
191
+ all_tasks << unity_update_task
192
+ common_dependency_task = unity_update_task
193
+ end
194
+
195
+ # 存储每个平台的 YooAsset 任务(每个平台有自己的 YooAsset 任务)
196
+ platform_yoo_tasks = {}
197
+
198
+ # 第二步:为每个平台创建导出和构建任务
177
199
  selected_platforms.each do |platform|
178
200
  platform_config = all_platform_configs[platform]
179
201
 
180
- # 1. 创建 Unity 导出任务(依赖 Git 标签任务)
181
- unity_task = create_unity_export_task(platform, all_platform_configs)
182
- unity_task.dependencies << git_tag_task.id
183
- all_tasks << unity_task
202
+ # 记录当前平台的依赖任务
203
+ platform_dependency_task = common_dependency_task
204
+
205
+ # 2.1 创建 Unity YooAsset 资源构建任务(可选,依赖共同任务)
206
+ unless @args_skip_yoo
207
+ unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
208
+ platform,
209
+ project_path: Dir.pwd
210
+ )
211
+ unity_yoo_task.dependencies << platform_dependency_task.id
212
+ all_tasks << unity_yoo_task
213
+ platform_yoo_tasks[platform] = unity_yoo_task
214
+ platform_dependency_task = unity_yoo_task
215
+ end
216
+
217
+ # 2.2 创建 Unity 导出任务(依赖上一个任务)
218
+ unity_export_task = create_unity_export_task(platform, all_platform_configs)
219
+ unity_export_task.dependencies << platform_dependency_task.id
220
+ all_tasks << unity_export_task
184
221
 
185
- # 2. 创建构建任务(依赖导出任务)
186
- build_task = create_build_task(platform, platform_config, all_platform_configs, unity_task)
222
+ # 2.3 创建构建任务(依赖导出任务)
223
+ build_task = create_build_task(platform, platform_config, all_platform_configs, unity_export_task)
187
224
  all_tasks << build_task
188
225
  platform_build_tasks[platform] = build_task
189
226
  end
@@ -7,9 +7,11 @@ require 'pindo/module/unity/unity_helper'
7
7
  require 'pindo/module/build/build_helper'
8
8
  require 'pindo/module/task/task_manager'
9
9
  require 'pindo/module/task/model/git_tag_task'
10
- require 'pindo/module/task/model/unity_export_task'
10
+ require 'pindo/module/task/model/unity/unity_update_task'
11
+ require 'pindo/module/task/model/unity/unity_yoo_asset_task'
12
+ require 'pindo/module/task/model/unity/unity_export_task'
11
13
  require 'pindo/module/task/model/build_task'
12
- require 'pindo/module/task/model/jps_upload_task'
14
+ require 'pindo/module/task/model/jps/jps_upload_task'
13
15
 
14
16
  module Pindo
15
17
  class Command
@@ -65,19 +67,23 @@ module Pindo
65
67
  # 发送通知
66
68
  ['--send', '上传成功后发送测试通知'],
67
69
  # 编译完成后再本地打开webgl包
68
- ['--run', '编译完成后再本地打开webgl包']
70
+ ['--run', '编译完成后再本地打开webgl包'],
71
+ ['--skiplib', '跳过Unity必备库更新(加快构建速度)'],
72
+ ['--skipyoo', '跳过YooAsset资源打包(加快构建速度)']
69
73
  ].concat(super)
70
74
  end
71
75
 
72
76
  def initialize(argv)
73
77
 
74
78
  @args_deploy_flag = argv.flag?('deploy', false)
75
- @args_adhoc_flag = argv.flag?('adhoc', false)
76
- @args_upload_flag = argv.flag?('upload', false)
77
- @args_send_flag = argv.flag?('send', false)
78
- @args_proj_name = argv.option('proj')
79
+ @args_adhoc_flag = argv.flag?('adhoc', false)
80
+ @args_upload_flag = argv.flag?('upload', false)
81
+ @args_send_flag = argv.flag?('send', false)
82
+ @args_proj_name = argv.option('proj')
79
83
  @args_bundle_id = argv.option('bundleid')
80
84
  @args_run_flag = argv.flag?('run', false)
85
+ @args_skip_lib = argv.flag?('skiplib', false)
86
+ @args_skip_yoo = argv.flag?('skipyoo', false)
81
87
 
82
88
  if @args_send_flag
83
89
  @args_upload_flag = true
@@ -197,7 +203,31 @@ module Pindo
197
203
  tasks << git_tag_task
198
204
  end
199
205
 
200
- # 2. Unity 导出任务
206
+ # 记录上一个任务,用于依赖链
207
+ last_task = tasks.first
208
+
209
+ # 2. Unity 更新必备库任务(可选)
210
+ unless @args_skip_lib
211
+ unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
212
+ project_path: config[:project_path]
213
+ )
214
+ unity_update_task.dependencies << last_task.id if last_task
215
+ tasks << unity_update_task
216
+ last_task = unity_update_task
217
+ end
218
+
219
+ # 3. Unity YooAsset 资源构建任务(可选,依赖上一个任务)
220
+ unless @args_skip_yoo
221
+ unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
222
+ 'web',
223
+ project_path: config[:project_path]
224
+ )
225
+ unity_yoo_task.dependencies << last_task.id if last_task
226
+ tasks << unity_yoo_task
227
+ last_task = unity_yoo_task
228
+ end
229
+
230
+ # 4. Unity 导出任务(依赖上一个任务)
201
231
  # Web 平台导出路径
202
232
  web_export_path = File.join(config[:project_path], "GoodPlatform", "WebGL")
203
233
 
@@ -205,16 +235,16 @@ module Pindo
205
235
  unity_context[:project_name] = @args_proj_name if @args_proj_name
206
236
  unity_context[:index_count] = config[:index_count]
207
237
 
208
- unity_task = Pindo::TaskSystem::UnityExportTask.new(
238
+ unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
209
239
  'web',
210
240
  project_path: config[:project_path],
211
241
  export_path: web_export_path,
212
242
  context: unity_context
213
243
  )
214
- unity_task.dependencies << tasks.first.id if tasks.any?
215
- tasks << unity_task
244
+ unity_export_task.dependencies << last_task.id if last_task
245
+ tasks << unity_export_task
216
246
 
217
- # 3. 构建任务(Web 只需要检查输出)
247
+ # 5. 构建任务(Web 只需要检查输出)
218
248
  build_task = Pindo::TaskSystem::BuildTask.create_task(
219
249
  platform: :web,
220
250
  mode: :dev,
@@ -227,10 +257,10 @@ module Pindo
227
257
  workflow_info: config[:workflow_info]
228
258
  }
229
259
  )
230
- build_task.dependencies << unity_task.id
260
+ build_task.dependencies << unity_export_task.id
231
261
  tasks << build_task
232
262
 
233
- # 4. 上传任务(如果需要)
263
+ # 6. 上传任务(如果需要)
234
264
  if @args_upload_flag
235
265
  # WebGL 输出路径: GoodPlatform/WebGL/build
236
266
  webgl_build_path = File.join(config[:project_path], 'GoodPlatform', 'WebGL', 'build')
@@ -31,7 +31,7 @@ module Pindo
31
31
  def initialize(project_path, options = {})
32
32
  @project_path = project_path
33
33
 
34
- super("Git 标签检查", options)
34
+ super("Git仓库打标签", options)
35
35
  end
36
36
 
37
37
  def validate