1

HelloWorld というアプリに含まれる、sampleStaticLib.a というユニバーサル スタティック ライブラリを作成したいと考えています。HelloWorld アプリは、静的ライブラリで定義された API を使用する必要があり、iOS シミュレーターと iOS デバイスの両方で動作する必要があります。インターネットのさまざまな投稿から、lipo ツールを使用してシミュレーターとデバイスの両方の静的ライブラリをユニバーサル ライブラリに集約し、HelloWorld.xcodeproj 内にユニバーサル ライブラリを含めることでこれを達成できることを理解しています。

ただし、代わりに、次のことを行う場合:

  • 静的ライブラリ xcodeproject (sampleStaticLib.xcodeproj) の有効なアーキテクチャを「armv7 armv7s arm64 i386 x86_64」に設定するだけです。
  • sampleStaticLibrary.a を生成します
  • HelloWorld.xcodeproj に含めます

「sampleStaticLib」の有効なアーキテクチャを x86 と ARM にまたがるすべてのアーキテクチャに設定したので、ライブラリはシミュレータとデバイスの両方で動作するはずです。しかし、シミュレーターでは機能しません。

では、幅広い「有効なアーキテクチャ」を設定することで、ユニバーサル スタティック ライブラリを作成する際に「lipo ツール」を使用する必要がなくなるのではないでしょうか?

4

2 に答える 2

1

いいえ、残念ながら、それはあなたが望むほど簡単にはできません。

その理由は、プロジェクトをビルドすると、要求されたすべてのアーキテクチャに対して選択された SDK でビルドされるためです。iOS SDK は ARM をサポートし、iOS シミュレーター SDK は Intel をサポートします。iOS SDK に対して ARM スライスをビルドし、iOS シミュレーター SDK に対して Intel スライスをビルドしてから、それらを一緒にユニバーサル バイナリにリポする必要があります。

于 2014-12-19T20:49:48.157 に答える