Skip to content

iOS版でApp Storeにサブミットすると問題がありと指摘され受取拒否される。 #715

@nekomimimi

Description

@nekomimimi

不具合の内容

手元で動いてる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

現象・ログ

スクリーンショット 2023-12-28 0 08 00

再現手順

新規プロジェクトを作り正常にサブミットできることを試した後に再度サブミットし、上記エラーを受ける手順となります。
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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions