Open grishka opened 9 months ago
Facing the same issue.
It seems you’ve encountered an issue with the fastlane tool when uploading metadata to the Google Play Store for a locale that is not supported. The error message you received indicates that the language code ar-SA (Arabic - Saudi Arabia) is not currently supported by Google Play.
To resolve this issue, you can adjust your Crowdin configuration to ensure that only supported locales are used. Google Play supports a variety of locales, but not all possible combinations of language and region codes are accepted. It’s important to use only the locales that are recognized by Google Play to avoid such errors during the deployment process.
As you’ve discovered, setting skip_upload_metadata and skip_upload_changelogs to true can bypass the error, but this is more of a workaround than a solution. The proper fix would be to ensure that your metadata locales match the supported locales on Google Play maximtimeclock
For future reference, it’s always a good idea to check the supported locations for distribution and the supported languages/locales on Android to prevent similar issues. If you need to update your fastlane configuration or scripts, make sure to include only the supported locales to streamline your deployment process.
Yes, I know why this happens, I just want this to not be a fatal error. Just skip the unsupported language and continue. Maybe not by default, but it would be nice to have an option to do so, not the current all-or-nothing approach.
New Issue Checklist
Issue Description
When any of textual metadata upload is enabled, but there are locales in
fastlane/metadata
that aren't supported by Google Play, you get this cryptic error.I used a mitm proxy to see the actual error returned by the server and the request that caused it. (there might be better ways to do it but I'm very unfamiliar with Ruby and its ecosystem) Request URL:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/:packageID/edits/:someOtherID/listings/:locale
Error:I assume these GET requests to retrieve existing metadata are done to only update those pieces of metadata that have actually changed.
If I set both
skip_upload_metadata
andskip_upload_changelogs
totrue
, this goes away and the deployment succeeds.Now that I've seen the real error, I know I should change my Crowdin configuration to only add the country code to locales where it's strictly necessary (e.g.
pt-BR
vspt-PT
). Still, the error messages returned by APIs should always be included in the output.Command executed
fastlane deploy
Complete output when running fastlane, including the stack trace and command used
Environment
(doesn't seem to matter, does the same thing in a Github Action)
✅ fastlane environment ✅
### Stack | Key | Value | | --------------------------- | ------------------------------------------------------------ | | OS | 13.6.4 | | Ruby | 3.3.0 | | Bundler? | false | | Git | git version 2.39.3 (Apple Git-145) | | Installation Source | /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/bin/fastlane | | Host | macOS 13.6.4 (22G513) | | Ruby Lib Dir | /opt/homebrew/Cellar/ruby/3.3.0/lib | | OpenSSL Version | OpenSSL 3.2.0 23 Nov 2023 | | Is contained | false | | Is homebrew | true | | Is installed via Fabric.app | false | | Xcode Path | /Applications/Xcode.app/Contents/Developer/ | | Xcode Version | 15.2 | | Swift Version | 5.9.2 | ### System Locale | Variable | Value | | | -------- | ----------- | - | | LANG | ru_RU.UTF-8 | ✅ | | LC_ALL | | | | LANGUAGE | | | ### fastlane files:`./fastlane/Fastfile`
```ruby # This file contains the fastlane.tools configuration # You can find the documentation at https://docs.fastlane.tools # # For a list of all available actions, check out # # https://docs.fastlane.tools/actions # # For a list of all available plugins, check out # # https://docs.fastlane.tools/plugins/available-plugins # # Uncomment the line if you want fastlane to automatically update itself # update_fastlane default_platform(:android) platform :android do desc "Runs all the tests" lane :test do gradle(task: "test") end desc "Deploy a new version to the Google Play" lane :deploy do gradle( task: "bundle", build_type: "release", ) upload_to_play_store( changes_not_sent_for_review: true, skip_upload_images: true, skip_upload_screenshots: true ) end end ````./fastlane/Appfile`
```ruby json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one package_name("org.joinmastodon.android") # e.g. com.krausefx.app ```Loaded gems
| Gem | Version | | ------------------------------- | ------------ | | error_highlight | 0.6.0 | | did_you_mean | 1.6.3 | | syntax_suggest | 2.0.0 | | public_suffix | 5.0.4 | | addressable | 2.8.6 | | artifactory | 3.0.15 | | jmespath | 1.6.2 | | aws-partitions | 1.877.0 | | aws-eventstream | 1.3.0 | | aws-sigv4 | 1.8.0 | | aws-sdk-core | 3.190.1 | | aws-sdk-kms | 1.76.0 | | aws-sdk-s3 | 1.142.0 | | babosa | 1.0.4 | | bundler | 2.5.4 | | rexml | 3.2.6 | | CFPropertyList | 3.0.6 | | colored | 1.2 | | highline | 2.0.3 | | commander | 4.6.0 | | dotenv | 2.8.1 | | emoji_regex | 3.2.3 | | excon | 0.109.0 | | faraday-em_http | 1.0.0 | | faraday-em_synchrony | 1.0.0 | | faraday-excon | 1.1.0 | | faraday-httpclient | 1.0.1 | | multipart-post | 2.3.0 | | faraday-multipart | 1.0.4 | | faraday-net_http | 1.0.1 | | faraday-net_http_persistent | 1.2.0 | | faraday-patron | 1.0.0 | | faraday-rack | 1.0.0 | | faraday-retry | 1.0.3 | | ruby2_keywords | 0.0.5 | | faraday | 1.10.3 | | faraday_middleware | 1.2.0 | | domain_name | 0.6.20240107 | | http-cookie | 1.0.5 | | faraday-cookie_jar | 0.0.7 | | fastimage | 2.3.0 | | gh_inspector | 1.1.3 | | uber | 0.1.0 | | declarative | 0.0.20 | | trailblazer-option | 0.1.2 | | representable | 3.2.0 | | retriable | 3.1.2 | | mini_mime | 1.1.5 | | jwt | 2.7.1 | | multi_json | 1.15.0 | | os | 1.1.4 | | signet | 0.18.0 | | googleauth | 1.8.1 | | httpclient | 2.8.3 | | webrick | 1.8.1 | | google-apis-core | 0.11.2 | | google-apis-androidpublisher_v3 | 0.54.0 | | google-apis-playcustomapp_v1 | 0.13.0 | | google-cloud-env | 1.6.0 | | google-cloud-errors | 1.3.1 | | google-cloud-core | 1.6.1 | | google-apis-iamcredentials_v1 | 0.17.0 | | google-apis-storage_v1 | 0.31.0 | | rake | 13.1.0 | | digest-crc | 0.6.5 | | google-cloud-storage | 1.47.0 | | json | 2.7.1 | | mini_magick | 4.12.0 | | naturally | 2.2.1 | | optparse | 0.4.0 | | plist | 3.7.1 | | rubyzip | 2.3.2 | | security | 0.1.3 | | simctl | 1.6.10 | | terminal-notifier | 2.0.0 | | unicode-display_width | 2.5.0 | | terminal-table | 3.0.2 | | tty-screen | 0.8.2 | | tty-cursor | 0.7.1 | | tty-spinner | 0.9.3 | | word_wrap | 1.0.0 | | atomos | 0.1.3 | | claide | 1.1.0 | | colored2 | 3.1.2 | | nanaimo | 0.3.0 | | xcodeproj | 1.23.0 | | rouge | 2.0.7 | | xcpretty | 0.3.0 | | xcpretty-travis-formatter | 1.0.1 | | set | 1.1.0 | | forwardable | 1.3.3 | | logger | 1.6.0 | | pathname | 0.3.0 | | shellwords | 0.2.0 | | cgi | 0.4.1 | | date | 3.3.4 | | timeout | 0.4.1 | | securerandom | 0.3.1 | | uri | 0.13.0 | | openssl | 3.2.0 | | digest | 3.1.1 | | ipaddr | 1.2.6 | | resolv | 0.3.0 | | time | 0.3.0 | | stringio | 3.1.0 | | open-uri | 0.4.1 | | mutex_m | 0.2.0 | | net-http | 0.4.0 | | net-protocol | 0.2.2 | | ostruct | 0.6.0 | | english | 0.8.0 | | erb | 4.0.3 | | abbrev | 0.1.2 | | tempfile | 0.2.1 | | delegate | 0.3.1 | | fileutils | 1.7.2 | | tmpdir | 0.2.0 | | base64 | 0.2.0 | | singleton | 0.2.0 | | open3 | 0.2.1 | | nkf | 0.1.3 | | prettyprint | 0.2.0 | | pp | 0.5.0 | | find | 0.2.0 | | yaml | 0.3.0 | | psych | 5.1.2 |