这是我找到的一个很好的解决方案:Static Libs With Support to iOS 5 and Arm64
已编辑:
解决方案是使用命令行(或 Rakefile)构建不同的体系结构,然后使用 lipo 将它们绑定。
首先使用 arm 使用 xcodebuild 构建二进制文件:
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',建议设置 build 和 product dirs 以使事情更清楚,请查看 Build Setting Reference 了解更多详细信息此标志的含义.
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 构建两个步骤:
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 is not a valid arch”。为避免这种情况,只需添加 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
这是帖子的链接:Static Libs With Support to iOS 5 and Arm64
所有功劳归于 Diogo Tridapalli。