-
Notifications
You must be signed in to change notification settings - Fork 128
Description
不具合の内容
手元で動いてるVOICEVOXライブラリを含んだiOS版アプリをApp StoreにサブミットするとUploadが完了するがその後、
ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
と指摘があり受取を拒否される。
環境
voicevox_core: 0.15.0-preview.16
(voicevox_core-ios-xcframework-cpu-0.15.0-preview.16.zip)
onixruntime: 1.14.1
(onnxruntime-ios-xcframework-1.14.1.zip)
Xcode Version 15.1 (15C65)
MacOS Sonoma 14.1.1
現象・ログ
再現手順
新規プロジェクトを作り正常にサブミットできることを試した後に再度サブミットし、上記エラーを受ける手順となります。
AppleのDeveloperのアカウントがあり証明書が設定されているStoreへアプリをサブミットできる環境の下で、以下の手順で再現します。
①XCodeで新規プロジェクトを作る。
②App Store Connect側にプロジェクトと同じBundle Identifierのアプリ情報を登録する。
③適当にAssetsにアイコン、プロジェクトのTargetのGeneralのDisplay Name(アイコン下の名前)を適当に設定する。(最低限ストアーへのサブミットを通すため)
④リリース用にAny iOS Device(Arm64)などに向けてArchive。
⑤OrganizerのArchivesから今回のアプリを選んでDistribute AppをするとバイナリーをApple側で受け取ってくれる。メールでcompleted processingが来るのでこれを確認。
⑥Onnix runtimeを追加する。
プロジェクトのTargetのGeneralのFrameworks, Libraries, and Embedded Contentから + をおしてonnxruntime.xcframeworkのファイルを追加。(onnixruntimeがembedでsignedになるはず。)
⑦再度、④⑤のアーカイブとサブミットを行うと、今度はUploadは成功するが、後ほどメールでITMS-90426: Invalid Swift Supportと通知があり受取拒否される。
(voicevox_coreも確認が必要ですがとりあえずonnxruntimeだけを試しています。)
期待動作
AppleのApp Storeでバイナリーを正常に受領される。
VOICEVOXのバージョン
- voicevox_core: 0.15.0-preview.16
(voicevox_core-ios-xcframework-cpu-0.15.0-preview.16.zip) - onixruntime: 1.14.1
(onnxruntime-ios-xcframework-1.14.1.zip)
OSの種類/ディストリ/バージョン
- Windows
- macOS
- Linux
- iOS
iOS 17.1.2
その他
原因はiOSの
onnxruntime.xcframework
voicevox_core.xcframework
にダイナミックライブラリーを含んでいるためと推測しています。
公式ドキュメントでは以下のように書かれています。
https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle
Avoid using dynamic library files (.dylib files) for dynamic linking. An XCFramework can include dynamic library files, but only macOS supports these libraries for dynamic linking. Dynamic linking on iOS, watchOS, and tvOS requires the XCFramework to contain .framework bundles.
(翻訳 - .dylib ファイルをダイナミックリンキングに使用しないでください。XCFramework には .dylib ファイルを含めることができますが、ダイナミックリンキングにこれらのライブラリをサポートしているのは macOS のみです。iOS、watchOS、および tvOS でのダイナミックリンキングには、XCFramework が .framework バンドルを含んでいる必要があります。)
これは、ゲームエンジンのGodot Engineで同じ文言の同じ事象があったようです。
godotengine/godot#86224