UnityアプリでiOSをArchiveするとExit status: 65とかUSYM_UPLOAD_AUTH_TOKENがないとかで終わる問題の解決法


こんにちは。virapture株式会社もぐめっとです。

fastlaneを使ってunityプロジェクトをビルド・アーカイブしようとしたら表題の件でエラーが起こったのでその対策の紹介です。

エラー内容

下記のような内容のエラーが出たりします。

▸ Running script 'Run Script'
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 5.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'leveldb-library' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'abseil' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'BoringSSL-GRPC' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'gRPC-Core' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'gRPC-C++' from project 'Pods')
** ARCHIVE FAILED **


The following build commands failed:
    PhaseScriptExecution Run\ Script /Users/mogmet/Library/Developer/Xcode/DerivedData/Unity-iPhone-gqkzpndbjogtifczjutlqanqrdbr/Build/Intermediates.noindex/ArchiveIntermediates/Unity-iPhone/IntermediateBuildFilesPath/Unity-iPhone.build/Release-iphoneos/UnityFramework.build/Script-9D3DC87A221D90AB00B2960B.sh
(1 failure)
[19:36:08]: Exit status: 65
▸ Running script 'Unity Process symbols'
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'gRPC-C++-gRPCCertificates-Cpp' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 5.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'leveldb-library' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'abseil' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'BoringSSL-GRPC' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'gRPC-Core' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'gRPC-C++' from project 'Pods')
** ARCHIVE FAILED **


The following build commands failed:
    PhaseScriptExecution Unity\ Process\ symbols /Users/mogmet/Library/Developer/Xcode/DerivedData/Unity-iPhone-gqkzpndbjogtifczjutlqanqrdbr/Build/Intermediates.noindex/ArchiveIntermediates/Unity-iPhone/IntermediateBuildFilesPath/Unity-iPhone.build/Release-iphoneos/UnityFramework.build/Script-C2C44CC5810E918197FE9813.sh
/Users/mogmet/dev/onenightwerewolf-online-unity/Build/iOS/iOS/usymtool -symbolPath /Users/mogmet/Library/Developer/Xcode/DerivedData/Unity-iPhone-gqkzpndbjogtifczjutlqanqrdbr/Build/Intermediates.noindex/ArchiveIntermediates/Unity-iPhone/BuildProductsPath/Release-iphoneos/UnityFramework.framework.dSYM
time="2021-03-13T20:25:16+09:00" level=fatal msg="Please provide an auth token with USYM_UPLOAD_AUTH_TOKEN environment variable"
Command PhaseScriptExecution failed with a nonzero exit code

Exit status: 65とかはこれしかかいてなくて何が原因かさっぱりわかりません。とても不親切。

Exit status: 65の解決法

上記はCI上で実行してたため原因がわからなかったのですが、ローカルで実行してみたところ、UnityがiOS用に出力した、いくつかのファイルで権限がなかったので、一旦権限を付与しました。(おそらくCI上でzipでまとめたときに権限がとれてしまったものと思われる)

chmod +x usymtool process_symbols.sh MapFileParser.sh

そして、その後アーカイブを実施したところ、この子が出てきました。

なるほど、CIではわからないわけだ。。。

ということで解決法を調べたら下記の方法が使えそうでした。

・ダウンロードしたすべてのアプリケーションを許可する

$ sudo spctl --master-disable

上記を実施した上であらためて実行したら無事アーカイブできました

Please provide an auth token with USYM_UPLOAD_AUTH_TOKEN environment variableの解決法

色々議論されてるのはこちらにありました。

ただ、上記スクリプトをセットしてもうまく行かなかったので、結局の所、USYM_UPLOAD_AUTH_TOKENに適当な値をセットするようにしたらビルドできるようになりました

export USYM_UPLOAD_AUTH_TOKEN=hoge

USYM_UPLOAD_AUTH_TOKENについては下記に説明がありました。

unityでbatchmodeでビルドするときにusernameとpasswordをセットすると設定される環境変数で、この変数を使ってシェルは実行されます。
crashしたときに特定できるようにunityにアップロードして特定できるようにしてるらしいですが、とりあえずUSYM_UPLOAD_AUTH_TOKENに何かしらいれとけばアップロードは失敗するが、とりあえずビルドはできるようになるらしいです。

そこはUSYM_UPLOAD_AUTH_TOKENが存在しないならビルドできるようにしとけよと思ったのは内緒です。

もぐめっとの所感

CIでビルドできなくなったらそのファイルを一旦ローカルにもってきて実行テストしてみることが大事だと思いました。

最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!
他にもcameconoffchaといったサービスも作ってるのでよかったら使ってね!