Đây là một giải pháp tốt tôi thấy: Static Libs With Support to iOS 5 and Arm64
được sửa đổi:
Giải pháp là để xây dựng kiến trúc khác nhau tách ra sau đó liên kết chúng bằng cách sử lipo, bằng cách sử dụng dòng lệnh (hoặc Rakefile).
Đầu tiên xây dựng các nhị phân với cánh tay sử dụng 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'
Lưu ý rằng bạn phải thiết lập IPHONEOS_DEPLOYMENT_TARGET = '5.0' và Vòm = 'armv7s ARMv7', nó được đề nghị để thiết lập xây dựng và sản phẩm dirs để làm những điều rõ ràng hơn, hãy xem Tham chiếu cài đặt xây dựng để biết thêm chi tiết về ý nghĩa của cờ này.
Tiếp xây dựng cho 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'
Lưu ý sự khác biệt trên Vòm và IPHONEOS_DEPLOYMENT_TARGET. Chúng tôi cũng cần phải xây dựng cho mô phỏng, trong trường hợp này chúng ta phải thay đổi sdk để iphonesimulator7.0 và xây dựng theo hai bước đầu tiên cho 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'
Bây giờ là phần khó khăn! Nếu bạn chỉ cần thay đổi ARCHS thành x86_86 tùy thuộc vào thiết lập Xcode của bạn, bạn sẽ nhận được một lỗi như: "x86_64 không phải là một vòm hợp lệ". Để tránh điều này chỉ cần thêm 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'
Cuối cùng chúng ta chỉ cần có để tạo ra một nhị phân chất béo với tất cả 5 kiến trúc:
lipo -create './build-arm/libStaticLibDemo.a' './build-arm64/libStaticLibDemo.a' './build-i386/libStaticLibDemo.a' './build-x86_64/libStaticLibDemo.a' -output 'libStaticLibDemo.a'
Tác giả tạo ra một ví dụ làm việc này, bạn có thể lấy nó: https://github.com/diogot/StaticLibDemo
Dưới đây là liên kết để đăng bài: Static Libs With Support to iOS 5 and Arm64
Tất cả các khoản tín dụng đi đến Diogo Tridapalli.
Xin lỗi, tôi quên đề cập đến rằng tôi cần phải xây dựng điều này không sử dụng Xcode nhưng biên dịch trực tiếp một thư viện unix truyền thống. Tôi đang chỉnh sửa câu trả lời của mình để phản ánh thực tế này. –