pindo 5.13.1 → 5.13.3

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.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/git_handler.rb +692 -0
  3. data/lib/pindo/command/android/autobuild.rb +2 -2
  4. data/lib/pindo/command/appstore/adhocbuild.rb +256 -311
  5. data/lib/pindo/command/appstore/autobuild.rb +203 -0
  6. data/lib/pindo/command/appstore/autoresign.rb +35 -17
  7. data/lib/pindo/command/appstore/bundleid.rb +120 -0
  8. data/lib/pindo/command/appstore/cert.rb +212 -0
  9. data/lib/pindo/command/appstore/configproj.rb +81 -0
  10. data/lib/pindo/command/{deploy → appstore}/getitcinfo.rb +76 -91
  11. data/lib/pindo/command/appstore/iap.rb +788 -24
  12. data/lib/pindo/command/appstore/initconfig.rb +105 -0
  13. data/lib/pindo/command/appstore/itcapp.rb +95 -13
  14. data/lib/pindo/command/{deploy → appstore}/itcinfo.rb +90 -118
  15. data/lib/pindo/command/appstore/pem.rb +136 -0
  16. data/lib/pindo/command/appstore/pullconfig.rb +99 -0
  17. data/lib/pindo/command/appstore/quswark.rb +87 -0
  18. data/lib/pindo/command/appstore/quswauth.rb +67 -0
  19. data/lib/pindo/command/appstore/tag.rb +77 -0
  20. data/lib/pindo/command/appstore.rb +13 -1
  21. data/lib/pindo/command/env/quarkenv.rb +11 -13
  22. data/lib/pindo/command/env/swarkenv.rb +11 -16
  23. data/lib/pindo/command/ios/applovin.rb +24 -182
  24. data/lib/pindo/command/ios/autobuild.rb +64 -43
  25. data/lib/pindo/command/ios/autoresign.rb +34 -19
  26. data/lib/pindo/command/ios/build.rb +9 -6
  27. data/lib/pindo/command/ios/cert.rb +27 -20
  28. data/lib/pindo/command/ios/podupdate.rb +6 -37
  29. data/lib/pindo/command/jps/upload.rb +3 -3
  30. data/lib/pindo/command/unity/autobuild.rb +2 -2
  31. data/lib/pindo/command/utils/clearcert.rb +2 -17
  32. data/lib/pindo/command/{deploy → utils}/fabric.rb +13 -13
  33. data/lib/pindo/command/utils/renewcert.rb +62 -38
  34. data/lib/pindo/command/utils/renewproj.rb +0 -3
  35. data/lib/pindo/command/{deploy → utils}/updateconfig.rb +6 -7
  36. data/lib/pindo/command/utils.rb +2 -0
  37. data/lib/pindo/command/web/autobuild.rb +2 -2
  38. data/lib/pindo/command.rb +30 -3
  39. data/lib/pindo/config/build_info_manager.rb +176 -0
  40. data/lib/pindo/config/ios_config_parser.rb +404 -0
  41. data/lib/pindo/module/android/android_config_helper.rb +9 -5
  42. data/lib/pindo/module/appstore/bundleid_helper.rb +349 -0
  43. data/lib/pindo/module/appstore/itcapp_helper.rb +228 -0
  44. data/lib/pindo/module/build/build_helper.rb +12 -0
  45. data/lib/pindo/module/build/swark_helper.rb +116 -77
  46. data/lib/pindo/module/cert/cert_helper.rb +74 -0
  47. data/lib/pindo/module/cert/pem_helper.rb +72 -0
  48. data/lib/pindo/module/cert/{xcodecerthelper.rb → xcode_cert_helper.rb} +211 -6
  49. data/lib/pindo/module/pgyer/pgyerhelper.rb +13 -5
  50. data/lib/pindo/module/task/model/appstore/appstore_task.rb +18 -0
  51. data/lib/pindo/module/task/model/appstore/appstore_upload_ipa_task.rb +151 -0
  52. data/lib/pindo/module/task/model/appstore/appstore_upload_metadata_task.rb +250 -0
  53. data/lib/pindo/module/task/model/appstore/appstore_upload_screenshot_task.rb +276 -0
  54. data/lib/pindo/module/task/model/build/android_build_adhoc_task.rb +210 -0
  55. data/lib/pindo/module/task/model/build/{android_dev_build_task.rb → android_build_dev_task.rb} +2 -2
  56. data/lib/pindo/module/task/model/build/android_build_gplay_task.rb +210 -0
  57. data/lib/pindo/module/task/model/build/android_build_task.rb +13 -0
  58. data/lib/pindo/module/task/model/build/ios_build_adhoc_task.rb +342 -0
  59. data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +341 -0
  60. data/lib/pindo/module/task/model/build/{ios_dev_build_task.rb → ios_build_dev_task.rb} +40 -59
  61. data/lib/pindo/module/task/model/build/ios_build_task.rb +23 -0
  62. data/lib/pindo/module/task/model/build/{web_dev_build_task.rb → web_build_dev_task.rb} +1 -1
  63. data/lib/pindo/module/task/model/build_task.rb +15 -12
  64. data/lib/pindo/module/task/model/jps_resign_task.rb +185 -0
  65. data/lib/pindo/module/task/model/{upload_task.rb → jps_upload_task.rb} +3 -3
  66. data/lib/pindo/module/task/model/unity_export_task.rb +3 -1
  67. data/lib/pindo/module/unity/unity_helper.rb +2 -1
  68. data/lib/pindo/module/xcode/applovin_xcode_helper.rb +271 -0
  69. data/lib/pindo/module/xcode/cocoapods_helper.rb +153 -0
  70. data/lib/pindo/module/xcode/ipa_resign_helper.rb +210 -0
  71. data/lib/pindo/module/xcode/{xcodeappconfig.rb → xcode_app_config.rb} +79 -0
  72. data/lib/pindo/module/xcode/xcode_build_config.rb +152 -17
  73. data/lib/pindo/module/xcode/xcode_build_helper.rb +151 -1
  74. data/lib/pindo/module/xcode/xcode_swark_helper.rb +341 -0
  75. data/lib/pindo/options/core/global_options_state.rb +268 -0
  76. data/lib/pindo/options/core/option_configuration.rb +206 -0
  77. data/lib/pindo/options/core/option_initializer.rb +51 -0
  78. data/lib/pindo/options/core/option_item.rb +144 -0
  79. data/lib/pindo/options/core/option_value_parser.rb +54 -0
  80. data/lib/pindo/options/groups/build_options.rb +60 -0
  81. data/lib/pindo/options/groups/jps_options.rb +70 -0
  82. data/lib/pindo/options/groups/option_group.rb +73 -0
  83. data/lib/pindo/options/helpers/bundleid_selector.rb +103 -0
  84. data/lib/pindo/options/options.rb +14 -0
  85. data/lib/pindo/version.rb +1 -1
  86. metadata +51 -40
  87. data/lib/pindo/command/appstore/import.rb +0 -259
  88. data/lib/pindo/command/deploy/build.rb +0 -250
  89. data/lib/pindo/command/deploy/bundleid.rb +0 -259
  90. data/lib/pindo/command/deploy/cert.rb +0 -202
  91. data/lib/pindo/command/deploy/check.rb +0 -93
  92. data/lib/pindo/command/deploy/configproj.rb +0 -120
  93. data/lib/pindo/command/deploy/confusecode.rb +0 -262
  94. data/lib/pindo/command/deploy/confuseproj.rb +0 -122
  95. data/lib/pindo/command/deploy/iap.rb +0 -826
  96. data/lib/pindo/command/deploy/initconfig.rb +0 -138
  97. data/lib/pindo/command/deploy/itcapp.rb +0 -146
  98. data/lib/pindo/command/deploy/pem.rb +0 -55
  99. data/lib/pindo/command/deploy/pullconfig.rb +0 -56
  100. data/lib/pindo/command/deploy/pushconfig.rb +0 -93
  101. data/lib/pindo/command/deploy/quswark.rb +0 -156
  102. data/lib/pindo/command/deploy/quswauth.rb +0 -76
  103. data/lib/pindo/command/deploy/reportbug.rb +0 -145
  104. data/lib/pindo/command/deploy/resign.rb +0 -300
  105. data/lib/pindo/command/deploy/tag.rb +0 -108
  106. data/lib/pindo/command/deploy/uploadipa.rb +0 -73
  107. data/lib/pindo/command/deploy.rb +0 -42
  108. data/lib/pindo/command/dev/autobuild.rb +0 -117
  109. data/lib/pindo/command/dev/build.rb +0 -94
  110. data/lib/pindo/command/dev/debug.rb +0 -112
  111. data/lib/pindo/module/task/model/build/android_release_build_task.rb +0 -29
  112. data/lib/pindo/module/task/model/build/ios_adhoc_build_task.rb +0 -53
  113. data/lib/pindo/module/task/model/build/ios_release_build_task.rb +0 -53
  114. data/lib/pindo/options/appconfigoptions.rb +0 -24
  115. data/lib/pindo/options/deployoptions.rb +0 -372
