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 +4 -4
- data/lib/pindo/command/android/autobuild.rb +38 -7
- data/lib/pindo/command/appstore/adhocbuild.rb +52 -6
- data/lib/pindo/command/appstore/autobuild.rb +51 -5
- data/lib/pindo/command/appstore/autoresign.rb +2 -2
- data/lib/pindo/command/ios/autobuild.rb +62 -16
- data/lib/pindo/command/jps/upload.rb +1 -1
- data/lib/pindo/command/unity/autobuild.rb +47 -10
- data/lib/pindo/command/web/autobuild.rb +44 -14
- data/lib/pindo/module/task/model/git_tag_task.rb +1 -1
- data/lib/pindo/module/task/model/{jps_upload_task.rb → jps/jps_upload_task.rb} +2 -2
- data/lib/pindo/module/task/model/{ipa_local_resign_task.rb → resign/ipa_local_resign_task.rb} +2 -2
- data/lib/pindo/module/task/model/{jps_resign_task.rb → resign/jps_resign_task.rb} +2 -2
- data/lib/pindo/module/task/model/unity/unity_config_task.rb +107 -0
- data/lib/pindo/module/task/model/{unity_export_task.rb → unity/unity_export_task.rb} +71 -74
- data/lib/pindo/module/task/model/unity/unity_update_task.rb +94 -0
- data/lib/pindo/module/task/model/unity/unity_yoo_asset_task.rb +155 -0
- data/lib/pindo/module/task/model/unity_task.rb +113 -0
- data/lib/pindo/module/task/task_manager.rb +9 -1
- data/lib/pindo/module/unity/unity_command_helper.rb +188 -0
- data/lib/pindo/module/unity/unity_env_helper.rb +208 -0
- data/lib/pindo/module/unity/unity_helper.rb +189 -746
- data/lib/pindo/module/unity/unity_proc_helper.rb +390 -0
- data/lib/pindo/version.rb +1 -1
- metadata +12 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f1f5b841b91a7c9548ae422e6b7c73db4104f9d55c1266937c2ca23e1480c30a
|
|
4
|
+
data.tar.gz: 42e0235ff47d8f1a4a6d3d461a47a2ab30a3b6e0666e2d9dac24811b72cc50c9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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/
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
166
|
-
tasks <<
|
|
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/
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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/
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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/
|
|
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(
|
|
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
|
-
|
|
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
|
-
@
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
191
|
-
tasks <<
|
|
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/
|
|
13
|
-
require 'pindo/module/task/model/
|
|
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::
|
|
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
|
-
#
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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,
|
|
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/
|
|
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
|
-
#
|
|
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
|
-
|
|
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
|
-
|
|
215
|
-
tasks <<
|
|
244
|
+
unity_export_task.dependencies << last_task.id if last_task
|
|
245
|
+
tasks << unity_export_task
|
|
216
246
|
|
|
217
|
-
#
|
|
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 <<
|
|
260
|
+
build_task.dependencies << unity_export_task.id
|
|
231
261
|
tasks << build_task
|
|
232
262
|
|
|
233
|
-
#
|
|
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')
|