[iOS][precompile] Support dynamic static linkage with prebuilts #53477
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary:
To be able to handle cocoapods USE_FRAMEWORKS with both dynamic/static linkage and precompiled we needed a common way to resolve this.
The issue was that when using precompiled and USE_FRAMEWORKS our precompiled framework caused the resulting Pods project to only include header files - hence there where no need to change the header_mappings_dir which a lot of the podspecs did.
When using precompiled and building with frameworks (USE_FRAMEWORKS) we need to explicitly add the correct path to ReactCodegen when calling
create_header_search_path_for_frameworks
to ensure libraries can access their codegen files.resolve_use_frameworks
in all podspecs.Changelog:
[IOS] [FIXED] - Fixed using USE_FRAMEWORKS (static/dynamic) with precompiled binaries
Test Plan:
Build RN-Tester with USE_FRAMEWORKS static and dynamic
Tests ran:
✅ Build with source and no USE_FRAMEWORKS
✅ Build with source and USE_FRAMEWORKS = static
🔴 Build with source and USE_FRAMEWORKS = dynamic
Undefined symbols for architecture arm64:
"facebook::react::oscompat::getCurrentProcessId()", referenced from:
facebook::react::jsinspector_modern::HostTargetTraceRecording::start() in HostTargetTraceRecording.o
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
This fails on
main
as well.FIXED when adding dep on React-oscompat when USE_FRAMEWORKS=dynamic:
✅ Build with source and USE_FRAMEWORKS = dynamic
✅ Build with precompiled and no USE_FRAMEWORKS
✅ Build with precompiled and USE_FRAMEWORKS = static
✅ Build with precompiled and USE_FRAMEWORKS = dynamic