@@ -0,0 +1,210 @@
1
+ require_relative 'android_build_task'
2
+ require 'pindo/module/build/build_helper'
3
+ require 'pindo/module/build/version_helper'
4
+ require 'pindo/module/build/git_repo_helper'
5
+ require 'pindo/module/android/android_config_helper'
6
+ require 'pindo/module/android/android_build_helper'
7
+ require 'pindo/module/pgyer/pgyerhelper'
8
+ require 'pindo/base/githelper'
9
+
10
+ module Pindo
11
+ module TaskSystem
12
+ # Android AdHoc 模式构建任务
13
+ # 使用 Release 模式编译 Android 工程(AdHoc 版本)
14
+ class AndroidBuildAdhocTask < AndroidBuildTask
15
+ include Pindo::Githelper
16
+
17
+ def initialize(options = {})
18
+ @bundle_name = options[:bundle_name]
19
+ @proj_name = options[:proj_name]
20
+ @upload_flag = options[:upload] || false
21
+ @send_flag = options[:send] || false
22
+
23
+ # 接收外部传入的 JPS 配置
24
+ @app_info_obj = options[:app_info_obj]
25
+ @workflow_info = options[:workflow_info]
26
+
27
+ super(:android, :adhoc, options)
28
+ end
29
+
30
+ protected
31
+
32
+ def build_task_name
33
+ "构建 APK (AdHoc)"
34
+ end
35
+
36
+ def prepare_build
37
+ # 校验必需的参数
38
+ Dir.chdir(@project_path)
39
+ validate_workflow_info
40
+ check_git_tag if @upload_flag
41
+ update_project_config
42
+ update_version_info
43
+ handle_bundle_name_config if @bundle_name
44
+ add_application_id_scheme
45
+ end
46
+
47
+ def execute_build
48
+ build_android_project
49
+ end
50
+
51
+ def find_output
52
+ # 搜索 APK 和 AAB 文件
53
+ search_paths = []
54
+ search_paths.concat(TaskConfig::BUILD_OUTPUT_PATTERNS[:apk].map { |p| File.join(@project_path, p) })
55
+ search_paths.concat(TaskConfig::BUILD_OUTPUT_PATTERNS[:aab].map { |p| File.join(@project_path, p) })
56
+
57
+ package_files = []
58
+ search_paths.each do |pattern|
59
+ package_files.concat(Dir.glob(pattern))
60
+ end
61
+
62
+ # 过滤测试包和未签名包
63
+ package_files.reject! do |f|
64
+ basename = File.basename(f).downcase
65
+ TaskConfig::EXCLUDED_PATTERNS.any? { |pattern| basename.include?(pattern) }
66
+ end
67
+
68
+ if package_files.any?
69
+ # 优先返回 AAB,其次 APK
70
+ aab_files = package_files.select { |f| f.end_with?(".aab") }
71
+ apk_files = package_files.select { |f| f.end_with?(".apk") }
72
+
73
+ latest_package = if aab_files.any?
74
+ aab_files.max_by { |f| File.mtime(f) }
75
+ elsif apk_files.any?
76
+ apk_files.max_by { |f| File.mtime(f) }
77
+ else
78
+ package_files.max_by { |f| File.mtime(f) }
79
+ end
80
+
81
+ puts " 找到 Android 包文件: #{latest_package}"
82
+ latest_package
83
+ else
84
+ puts " 警告: 未找到 APK/AAB 文件"
85
+ nil
86
+ end
87
+ end
88
+
89
+ private
90
+
91
+ # 校验工作流信息
92
+ def validate_workflow_info
93
+ unless @workflow_info && @workflow_info[:package_name]
94
+ raise Informative, "未提供工作流信息,请在创建任务时传入 workflow_info 参数"
95
+ end
96
+ end
97
+
98
+ # Git 标签检查
99
+ def check_git_tag
100
+ git_repo_helper = Pindo::GitRepoHelper.share_instance
101
+ is_need_add_tag, tag_action_params = git_repo_helper.check_is_need_add_tag?(@project_path)
102
+ if is_need_add_tag
103
+ git_repo_helper.create_and_push_tag(
104
+ project_dir: @project_path,
105
+ mode: 'minor',
106
+ force_retag: tag_action_params&.include?('--retag') || false,
107
+ custom_tag: nil,
108
+ release_branch: 'master'
109
+ )
110
+ end
111
+ end
112
+
113
+ # 更新工程配置
114
+ def update_project_config
115
+ workflow_packname = @workflow_info[:package_name]
116
+
117
+ puts "\n使用工作流配置更新 Android 项目:"
118
+ puts " Workflow Package Name: #{workflow_packname}"
119
+
120
+ # 更新 App Name、Application ID 和 URL Schemes
121
+ Pindo::AndroidConfigHelper.update_project_with_workflow(
122
+ project_dir: @project_path,
123
+ workflow_packname: workflow_packname
124
+ )
125
+
126
+ # 下载并替换 Icon
127
+ if @app_info_obj && @app_info_obj["projectIcon"] && !@app_info_obj["projectIcon"].empty?
128
+ icon_replace_success = Pindo::AndroidConfigHelper.download_and_replace_icon_from_url(
129
+ project_dir: @project_path,
130
+ icon_url: @app_info_obj["projectIcon"]
131
+ )
132
+
133
+ unless icon_replace_success
134
+ raise Informative, "Icon 下载或替换失败,请检查 Icon URL 是否有效: #{@app_info_obj["projectIcon"]}"
135
+ end
136
+ else
137
+ Funlog.warning("未配置 Icon URL,跳过 Icon 替换")
138
+ end
139
+ end
140
+
141
+ # 更新版本号
142
+ def update_version_info
143
+ version_helper = Pindo::VersionHelper.share_instance
144
+ version_info = version_helper.get_version_info(project_dir: @project_path)
145
+
146
+ if version_info[:is_git_repo]
147
+ Pindo::AndroidConfigHelper.update_android_project_version(
148
+ project_dir: @project_path,
149
+ version_name: version_info[:version],
150
+ version_code: version_info[:build_number]
151
+ )
152
+ else
153
+ Funlog.warning("非Git仓库,保持工程原有版本号")
154
+ end
155
+ end
156
+
157
+ # 处理 Bundle Name 特殊配置
158
+ def handle_bundle_name_config
159
+ return unless @bundle_name && !@bundle_name.empty?
160
+
161
+ puts "\n正在处理指定的 Bundle Name: #{@bundle_name}..."
162
+
163
+ # 检查是否为通配符
164
+ is_wildcard = @bundle_name.include?('*') ||
165
+ @bundle_name.end_with?('.') ||
166
+ ['com.test', 'com.example', 'com.demo'].include?(@bundle_name)
167
+
168
+ if is_wildcard
169
+ puts " ⚠️ 检测到通配符或通用 Bundle Name: #{@bundle_name}"
170
+ puts " ⚠️ 跳过 google-services.json 和 Application ID 更新"
171
+ else
172
+ # 拉取配置仓库
173
+ config_repo_dir = clong_buildconfig_repo(repo_name: @bundle_name)
174
+
175
+ if config_repo_dir && File.exist?(config_repo_dir)
176
+ # 拷贝 google-services.json
177
+ Pindo::AndroidConfigHelper.copy_google_services_from_config_repo(
178
+ config_repo_dir: config_repo_dir,
179
+ project_dir: @project_path
180
+ )
181
+
182
+ # 更新 Application ID
183
+ Pindo::AndroidConfigHelper.update_application_id(
184
+ project_dir: @project_path,
185
+ application_id: @bundle_name
186
+ )
187
+
188
+ puts " ✓ Bundle Name 配置处理完成"
189
+ else
190
+ raise Informative, "无法获取配置仓库"
191
+ end
192
+ end
193
+ end
194
+
195
+ # 添加基于 Application ID 的 Scheme
196
+ def add_application_id_scheme
197
+ Pindo::AndroidConfigHelper.add_application_id_based_scheme(
198
+ project_dir: @project_path
199
+ )
200
+ end
201
+
202
+ # 构建 Android 工程
203
+ def build_android_project
204
+ android_build_helper = Pindo::AndroidBuildHelper.share_instance
205
+ # 第二个参数 false 表示 release 模式
206
+ android_build_helper.auto_build_apk(@project_path, false)
207
+ end
208
+ end
209
+ end
210
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../build_task'
1
+ require_relative 'android_build_task'
2
2
  require 'pindo/module/build/build_helper'
