
























@@ -2,7 +2,7 @@ require "fileutils"
22require "json"
33require "open3"
44require "shellwords"
5-require "tempfile"
5+require "supply/client"
6677default_platform(:android)
88@@ -84,17 +84,21 @@ def play_auth_options
8484UI.user_error!("Missing Google Play API credentials. Set GOOGLE_PLAY_JSON_KEY or GOOGLE_PLAY_JSON_KEY_DATA.")
8585end
868687-def with_play_json_key_file
88-auth = play_auth_options
89-if auth[:json_key]
90-yield auth[:json_key]
91-return
92-end
93-94-Tempfile.create(["openclaw-google-play", ".json"]) do |file|
95-file.write(auth.fetch(:json_key_data))
96-file.flush
97-yield file.path
87+def validate_play_auth!
88+client = nil
89+begin
90+client = Supply::Client.make_from_config(params: play_auth_options)
91+client.begin_edit(package_name: play_package_name)
92+rescue => e
93+UI.user_error!("Google Play API credentials are invalid for #{play_package_name}: #{e.message}")
94+ensure
95+if client&.current_edit
96+begin
97+client.abort_current_edit
98+rescue => e
99+UI.user_error!("Google Play API credentials opened a validation edit but could not close it: #{e.message}")
100+end
101+end
98102end
99103end
100104@@ -181,6 +185,8 @@ def upload_play_store_metadata!(version_metadata)
181185upload_to_play_store(
182186 **play_auth_options,
183187package_name: play_package_name,
188+track: play_track,
189+version_code: version_metadata.fetch(:version_code),
184190metadata_path: play_metadata_path,
185191skip_upload_apk: true,
186192skip_upload_aab: true,
@@ -192,7 +198,9 @@ def upload_play_store_metadata!(version_metadata)
192198)
193199end
194200195-def upload_play_store_build!(version_metadata)
201+def upload_play_store_build!(version_metadata, upload_metadata: false, upload_images: false, upload_screenshots: false)
202+ENV["SUPPLY_UPLOAD_SCREENSHOTS"] = "1" if upload_screenshots
203+validate_android_screenshots!
196204sync_android_changelog!(version_metadata.fetch(:version_code))
197205artifact_path = release_artifact_path(version_metadata.fetch(:version))
198206UI.user_error!("Missing Play release artifact at #{artifact_path}. Run pnpm android:release:archive first.") unless File.exist?(artifact_path)
@@ -205,10 +213,10 @@ def upload_play_store_build!(version_metadata)
205213release_status: play_release_status,
206214metadata_path: play_metadata_path,
207215skip_upload_apk: true,
208-skip_upload_metadata: true,
216+skip_upload_metadata: !upload_metadata,
209217skip_upload_changelogs: false,
210-skip_upload_images: true,
211-skip_upload_screenshots: true,
218+skip_upload_images: !upload_images,
219+skip_upload_screenshots: !upload_screenshots,
212220validate_only: play_validate_only?
213221)
214222end
@@ -218,9 +226,7 @@ load_env_file(File.join(__dir__, ".env"))
218226platform :android do
219227desc "Validate Google Play API credentials"
220228lane :auth_check do
221-with_play_json_key_file do |json_key_path|
222-validate_play_store_json_key(json_key: json_key_path)
223-end
229+validate_play_auth!
224230UI.success("Google Play API credentials are valid.")
225231end
226232@@ -260,9 +266,8 @@ platform :android do
260266screenshots
261267ENV["SUPPLY_UPLOAD_METADATA"] = "1"
262268ENV["SUPPLY_UPLOAD_SCREENSHOTS"] = "1"
263-upload_play_store_metadata!(version_metadata)
264269build_release_artifacts!
265-upload_play_store_build!(version_metadata)
270+upload_play_store_build!(version_metadata, upload_metadata: true, upload_screenshots: true)
266271UI.success("Uploaded Android Play build to #{play_track}: version=#{version_metadata[:version]} code=#{version_metadata[:version_code]}")
267272UI.important("Production promotion remains manual in Google Play Console.")
268273end
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。