ここに私が見つけた良い解決策があります:iOS 5およびArm64をサポートする静的ライブラリ
編集:
解決策は、コマンドライン (または Rakefile) を使用して、異なるアーキテクチャを分離して構築し、それらを lipo を使用してバインドすることです。
最初に、xcodebuild を使用して arm でバイナリをビルドします。
xcodebuild -project 'StaticLibDemo.xcodeproj' -configuration 'Release' -sdk 'iphoneos7.0' clean build ARCHS='armv7 armv7s' IPHONEOS_DEPLOYMENT_TARGET='5.0' TARGET_BUILD_DIR='./build-arm' BUILT_PRODUCTS_DIR='./build-arm'
IPHONEOS_DEPLOYMENT_TARGET='5.0' および ARCHS='armv7 armv7s' を設定する必要があることに注意してください。より明確にするために、ビルドおよび製品ディレクトリを設定することをお勧めします。このフラグの意味の詳細については、ビルド設定リファレンスを参照してください。
arm64 の次のビルド:
xcodebuild -project 'StaticLibDemo.xcodeproj' -configuration 'Release' -sdk 'iphoneos7.0' clean build ARCHS='arm64' IPHONEOS_DEPLOYMENT_TARGET='7.0' TARGET_BUILD_DIR='./build-arm64' BUILT_PRODUCTS_DIR='./build-arm64'
ARCHS と IPHONEOS_DEPLOYMENT_TARGET の違いに注意してください。また、シミュレーター用にビルドする必要があります。この場合、sdk を iphonesimulator7.0 に変更し、最初に i386 用に 2 つのステップでビルドする必要があります。
xcodebuild -project 'StaticLibDemo.xcodeproj' -configuration 'Release' -sdk 'iphonesimulator7.0' clean build ARCHS='i386' IPHONEOS_DEPLOYMENT_TARGET='5.0' TARGET_BUILD_DIR='./build-i386' BUILT_PRODUCTS_DIR='./build-i386'
今、トリッキーな部分です!Xcode の設定に応じて ARCHS を x86_86 に変更すると、「x86_64 は有効なアーキテクチャではありません」というエラーが表示されます。これを回避するには、VALID_ARCHS='x86_64' を追加します。
xcodebuild -project 'StaticLibDemo.xcodeproj' -configuration 'Release' -sdk 'iphonesimulator7.0' clean build ARCHS='x86_64' VALID_ARCHS='x86_64' IPHONEOS_DEPLOYMENT_TARGET='7.0' TARGET_BUILD_DIR='./build-x86_64' BUILT_PRODUCTS_DIR='./build-x86_64'
最後に、5 つのアーキテクチャすべてでファット バイナリを作成する必要があります。
lipo -create './build-arm/libStaticLibDemo.a' './build-arm64/libStaticLibDemo.a' './build-i386/libStaticLibDemo.a' './build-x86_64/libStaticLibDemo.a' -output 'libStaticLibDemo.a'
著者はこれの実例を作成しました。入手できます: https://github.com/diogot/StaticLibDemo
投稿へのリンクは次のとおりです。iOS 5 および Arm64 をサポートする静的ライブラリ
すべてのクレジットは Diogo Tridapalli に送られます。