𝗦𝗸𝗶𝗽 𝗥𝗲𝗰𝗼𝗺𝗽𝗶𝗹𝗶𝗻𝗴 𝟳𝟬+ 𝗜𝗢𝗦 𝗣𝗮𝗰𝗸𝗮𝗴𝗲𝘀 𝗼𝗻 𝗘𝘃𝗲𝗿𝘆 𝗕𝘂𝗶𝗹𝗱
Pembangun React Native menghadapi masalah biasa. Setiap clean build iOS akan mengompilasi semula keseluruhan pokok kebergantungan anda. Anda perlu menunggu teras React Native, modul Expo, dan perpustakaan pihak ketiga dibina semula setiap kali.
Expo SDK 56 menyelesaikan masalah ini. Ia membekalkan modul Expo sebagai XCFrameworks yang telah dikompilasi terlebih dahulu. Aplikasi anda akan menghubungkan binari ini secara terus. Anda tidak lagi perlu membina semula mereka daripada sumber.
Perubahan ini menjadikan clean build lebih pantas. Ia juga memindahkan ekosistem daripada CocoaPods kepada Swift Package Manager. Ini adalah sistem moden Apple untuk kebergantungan.
Manfaat untuk anda:
- Langkah kompilasi yang lebih sedikit
- Pembangunan tempatan yang lebih pantas
- Build EAS yang lebih pantas
- Persekitaran build yang lebih boleh diramal
Anda tidak perlu melakukan migrasi. Ini berfungsi secara automatik dalam aplikasi sedia ada anda.
Apakah itu XCFrameworks? Ia adalah format Apple untuk perpustakaan natif yang telah dikompilasi terlebih dahulu. Daripada mengompilasi kod sumber pada mesin anda, anda menggunakan fail binari yang telah dibina untuk peranti dan simulator iOS.
Peningkatan prestasi pada Apple M4 Max: • Teras React Native pra-bina: ~44% pengurangan dalam masa build. • Modul Expo pra-bina: ~50% pengurangan berbanding sumber. • Perpustakaan pihak ketiga pra-bina: ~65% pengurangan berbanding sumber.
Projek besar melihat keuntungan terbesar. Apabila aplikasi anda berkembang, masa build natif biasanya meningkat. Ini menjejaskan kelajuan CI dan EAS Build anda. XCFrameworks yang telah dikompilasi memindahkan kerja lebih awal dalam saluran paip. Kami mengompilasi rangka kerja tersebut sekali dan menggunakannya semula.
Peralihan ini merupakan anjakan infrastruktur yang besar. Kami terpaksa menyelesaikan beberapa halangan teknikal:
- Melakukan penstrukturan semula antara muka awam untuk mengasingkan kebergantungan.
- Memperbaiki kebergantungan kitaran antara Objective-C dan Swift.
- Mencipta struktur sumber sementara untuk memenuhi peraturan Swift Package Manager.
- Menggunakan Clang Virtual File System overlays untuk menyokong susun atur pengepala lama.
SDK 56 memfokuskan kepada koeksistensi. Anda masih boleh menggunakan CocoaPods. Jika anda perlu mematikan modul yang telah dikompilasi, gunakan tetapan ini: EXPO_USE_PRECOMPILED_MODULES=0
Langkah ini membawa Expo lebih dekat kepada ekosistem pembangunan moden Apple. Ini bermakna build yang lebih pantas dan seni bina yang lebih bersih untuk masa hadapan.
Sumber: https://dev.to/expo/skip-recompiling-70-ios-packages-on-every-build-27a6
