-
Notifications
You must be signed in to change notification settings - Fork 2
Convert iOS builds to static libraries for App Store compatibility #10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: dellis1972 <810617+dellis1972@users.noreply.github.com>
…ke platform support accurate Co-authored-by: dellis1972 <810617+dellis1972@users.noreply.github.com>
|
Is there a way to generate a single OpenAL.framework package which will support both iOS Devices and Simulators? Can we use the |
…tures Co-authored-by: dellis1972 <810617+dellis1972@users.noreply.github.com>
Yes! I've implemented exactly what you suggested in commit f0e7d3e. The build now creates a single universal OpenAL.framework that supports both iOS devices and simulators using Key changes:
This approach follows standard iOS distribution practices and will make it much easier for developers - they just need to embed one framework instead of choosing between architecture-specific ones. |
|
can you fix this issue ? |
Co-authored-by: dellis1972 <810617+dellis1972@users.noreply.github.com>
... Fixed in commit 8c944ad. The issue was that both ios-arm64 (device) and iossimulator-arm64 (simulator) use the same arm64 architecture, which lipo cannot combine into a single fat binary. The solution detects architecture conflicts using |
|
will an arm64 binary build against the device sdk work on the ios simulator? |
No, an arm64 binary built against the device SDK will not work reliably on the iOS simulator. Even though both use arm64 architecture on Apple Silicon Macs, they require different SDKs:
These SDKs have different system libraries, frameworks, and runtime behavior. The simulator runs on macOS with different ABI requirements than actual iOS devices. The current conflict resolution logic prioritizing device builds over simulator builds when both use arm64 is problematic - it means the universal framework won't work properly on simulators. We should consider a different approach, such as using XCFrameworks which can properly contain both device and simulator binaries for the same architecture. |
|
ok can you go ahead and change the Universal system to not use lipo but instead produce a XCFramework |
Co-authored-by: dellis1972 <810617+dellis1972@users.noreply.github.com>
|
ok this is looking good . I made some changes. One last thing that is missing is we need to include the openal-soft LICENSE-pffft file in the OpenAL.framework folders. It should be named LICENSE, and we should include the openal-soft README as well. |
Co-authored-by: dellis1972 <810617+dellis1972@users.noreply.github.com>
Added LICENSE and README files to iOS frameworks in commit 46fa8d8. The openal-soft LICENSE-pffft file is now copied as "LICENSE" and the README.md is copied as "README" to both the individual device/simulator frameworks and the final XCFramework structure. |
|
ok, so thanks for all the hard work on this. However we have a slight change of plan. |
…y in artifacts Co-authored-by: dellis1972 <810617+dellis1972@users.noreply.github.com>
Done! Removed all framework and XCFramework creation code as requested in commit a6adec6. The iOS build now:
This eliminates 231 lines of framework packaging complexity while maintaining the core static library builds for iOS App Store compatibility. |
Updates the iOS build system to generate static libraries (
.afiles) instead of dynamic libraries, enabling iOS apps to be submitted to the App Store without rejection.Problem
The previous iOS builds were completely disabled with the comment "Don't build iphone binary as we cannot use dylibs." Apple requires that libraries be statically linked into the final binary for iOS apps submitted to the App Store.
Solution
This PR converts the iOS build process to create static libraries for all iOS platforms:
Key Changes
ios-arm64build for actual iOS devices-DLIBTYPE=STATICCMake flag to buildlibopenal.ainstead oflibopenal.dylibios-arm64: Actual iOS devices (iPhone/iPad)iossimulator-x64: Intel-based iOS simulatorsiossimulator-arm64: Apple Silicon iOS simulatorsOutput Structure
The generated static libraries are placed in standard artifacts directories:
Benefits
iOS developers can now link these static libraries in their Xcode projects and successfully submit to the App Store.
Fixes #8.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.