𝗦𝗸𝗶𝗽 𝗥𝗲𝗰𝗼𝗺𝗽𝗶𝗹𝗶𝗻𝗴 𝟳𝟬+ 𝗜𝗢𝗦 𝗣𝗮𝗰𝗸𝗮𝗴𝗲𝘀 𝗼𝗻 𝗘𝘃𝗲𝗿𝘆 𝗕𝘂𝗶𝗹𝗱
React Native ಡೆವಲಪರ್ಗಳು ಒಂದು ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸುತ್ತಾರೆ. ಪ್ರತಿ 'clean iOS build' ನಿಮ್ಮ ಸಂಪೂರ್ಣ dependency tree ಅನ್ನು ಮರು-ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ. ಪ್ರತಿ ಬಾರಿಯೂ React Native core, Expo modules ಮತ್ತು third-party libraries ಮರು-ನಿರ್ಮಾಣವಾಗಲು ನೀವು ಕಾಯಬೇಕಾಗುತ್ತದೆ.
Expo SDK 56 ಇದನ್ನು ಸರಿಪಡಿಸುತ್ತದೆ. ಇದು Expo modules ಅನ್ನು precompiled XCFrameworks ರೂಪದಲ್ಲಿ ನೀಡುತ್ತದೆ. ನಿಮ್ಮ ಆ್ಯಪ್ ಈ binaries ಅನ್ನು ನೇರವಾಗಿ ಲಿಂಕ್ ಮಾಡುತ್ತದೆ. ನೀವು ಇನ್ನು ಮುಂದೆ ಅವುಗಳನ್ನು source ನಿಂದ ಮರು-ನಿರ್ಮಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.
ಈ ಬದಲಾವಣೆಯು clean builds ಅನ್ನು ವೇಗಗೊಳಿಸುತ್ತದೆ. ಇದು ಪರಿಸರ ವ್ಯವಸ್ಥೆಯನ್ನು (ecosystem) CocoaPods ನಿಂದ Swift Package Manager ಗೆ ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು dependencies ಗಾಗಿ Apple ನ ಆಧುನಿಕ ವ್ಯವಸ್ಥೆಯಾಗಿದೆ.
ನಿಮಗಾಗುವ ಪ್ರಯೋಜನಗಳು:
- ಕಡಿಮೆ ಕಂಪೈಲೇಶನ್ ಹಂತಗಳು
- ವೇಗವಾದ ಸ್ಥಳೀಯ ಅಭಿವೃದ್ಧಿ (local development)
- ವೇಗವಾದ EAS builds
- ಹೆಚ್ಚು ನಿರೀಕ್ಷಿತ build environments
ನೀವು ಮೈಗ್ರೇಟ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ. ಇದು ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಆ್ಯಪ್ಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
XCFrameworks ಎಂದರೇನು? ಇವು precompiled native libraries ಗಾಗಿ Apple ಬಳಸುವ ಫಾರ್ಮ್ಯಾಟ್ ಆಗಿದೆ. ನಿಮ್ಮ ಯಂತ್ರದಲ್ಲಿ source code ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡುವ ಬದಲಿಗೆ, iOS ಸಾಧನಗಳು ಮತ್ತು simulators ಗಾಗಿ ಈಗಾಗಲೇ ನಿರ್ಮಿಸಲಾದ binary ಫೈಲ್ಗಳನ್ನು ನೀವು ಬಳಸುತ್ತೀರಿ.
Apple M4 Max ನಲ್ಲಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ಲಾಭಗಳು: • React Native core prebuilt: build time ನಲ್ಲಿ ~44% ಕಡಿತ. • Expo modules prebuilt: source ಗೆ ಹೋಲಿಸಿದರೆ ~50% ಕಡಿತ. • Third-party libraries prebuilt: source ಗೆ ಹೋಲಿಸಿದರೆ ~65% ಕಡಿತ.
ದೊಡ್ಡ ಪ್ರಾಜೆಕ್ಟ್ಗಳು ಹೆಚ್ಚಿನ ಲಾಭವನ್ನು ಪಡೆಯುತ್ತವೆ. ನಿಮ್ಮ ಆ್ಯಪ್ ಬೆಳೆದಂತೆ, native build ಸಮಯ ಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಇದು ನಿಮ್ಮ CI ಮತ್ತು EAS Build ವೇಗವನ್ನು ಕುಂಠಿತಗೊಳಿಸುತ್ತದೆ. Precompiled XCFrameworks ಈ ಕೆಲಸವನ್ನು ಪೈಪ್ಲೈನ್ನ ಆರಂಭಿಕ ಹಂತಕ್ಕೆ ತರುತ್ತದೆ. ನಾವು framework ಗಳನ್ನು ಒಮ್ಮೆ ಕಂಪೈಲ್ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ಅವುಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತೇವೆ.
ಈ ಪರಿವರ್ತನೆಯು ಒಂದು ಪ್ರಮುಖ ಮೂಲಸೌಕರ್ಯ ಬದಲಾವಣೆಯಾಗಿದೆ (infrastructure shift). ನಾವು ಹಲವಾರು ತಾಂತ್ರಿಕ ಅಡೆತಡೆಗಳನ್ನು ಪರಿಹರಿಸಬೇಕಾಯಿತು:
- dependencies ಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸಲು public interfaces ಅನ್ನು refactor ಮಾಡುವುದು.
- Objective-C ಮತ್ತು Swift ನಡುವಿನ cyclic dependencies ಅನ್ನು ಸರಿಪಡಿಸುವುದು.
- Swift Package Manager ನಿಯಮಗಳನ್ನು ಪಾಲಿಸಲು ತಾತ್ಕಾಲಿಕ source structures ರಚಿಸುವುದು.
- legacy header layouts ಅನ್ನು ಬೆಂಬಲಿಸಲು Clang Virtual File System overlays ಬಳಸುವುದು.
SDK 56 ಸಹಬಾಳ್ವೆಯ ಮೇಲೆ (coexistence) ಗಮನಹರಿಸುತ್ತದೆ. ನೀವು ಇನ್ನೂ CocoaPods ಅನ್ನು ಬಳಸಬಹುದು. ನೀವು precompiled modules ಅನ್ನು ಆಫ್ ಮಾಡಬೇಕೆಂದರೆ, ಈ setting ಬಳಸಿ:
EXPO_USE_PRECOMPILED_MODULES=0
ಈ ಕ್ರಮವು Expo ಅನ್ನು Apple ನ ಆಧುನಿಕ development ecosystem ಗೆ ಹತ್ತಿರವಾಗಿಸುತ್ತದೆ. ಇದರರ್ಥ ಭವಿಷ್ಯಕ್ಕಾಗಿ ವೇಗವಾದ builds ಮತ್ತು ಸ್ವಚ್ಛವಾದ architecture.
Source: https://dev.to/expo/skip-recompiling-70-ios-packages-on-every-build-27a6
