fastlane / fastlane

🚀 The easiest way to automate building and releasing your iOS and Android apps
https://fastlane.tools
MIT License
38.86k stars 5.64k forks source link

"ar-SA - Invalid request" when uploading metadata to Play Store with a locale it does not support #21905

Open grishka opened 4 months ago

grishka commented 4 months ago

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:

{
    "error": {
        "code": 400,
        "message": "The requested language is not currently supported: ar-SA.",
        "status": "INVALID_ARGUMENT"
    }
}

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 and skip_upload_changelogs to true, 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 vs pt-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
$ fastlane deploy
[✔] 🚀 
[11:30:35]: fastlane detected a Gemfile in the current directory
[11:30:35]: However, it seems like you didn't use `bundle exec`
[11:30:35]: To launch fastlane faster, please use
[11:30:35]: 
[11:30:35]: $ bundle exec fastlane deploy
[11:30:35]: 
[11:30:35]: Get started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile
[11:30:36]: ------------------------------
[11:30:36]: --- Step: default_platform ---
[11:30:36]: ------------------------------
[11:30:36]: Driving the lane 'android deploy' 🚀
[11:30:36]: ---------------------------
[11:30:36]: --- Step: bundlerelease ---
[11:30:36]: ---------------------------
[11:30:36]: $ /Users/grishka/Documents/android/Mastodon/gradlew bundlerelease -p .
[11:30:36]: ▸ > Task :mastodon:preBuild UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:preReleaseBuild UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:generateReleaseFeatureMetadata UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:checkReleaseDuplicateClasses UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:compileReleaseAidl UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:generateReleaseBuildConfig UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:javaPreCompileRelease UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:checkReleaseAarMetadata UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:generateReleaseResValues UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mapReleaseSourceSetPaths UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:generateReleaseResources UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mergeReleaseResources UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:packageReleaseResources UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:parseReleaseLocalResources UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:createReleaseCompatibleScreenManifests UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:extractDeepLinksRelease UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:processReleaseMainManifest UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:processReleaseManifest UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:processReleaseManifestForPackage UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:processReleaseResources UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:compileReleaseJavaWithJavac UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mergeReleaseArtProfile UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:expandReleaseArtProfileWildcards UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:extractProguardFiles UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mergeReleaseGeneratedProguardFiles UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:processReleaseJavaRes UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mergeReleaseJavaResource UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:minifyReleaseWithR8 UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:processApplicationManifestReleaseForBundle UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:bundleReleaseResources UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:l8DexDesugarLibRelease UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mergeReleaseShaders UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:compileReleaseShaders NO-SOURCE
[11:30:36]: ▸ > Task :mastodon:generateReleaseAssets UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mergeReleaseAssets UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mergeReleaseJniLibFolders UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:mergeReleaseNativeLibs NO-SOURCE
[11:30:36]: ▸ > Task :mastodon:stripReleaseDebugSymbols NO-SOURCE
[11:30:36]: ▸ > Task :mastodon:writeReleaseAppMetadata UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:buildReleasePreBundle UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:compileReleaseArtProfile UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:extractReleaseNativeSymbolTables NO-SOURCE
[11:30:36]: ▸ > Task :mastodon:parseReleaseIntegrityConfig UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:packageReleaseBundle UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:shrinkBundleReleaseResources UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:validateSigningRelease UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:signReleaseBundle UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:produceReleaseBundleIdeListingFile UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:createReleaseBundleListingFileRedirect UP-TO-DATE
[11:30:36]: ▸ > Task :mastodon:bundleRelease UP-TO-DATE
[11:30:36]: ▸ BUILD SUCCESSFUL in 432ms
[11:30:36]: ▸ 41 actionable tasks: 41 up-to-date
[11:30:37]: ----------------------------------
[11:30:37]: --- Step: upload_to_play_store ---
[11:30:37]: ----------------------------------

+----------------------------------------------------------------------------------------------------+
|                                     Summary for supply 2.219.0                                     |
+------------------------------------+---------------------------------------------------------------+
| changes_not_sent_for_review        | true                                                          |
| skip_upload_images                 | true                                                          |
| skip_upload_screenshots            | true                                                          |
| aab                                | /Users/grishka/Documents/android/Mastodon/mastodon/build/out  |
|                                    | puts/bundle/release/mastodon-release.aab                      |
| package_name                       | org.joinmastodon.android                                      |
| release_status                     | completed                                                     |
| track                              | production                                                    |
| metadata_path                      | ./fastlane/metadata/android                                   |
| json_key_data                      | ********                                                      |
| skip_upload_apk                    | false                                                         |
| skip_upload_aab                    | false                                                         |
| skip_upload_metadata               | false                                                         |
| skip_upload_changelogs             | true                                                          |
| sync_image_upload                  | false                                                         |
| track_promote_release_status       | completed                                                     |
| validate_only                      | true                                                          |
| check_superseded_tracks            | false                                                         |
| timeout                            | 300                                                           |
| deactivate_on_promote              | true                                                          |
| rescue_changes_not_sent_for_review | true                                                          |
| ack_bundle_installation_warning    | false                                                         |
+------------------------------------+---------------------------------------------------------------+

