Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【fastlane】"The provided entity includes a relationship with an invalid value"の対処に手間取った話

 

はじめに

【fastlane】アプリの審査に必要な情報をApp Store Connectへアップロードする - Swift・iOSの手順を実施する中で発生したエラーの対処に手間取ったので記録に残します。

 

環境

macOS Catalina 10.15.7

Xcode 12.0.1

bash 3.2.57

・bundler 2.1.4

・fastlane 2.168.0

Visual Studio Code 1.50.1

GitHub

 

本題

前提

App Store Connect側にはメタデータが入力されておらず、fastlaneを使って初めてメタデータをアップロードしようとする場合。

 

手間取ったエラーに関して

メタデータApp Store Connectにアップロードする際に、編集したメタデータに不備がある場合にはターミナル上に「エラーの箇所」と「エラーの理由」が表示される。

 

例1)連絡先の内容に不備がある場合

bundler: failed to load command: fastlane (/usr/local/bin/fastlane)
Spaceship::UnexpectedResponse: [!] The provided entity is missing a required attribute - You must provide a value for the attribute 'contactFirstName' with this request
The provided entity is missing a required attribute - You must provide a value for the attribute 'contactLastName' with this request
The provided entity is missing a required attribute - You must provide a value for the attribute 'contactEmail' with this request
The provided entity is missing a required attribute - You must provide a value for the attribute 'contactPhone' with this request

例2)アプリの説明とマーケティングURLに不備がある場合

An attribute value is too short. - App Description must be at least 10 characters in length.
An attribute value is invalid. - The Marketing URL you entered is invalid. Check the URL and try again.

 

しかし、"The provided entity includes a relationship with an invalid value"と表示される場合は、どこがどんな理由でエラーになっているか分からない。

以下の場合は、どこか4箇所のメタデータに不備があると推測できるが、それがどこなのか、なぜエラーになるのかわからない。

メタデータを見直したもののなかなかエラーを解消できず時間を使ってしまった。

The provided entity includes a relationship with an invalid value
The provided entity includes a relationship with an invalid value
The provided entity includes a relationship with an invalid value
The provided entity includes a relationship with an invalid value

+------+--------------------------+-------------+
|               fastlane summary                |
+------+--------------------------+-------------+
| Step | Action                   | Time (in s) |
+------+--------------------------+-------------+
| 1    | default_platform         | 0           |
| 2    | sync_code_signing        | 4           |
| 3    | increment_version_number | 1           |
| 4    | increment_build_number   | 1           |
| 5    | build_app                | 27          |
| 💥   | upload_to_app_store      | 12          |
+------+--------------------------+-------------+

fastlane finished with errors

 

解決方法

まず、App Store Connect側でメタデータを入力、エラーがあれば理由が表示されるため適宜対応。fastlaneでアップロードするよりも発生箇所が明確にわかり、理由も推測しやすい。

入力が完了したら内容を保存する。

f:id:hfoasi8fje3:20201208192439p:plain

 

ターミナルを開いて、プロジェクトファイルのある階層で以下コマンドを実行。成功すると、metadataの各ファイルにApp Store Connectで入力した内容が反映される。

初回リリース以降のメタデータの編集やアップロードは、fastlaneを使って行う。

bundle exec fastlane deliver download_metadata

 

おわりに

良い対処法なのかはわからないのですが、表題のエラーで時間を使ってしまうよりはましかなと思い、一応記録に残しました。初回以降も今回のような対応をするとfastlaneでメタデータを管理する意味がないので、あくまで初回に限ってという条件だとは思っています・・・。

 

参考

https://docs.fastlane.tools/actions/deliver/#usage