ここに2セントを追加します(それほど怖くない方法で:-)。私はベンダーからのかなりの数の脂肪ライブラリーに遭遇しましたが、(何らかの理由で)Frameworks
Appleによって文書化されているようにそれらをディレクトリに追加することによって通常の方法で機能しません。私たちがそれらを機能させることができた唯一の方法は.framekwork
、プロジェクトディレクトリに権利をプルし、ビルド設定でEmbedded Frameworks
とをLink Binary with Libraries
手動でリンクすることです。これは、彼らが余分なシミュレータアーキテクチャが付属して任意の脂肪のライブラリと同じように、しかし、何の問題もなく働いているように見えるi386
とx86_64
一緒にarm
アーキテクチャ。
ファットライブラリのアーキテクチャを確認する簡単な方法は、
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
これはこのような出力を吐き出すはずです
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
これは、iTunesConnectアーカイブのアップロード前にフレームワークから「脂肪を取り除く」(つまりi386
&x86_64
)必要があることを示しています。これにより、これらのアーキテクチャは許可されません(iOSではサポートされていないため)。
さて、ここでのすべての回答(または少なくともいくつかの回答)は、これらのすばらしい実行スクリプトを提供します。これらのスクリプトは、フレームワークがFrameworks
ディレクトリにある場合にのみ、非常にうまく機能します。さて、あなたがシェルスクリプトの中毒者でない限り、変更のないスクリプトは、上で説明したシナリオでは機能しません。ただし、フレームワークからi386
&x86_64
アーキテクチャを取り除く非常に簡単な方法があります。
プロジェクトのディレクトリでターミナルを開きます。
次の.framekwork
ように、ディレクトリをに直接変更します。
cd YourProjectDir/YourProject/YourLibrary.framework
以下に示す一連のコマンドを実行します
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
ここで注意すべき点がいくつかあります- lipo -remove
削除するアーキテクチャごとに1回実行する必要があります。lipo
は入力ファイルを変更せず、ファイルを生成するだけなのでlipo -remove
、x86_64
およびに対して1回実行する必要がありi386
ます。上記のコマンドは、最初に実行可能ファイルの名前を変更し、最終的に目的のアーチを削除してから、残りのファイルをクリーンアップすることで単純に実行しています。以上で、Application Loader ArchivalのiTunesConnectへのアップロードに緑色のチェックマークが表示されます。
注意事項:上記の手順は、製品のビルド中にのみ行う必要.framework
があります。シミュレーターアーキテクチャーから削除されるため、シミュレーターでのビルドは機能しなくなります(これは予想されます)。開発環境では、.framework
シミュレータと物理デバイスの両方でテストできるようにするため、ファイルからアーキテクチャを取り除く必要はありません。ファットライブラリFrameworks
がプロジェクトのフォルダにある場合は、受け入れられた回答を確認してください。