[11:30:38]: Preparing aab at path '/Users/grishka/Documents/android/Mastodon/mastodon/build/outputs/bundle/release/mastodon-release.aab' for upload...
[11:30:47]: Updating track 'production'...
[11:30:49]: Preparing uploads for language 'ar-SA'...
[11:30:49]: Preparing uploads for language 'be-BY'...
[11:30:49]: Preparing uploads for language 'bn-BD'...
[11:30:49]: Preparing uploads for language 'bs-BA'...
[11:30:49]: Preparing uploads for language 'ca-ES'...
[11:30:49]: Preparing uploads for language 'cs-CZ'...
[11:30:49]: Preparing uploads for language 'da-DK'...
[11:30:49]: Preparing uploads for language 'de-DE'...
[11:30:49]: Preparing uploads for language 'el-GR'...
[11:30:49]: Preparing uploads for language 'en-US'...
# terminated with exception (report_on_exception is true):
/opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/fastlane-2.219.0/fastlane_core/lib/fastlane_core/ui/interface.rb:184:in `abort_with_message!': ar-SA - Invalid request (FastlaneCore::Interface::FastlaneCommonException)
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/fastlane-2.219.0/fastlane_core/lib/fastlane_core/ui/ui.rb:17:in `method_missing'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/fastlane-2.219.0/supply/lib/supply/uploader.rb:526:in `rescue in block in create_meta_upload_worker'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/fastlane-2.219.0/supply/lib/supply/uploader.rb:517:in `block in create_meta_upload_worker'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/fastlane-2.219.0/fastlane_core/lib/fastlane_core/queue_worker.rb:40:in `block (2 levels) in start'
/opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/http_command.rb:244:in `check_status': Invalid request (Google::Apis::ClientError)
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/api_command.rb:135:in `check_status'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/http_command.rb:207:in `process_response'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/http_command.rb:326:in `execute_once'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/http_command.rb:131:in `block (2 levels) in do_retry'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/retriable-3.1.2/lib/retriable.rb:61:in `block in retriable'
    from :237:in `times'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/retriable-3.1.2/lib/retriable.rb:56:in `retriable'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/http_command.rb:128:in `block in do_retry'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/retriable-3.1.2/lib/retriable.rb:61:in `block in retriable'
    from :237:in `times'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/retriable-3.1.2/lib/retriable.rb:56:in `retriable'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/http_command.rb:118:in `do_retry'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/http_command.rb:109:in `execute'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-core-0.11.2/lib/google/apis/core/base_service.rb:418:in `execute_or_queue_command'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/google-apis-androidpublisher_v3-0.54.0/lib/google/apis/androidpublisher_v3/service.rb:1181:in `get_edit_listing'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/fastlane-2.219.0/supply/lib/supply/client.rb:238:in `listing_for_language'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/fastlane-2.219.0/supply/lib/supply/uploader.rb:519:in `block in create_meta_upload_worker'
    from /opt/homebrew/Cellar/fastlane/2.219.0_2/libexec/gems/fastlane-2.219.0/fastlane_core/lib/fastlane_core/queue_worker.rb:40:in `block (2 levels) in start'
+-----------------------------------------------------------------------------------------------------+
|                                            Lane Context                                             |
+-------------------------------------+---------------------------------------------------------------+
| DEFAULT_PLATFORM                    | android                                                       |
| PLATFORM_NAME                       | android                                                       |
| LANE_NAME                           | android deploy                                                |
| GRADLE_BUILD_TYPE                   | release                                                       |
| GRADLE_ALL_APK_OUTPUT_PATHS         | []                                                            |
| GRADLE_ALL_AAB_OUTPUT_PATHS         | ["/Users/grishka/Documents/android/Mastodon/mastodon/build/o  |
|                                     | utputs/bundle/release/mastodon-release.aab"]                  |
| GRADLE_ALL_OUTPUT_JSON_OUTPUT_PATHS | []                                                            |
| GRADLE_ALL_MAPPING_TXT_OUTPUT_PATHS | ["/Users/grishka/Documents/android/Mastodon/mastodon/build/o  |
|                                     | utputs/mapping/release/mapping.txt"]                          |
| GRADLE_AAB_OUTPUT_PATH              | /Users/grishka/Documents/android/Mastodon/mastodon/build/out  |
|                                     | puts/bundle/release/mastodon-release.aab                      |
| GRADLE_MAPPING_TXT_OUTPUT_PATH      | /Users/grishka/Documents/android/Mastodon/mastodon/build/out  |
|                                     | puts/mapping/release/mapping.txt                              |
+-------------------------------------+---------------------------------------------------------------+
[11:30:49]: ar-SA - Invalid request

+-------------------------------------------+
|             fastlane summary              |
+------+----------------------+-------------+
| Step | Action               | Time (in s) |
+------+----------------------+-------------+
| 1    | default_platform     | 0           |
| 2    | bundlerelease        | 0           |
| 💥   | upload_to_play_store | 11          |
+------+----------------------+-------------+

[11:30:49]: fastlane finished with errors

[!] ar-SA - Invalid request

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 ```
### fastlane gems | Gem | Version | Update-Status | | -------- | ------- | ------------- | | fastlane | 2.219.0 | ✅ Up-To-Date | ### Loaded fastlane plugins: **No plugins Loaded**
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 |
*generated on:* **2024-03-01**
sakiv commented 4 months ago

Facing the same issue.

jeannette9728miller commented 2 months ago

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.

grishka commented 2 months ago

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.