这是我发现的一个很好的解决方案:支持 iOS 5 和 Arm64 的静态库 http://blog.diogot.com/blog/2013/09/18/static-libs-with-support-to-ios-5-and-arm64/
Edited:
解决方案是构建不同的架构,然后使用 lipo 和命令行(或 Rakefile)将它们绑定。
首先使用 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'
请注意 ARCS 和 IPHONEOS_DEPLOYMENT_TARGET 上的差异。我们还需要构建模拟器,在这种情况下,我们必须将 sdk 更改为 iphonesimulator 7.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 不是有效的 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 https://github.com/diogot/StaticLibDemo
这是帖子的链接:支持 iOS 5 和 Arm64 的静态库 http://blog.diogot.com/blog/2013/09/18/static-libs-with-support-to-ios-5-and-arm64/
所有功劳归迪奥戈·特里达帕利所有。