「IPA processing failed」と表示されてipaの作成が出来ない場合の対処方法

# 概要
アーカイブしたプロジェクトから、ipaを作成しょうとすると、「**IPA processing failed**」と表示されて作成出来ない問題が発生しました。

いろいろ調べて解決方法が分かりました。

ネット上では間違った方法が多いので、同じ問題にぶち当たった方のために、解決方法をQiitaに残します。

XcodeのOrganizeから作成しようとした時の画面 **↓**
<img width="600" alt="aaaaa01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/9f73f1ab-e962-a762-9e50-055a1ee1eeca.png">
CIサービス（Bitrise）でも、exportArchiveコマンド実行時にエラー
<img width="853" alt="スクリーンショット 2020-07-31 0.04.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/ef53610d-6187-bace-c5c2-03b7918f7c83.png">
解決方法を先に言ってしまうと、**Carthage の設定を見直せば**、解決します。

# 解決方法
Carthageの公式ページでは、導入手順がいつからか、**xcfilelist**を使うようになっていました。

公式ページ以外のCarthageのインストール手順を書いた記事では、ほとんどが、**Input Files**に直接パスを指定する記事で、**xcfilelist**を使った記事を見かけなかったので、変わったことに気づいていませんでした。

Carthageの公式では**xcfilelist**を使っているので、こっちの手順に切り替える必要があったのかもしれません。
> Input/Output File Lists とは、Xcode10で追加された Input / Output Files に代わる、
xcfilelist をパスとして指定できる新たな枠組み

以下の２つの作業を行うことで、解決できます。

- Carthageの設定をInput Filesから、xcfilelistに変更
- Embed Frameworks から、CarthageのFrameworkを削除

## 1. Carthageの設定をInput Filesから、xcfilelistに変更
Carthageの公式ページの手順の通りに、**Input Files**から、**xcfilelist**に変更すればOKです。

ただし、**Input Files**から、**xcfilelist**に変更後、ビルド時に「**Error: Multiple commands produce**」と表示されてしまうことがあるので、それの場合、別途、対処が必要になります。
<img width="381" alt="スクリーンショット_2020-07-31_1_49_56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/4baa0dfe-320c-9fbc-ed6b-1f835cb2300b.png">

## 2. Embed Frameworks から、CarthageのFrameworkを削除
Xcode10から、デフォルトになった新しいビルドシステムは、フレームワークのコピーシステムが稼働するようで、それが重複してしまってエラーとなるようです。

具体的な対処方法としては、TARGETS → Build Phases → Embed Frameworks から、**xcfilelist**記載したCarthageのFrameworkを削除します。

最終的には、こういった形になるはずです。
<img width="1341" alt="スクリーンショット_2020-07-30_23_08_25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/df4b679d-85f5-a3c4-c3f6-60ad43f28340.png">
上記のプロジェクトの場合の、xcfilelist
<img width="500" alt="bbbb.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/41768105-a71f-0059-33ad-2205142f4022.png">
これで、ipaを作成できるようになります。


# 経緯
このページにたどり着いた方のために、試行錯誤して解決方法にたどり着いた経緯を書いておきます。

シュミレーターと実機では、Xcodeから直接インストールすれば、どちらも問題なく起動していました。

その後、OTA配布しようと思って、CIでビルドしてアーカイブすると、エラーが出ることに気付き、Xcodeでも試したがダメでした。

いろいろ調べたところ、シュミレータアーキテクチャが含まれているとipaファイルを作成できないという記事を見たのでで、それを参考にしてアーキテクチャを削除しましたが、自分の環境ではダメでした。

シミュレータアーキテクチャを削除すると、シミュレータでアプリ起動ができなくなるそうなので、これは正しい解決方法ではないなと思って、いろいろ探してみたら、下記の記事を見つけ、その通りにしてみると、ipaの作成が出来るようになりました。

> [Carthage + Xcode の Archive で IPA processing failed が発生した場合の対処 - hd 5.0](https://sk44.hatenablog.com/entry/2020/03/08/145328)

シュミレータアーキテクチャを削除というのは、正しい対処方法ではないと思うので、まずは、Carthageを再設定してみてください。
# その他
## 「IPA processing failed」のエラーログについて
XcodeのOrganizeのエラーが出た画面でShow Logsからフォルダを開くと、「IDEDistribution.standard.log」という名前のログがあります。
<img width="300" alt="ccccc.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/0d1687af-c638-5b8a-a29c-9edc8a1e5349.png">
<img width="976" alt="スクリーンショット 2020-07-30 22.54.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/09e28994-140d-7413-0c19-250f4850416d.png">
ここで、エラー内容を確認することができます。
<img width="683" alt="スクリーンショット 2020-07-30 22.56.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/2ef803f0-1455-245b-d9d3-e36b15d25aea.png">
自分の場合は、Carthageでインストールしているライブラリ（このログでは、APIKit)でエラーが出ているので、Carthageが怪しそうだなというところまでは、気がつきました。
## シュミレータアーキテクチャを削除したときのCIのエラー
誰かの役に立つかもしれないので、シュミレータアーキテクチャを削除したときのCIのエラーも貼っておきます。
<img width="1344" alt="スクリーンショット_2020-07-31_3_41_19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35613/74b8fee7-588e-e539-17e1-01cb175460c5.png">
こちらは、「IPA processing failed」と表示されたあと、シュミレータアーキテクチャを削除してCIでビルドをしてみたときのエラーです。
# 参考にしたサイト
- [Carthage + Xcode の Archive で IPA processing failed が発生した場合の対処 - hd 5.0](https://sk44.hatenablog.com/entry/2020/03/08/145328)
- [Carthage/Carthage: A simple, decentralized dependency manager for Cocoa](https://github.com/Carthage/Carthage)
- [Xcode10 Error: Multiple commands produceを解決する - Qiita](https://qiita.com/SatoTakeshiX/items/047a313f564879e290ec)
- [CarthageでInput File Listsにxcfilelistを渡す利点と方法 - もちゅろぐ](https://blog.mothule.com/ios/carthage/ios-carthage-use-xcfilelist)

# 調査段階で遭遇したサイト
- [ipa作成時に「IPA processing failed」と出た - Qiita](https://qiita.com/Necorin/items/b68906aa7eec4a33c61f)
- [ios - Check and Remove Unsupported Architecture [x86_64, i386] in IPA / Archive - Stack Overflow](https://stackoverflow.com/questions/42641806/check-and-remove-unsupported-architecture-x86-64-i386-in-ipa-archive)