𝗣𝗿𝗮𝘁𝗶 𝗯𝘂𝗶𝗹𝗱𝗹𝗼 𝟳𝟬+ 𝗜𝗢𝗦 𝗽𝗮𝗰𝗸𝗮𝗴𝗲𝗹𝘂𝗻𝗻𝗶 𝗿𝗲𝗲𝗰𝗼𝗺𝗽𝗶𝗹𝗶𝗻𝗴 𝗻𝗶𝘃𝗮𝗿𝗶𝗻𝗰𝗵𝗮𝗻𝗱𝗶

React Native డెవలపర్లు ఒక సాధారణ సమస్యను ఎదుర్కొంటున్నారు. ప్రతి క్లీన్ iOS బిల్డ్‌లో మీ పూర్తి డిపెండెన్సీ ట్రీ (dependency tree) రీకంపైల్ అవుతుంది. ప్రతిసారీ React Native core, Expo modules మరియు థర్డ్-పార్టీ లైబ్రరీల రీబిల్డ్ కోసం మీరు వేచి ఉండాల్సి వస్తుంది.

Expo SDK 56 దీనిని పరిష్కరిస్తుంది. ఇది Expo modulesను ప్రీకంపైల్డ్ (precompiled) XCFrameworks రూపంలో అందిస్తుంది. మీ యాప్ ఈ బైనరీలను నేరుగా లింక్ చేస్తుంది. మీరు ఇకపై వాటిని సోర్స్ నుండి రీబిల్డ్ చేయనవసరం లేదు.

ఈ మార్పు క్లీన్ బిల్డ్‌లను వేగవంతం చేస్తుంది. ఇది ఎకోసిస్టమ్‌ను CocoaPods నుండి Swift Package Managerకి మారుస్తుంది. ఇది డిపెండెన్సీల కోసం Apple అందించే ఆధునిక వ్యవస్థ.

మీకు కలిగే ప్రయోజనాలు:

  • తక్కువ కాంపిలేషన్ దశలు
  • వేగవంతమైన లోకల్ డెవలప్‌మెంట్
  • వేగవంతమైన EAS బిల్డ్‌లు
  • మరింత ఊహించదగిన (predictable) బిల్డ్ ఎన్విరాన్‌మెంట్లు

మీరు మైగ్రేట్ చేయాల్సిన అవసరం లేదు. ఇది మీ ప్రస్తుత యాప్‌లలో ఆటోమేటిక్‌గా పనిచేస్తుంది.

XCFrameworks అంటే ఏమిటి? ఇవి ప్రీకంపైల్డ్ నేటివ్ లైబ్రరీల కోసం Apple రూపొందించిన ఫార్మాట్. మీ మెషీన్‌లో సోర్స్ కోడ్‌ను కాంపైల్ చేసే బదులు, iOS పరికరాలు మరియు సిమ్యులేటర్ల కోసం ఇప్పటికే బిల్డ్ చేయబడిన బైనరీ ఫైల్‌లను మీరు ఉపయోగిస్తారు.

Apple M4 Maxలో పెరిగిన పనితీరు (Performance gains): • React Native core prebuilt: బిల్డ్ సమయంలో ~44% తగ్గుదల. • Expo modules prebuilt: సోర్స్ తో పోలిస్తే ~50% తగ్గుదల. • Third-party libraries prebuilt: సోర్స్ తో పోలిస్తే ~65% తగ్గుదల.

పెద్ద ప్రాజెక్టులు దీని ద్వారా అత్యధిక ప్రయోజనాన్ని పొందుతాయి. మీ యాప్ పెరిగేకొద్దీ, నేటివ్ బిల్డ్ సమయం సాధారణంగా పెరుగుతుంది. ఇది మీ CI మరియు EAS Build వేగాన్ని తగ్గిస్తుంది. ప్రీకంపైల్డ్ XCFrameworks ఈ పనిని పైప్‌లైన్‌లో ముందే పూర్తి చేస్తాయి. మేము ఫ్రేమ్‌వర్క్‌లను ఒకసారి కాంపైల్ చేసి, వాటిని మళ్ళీ మళ్ళీ ఉపయోగిస్తాము.

ఈ మార్పు ఒక ప్రధాన ఇన్‌ఫ్రాస్ట్రక్చర్ మార్పు. మేము అనేక సాంకేతిక అడ్డంకులను అధిగమించాల్సి వచ్చింది:

  • డిపెండెన్సీలను వేరు చేయడానికి పబ్లిక్ ఇంటర్‌ఫేస్‌లను రీఫ్యాక్టరింగ్ (Refactoring) చేయడం.
  • Objective-C మరియు Swift మధ్య ఉన్న సైక్లిక్ డిపెండెన్సీలను (cyclic dependencies) సరిదిద్దడం.
  • Swift Package Manager నిబంధనలను పాటించడానికి తాత్కాలిక సోర్స్ స్ట్రక్చర్లను సృష్టించడం.
  • లెగసీ హెడర్ లేఅవుట్‌లను సపోర్ట్ చేయడానికి Clang Virtual File System overlaysని ఉపయోగించడం.

SDK 56 సహజీవనం (coexistence) పై దృష్టి పెడుతుంది. మీరు ఇప్పటికీ CocoaPodsని ఉపయోగించవచ్చు. మీరు ప్రీకంపైల్డ్ మాడ్యూల్స్‌ను ఆపివేయాలనుకుంటే, ఈ సెట్టింగ్‌ను ఉపయోగించండి: EXPO_USE_PRECOMPILED_MODULES=0

ఈ అడుగు Expoను Apple యొక్క ఆధునిక డెవలప్‌మెంట్ ఎకోసిస్టమ్‌కు మరింత దగ్గర చేస్తుంది. దీని అర్థం భవిష్యత్తులో వేగవంతమైన బిల్డ్‌లు మరియు మెరుగైన ఆర్కిటెక్చర్ లభిస్తాయి.

మూలం: https://dev.to/expo/skip-recompiling-70-ios-packages-on-every-build-27a6