3
3
  require 'pindo/module/build/version_helper'
4
4
  require 'pindo/module/build/git_repo_helper'
@@ -11,7 +11,7 @@ module Pindo
11
11
  module TaskSystem
12
12
  # Android Dev 模式构建任务
13
13
  # 使用 Debug 模式编译 Android 工程
14
- class AndroidDevBuildTask < BuildTask
14
+ class AndroidBuildDevTask < AndroidBuildTask
15
15
  include Pindo::Githelper
16
16
  def initialize(options = {})
17
17
  @bundle_name = options[:bundle_name]
@@ -0,0 +1,210 @@
1
+ require_relative 'android_build_task'
2
+ require 'pindo/module/build/build_helper'
3
+ require 'pindo/module/build/version_helper'
4
+ require 'pindo/module/build/git_repo_helper'
5
+ require 'pindo/module/android/android_config_helper'
6
+ require 'pindo/module/android/android_build_helper'
7
+ require 'pindo/module/pgyer/pgyerhelper'
8
+ require 'pindo/base/githelper'
9
+
10
+ module Pindo
11
+ module TaskSystem
12
+ # Android Google Play 模式构建任务
13
+ # 使用 Release 模式编译 Android 工程用于 Google Play 发布
14
+ class AndroidBuildGPlayTask < AndroidBuildTask
15
+ include Pindo::Githelper
16
+
17
+ def initialize(options = {})
18
+ @bundle_name = options[:bundle_name]
19
+ @proj_name = options[:proj_name]
20
+ @upload_flag = options[:upload] || false
21
+ @send_flag = options[:send] || false
22
+
23
+ # 接收外部传入的 JPS 配置
24
+ @app_info_obj = options[:app_info_obj]
25
+ @workflow_info = options[:workflow_info]
26
+
27
+ super(:android, :release, options)
28
+ end
29
+
30
+ protected
31
+
32
+ def build_task_name
33
+ "构建 APK (Release)"
34
+ end
35
+
36
+ def prepare_build
37
+ # 校验必需的参数
38
+ Dir.chdir(@project_path)
39
+ validate_workflow_info
40
+ check_git_tag if @upload_flag
41
+ update_project_config
42
+ update_version_info
43
+ handle_bundle_name_config if @bundle_name
44
+ add_application_id_scheme
45
+ end
46
+
47
+ def execute_build
48
+ build_android_project
49
+ end
50
+
51
+ def find_output
52
+ # 搜索 APK 和 AAB 文件
53
+ search_paths = []
54
+ search_paths.concat(TaskConfig::BUILD_OUTPUT_PATTERNS[:apk].map { |p| File.join(@project_path, p) })
55
+ search_paths.concat(TaskConfig::BUILD_OUTPUT_PATTERNS[:aab].map { |p| File.join(@project_path, p) })
56
+
57
+ package_files = []
58
+ search_paths.each do |pattern|
59
+ package_files.concat(Dir.glob(pattern))
60
+ end
61
+
62
+ # 过滤测试包和未签名包
63
+ package_files.reject! do |f|
64
+ basename = File.basename(f).downcase
65
+ TaskConfig::EXCLUDED_PATTERNS.any? { |pattern| basename.include?(pattern) }
66
+ end
67
+
68
+ if package_files.any?
69
+ # 优先返回 AAB,其次 APK
70
+ aab_files = package_files.select { |f| f.end_with?(".aab") }
71
+ apk_files = package_files.select { |f| f.end_with?(".apk") }
72
+
73
+ latest_package = if aab_files.any?
74
+ aab_files.max_by { |f| File.mtime(f) }
75
+ elsif apk_files.any?
76
+ apk_files.max_by { |f| File.mtime(f) }
77
+ else
78
+ package_files.max_by { |f| File.mtime(f) }
79
+ end
80
+
81
+ puts " 找到 Android 包文件: #{latest_package}"
82
+ latest_package
83
+ else
84
+ puts " 警告: 未找到 APK/AAB 文件"
85
+ nil
86
+ end
87
+ end
88
+
89
+ private
90
+
91
+ # 校验工作流信息
92
+ def validate_workflow_info
93
+ unless @workflow_info && @workflow_info[:package_name]
94
+ raise Informative, "未提供工作流信息,请在创建任务时传入 workflow_info 参数"
95
+ end
96
+ end
97
+
98
+ # Git 标签检查
99
+ def check_git_tag
100
+ git_repo_helper = Pindo::GitRepoHelper.share_instance
101
+ is_need_add_tag, tag_action_params = git_repo_helper.check_is_need_add_tag?(@project_path)
102
+ if is_need_add_tag
103
+ git_repo_helper.create_and_push_tag(
104
+ project_dir: @project_path,
105
+ mode: 'minor',
106
+ force_retag: tag_action_params&.include?('--retag') || false,
107
+ custom_tag: nil,
108
+ release_branch: 'master'
109
+ )
110
+ end
111
+ end
112
+
113
+ # 更新工程配置
114
+ def update_project_config
115
+ workflow_packname = @workflow_info[:package_name]
116
+
117
+ puts "\n使用工作流配置更新 Android 项目:"
118
+ puts " Workflow Package Name: #{workflow_packname}"
119
+
120
+ # 更新 App Name、Application ID 和 URL Schemes
121
+ Pindo::AndroidConfigHelper.update_project_with_workflow(
122
+ project_dir: @project_path,
123
+ workflow_packname: workflow_packname
124
+ )
125
+
126
+ # 下载并替换 Icon
127
+ if @app_info_obj && @app_info_obj["projectIcon"] && !@app_info_obj["projectIcon"].empty?
128
+ icon_replace_success = Pindo::AndroidConfigHelper.download_and_replace_icon_from_url(
129
+ project_dir: @project_path,
130
+ icon_url: @app_info_obj["projectIcon"]
131
+ )
132
+
133
+ unless icon_replace_success
134
+ raise Informative, "Icon 下载或替换失败,请检查 Icon URL 是否有效: #{@app_info_obj["projectIcon"]}"
135
+ end
136
+ else
137
+ Funlog.warning("未配置 Icon URL,跳过 Icon 替换")
138
+ end
139
+ end
140
+
141
+ # 更新版本号
142
+ def update_version_info
143
+ version_helper = Pindo::VersionHelper.share_instance
144
+ version_info = version_helper.get_version_info(project_dir: @project_path)
145
+
146
+ if version_info[:is_git_repo]
147
+ Pindo::AndroidConfigHelper.update_android_project_version(
148
+ project_dir: @project_path,
149
+ version_name: version_info[:version],
150
+ version_code: version_info[:build_number]
151
+ )
152
+ else
153
+ Funlog.warning("非Git仓库,保持工程原有版本号")
154
+ end
155
+ end
156
+
157
+ # 处理 Bundle Name 特殊配置
158
+ def handle_bundle_name_config
159
+ return unless @bundle_name && !@bundle_name.empty?
160
+
161
+ puts "\n正在处理指定的 Bundle Name: #{@bundle_name}..."
162
+
163
+ # 检查是否为通配符
164
+ is_wildcard = @bundle_name.include?('*') ||
165
+ @bundle_name.end_with?('.') ||
166
+ ['com.test', 'com.example', 'com.demo'].include?(@bundle_name)
167
+
168
+ if is_wildcard
169
+ puts " ⚠️ 检测到通配符或通用 Bundle Name: #{@bundle_name}"
170
+ puts " ⚠️ 跳过 google-services.json 和 Application ID 更新"
171
+ else
172
+ # 拉取配置仓库
173
+ config_repo_dir = clong_buildconfig_repo(repo_name: @bundle_name)
174
+
175
+ if config_repo_dir && File.exist?(config_repo_dir)
176
+ # 拷贝 google-services.json
177
+ Pindo::AndroidConfigHelper.copy_google_services_from_config_repo(
178
+ config_repo_dir: config_repo_dir,
179
+ project_dir: @project_path
180
+ )
181
+
182
+ # 更新 Application ID
183
+ Pindo::AndroidConfigHelper.update_application_id(
184
+ project_dir: @project_path,
185
+ application_id: @bundle_name
186
+ )
187
+
188
+ puts " ✓ Bundle Name 配置处理完成"
189
+ else
190
+ raise Informative, "无法获取配置仓库"
191
+ end
192
+ end
193
+ end
194
+
195
+ # 添加基于 Application ID 的 Scheme
196
+ def add_application_id_scheme
197
+ Pindo::AndroidConfigHelper.add_application_id_based_scheme(
198
+ project_dir: @project_path
199
+ )
200
+ end
201
+
202
+ # 构建 Android 工程
203
+ def build_android_project
204
+ android_build_helper = Pindo::AndroidBuildHelper.share_instance
205
+ # 第二个参数 false 表示 release 模式
206
+ android_build_helper.auto_build_apk(@project_path, false)
207
+ end
208
+ end
209
+ end
210
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../build_task'
2
+
3
+ module Pindo
4
+ module TaskSystem
5
+ # Android 构建任务基类
6
+ # 所有 Android 平台构建任务的抽象基类
7
+ # 子类包括:AndroidBuildDevTask、AndroidBuildAdhocTask、AndroidBuildGPlayTask
8
+ class AndroidBuildTask < BuildTask
9
+ # 空基类,仅用于类型标识
10
+ # 所有具体实现由子类完成
11
+ end
12
+ end
13
+ end