Avatar
Kishikawa Katsumi 8/15/2022 4:47 PM
で、上記に書いたようにConsoleを開いて、インストールしようとしているデバイスのログの受信を開始して、再度インストールしようとすると、こういうエラーが出ているのがわかる。 0x16d5ab000 -[MIBundle _validateWithError:]: 47: Failed to load Info.plist from bundle at path /var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.WVoNf1/extracted/Example.app/Frameworks/MLKitBarcodeScanning.framework; Extra info about "/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.WVoNf1/extracted/Example.app/Frameworks/MLKitBarcodeScanning.framework/Info.plist": Couldn't stat /var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.WVoNf1/extracted/Example.app/Frameworks/MLKitBarcodeScanning.framework/Info.plist: No such file or directory
4:48 PM
(ログは膨大なので Example.app などのキーワードでログをフィルタすると良い。その上で installd プロセスが出力しているログを探すと見つかる。) (edited)
4:49 PM
これはアプリに含まれるFrameworkはInfo.plistがないとダメなのだけど、それが無いというエラー(だと思う)。つまりこのFrameworkはStatic FrameworkなのでアプリケーションパッケージにEmbedされることを想定してない(のでInfo.plistもない)。
4:51 PM
で、ひとまずそれが原因であることを確認するために、Xcodeから Products/Example.app をShow Finderして、 Example.app パッケージをShow Contentsして Frameworks フォルダからMLKitFaceDetection.frameworkMLKitBarcodeScanning.framework を削除します。 (他の人にもわかるように手順を書いています。) (edited)
t_kansha 1
4:53 PM
で、2つのFrameworkを取り除いた Example.app を直接XcodeのDevice and SimulatorsのインストールしたいデバイスのところにDrag & Dropします。 これはインストールに成功するはずです。 2つのFrameworkを取り除かずに同様の操作をすると、同じエラーで失敗します(メッセージも同じ。XcodeがやってることをGUIでやっているだけ)。
4:54 PM
なので直接の原因はStatic Framework(正確にいうとInfo.plistが含まれていないFramework)をアプリケーションパッケージに含めてしまっていること、だと思います。
4:55 PM
直し方はちょっとよくわからない。SwiftPMになんかEmbedさせない設定があるならそれが良さそう。もしくはStatic Linkを指定したりできないだろうか。
4:55 PM
最悪、XcodeのScript PhaseあたりでFrameworkを取り除く、という操作をすると成功すると思う。