这是我发现的一个很好的解决方案:支持 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',建议设置 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
这是帖子的链接:支持 iOS 5 和 Arm64 的静态库
所有学分都归于 Diogo Tridapalli。