تكرار السؤال: …
الإجابة المختصرة
معمارية CNG تعتمد على توليد مجلدي android و ios برمجياً وبشكل نظيف وقابل للحذف عند الطلب من خلال app.json والـ Config Plugins بدلاً من تعديل الملفات الأصلية يدوياً.
الشرح
في السابق كان مطورو ريأكت نيتف يضطرون لتعديل ملفات AppDelegate و AndroidManifest و Gradle يدوياً، مما يجعل ترقية إصدارات React Native كابوساً شاقاً ومعرضاً للتعارضات. في معمارية CNG، تصبح مجلدات الـ Native مجرد ناتج تجميع (Build Artifact) يمكن حذفه وإعادة إنشاؤه بأمر npx expo prebuild بنقاء تام.
مثال بالكود
// app.config.ts — the single source of truth; ios/ and android/ are generated from it
import type { ExpoConfig } from "expo/config";
export default (): ExpoConfig => ({
name: "MyApp",
slug: "my-app",
ios: { bundleIdentifier: "com.example.myapp" },
android: { package: "com.example.myapp" },
plugins: ["expo-camera", ["expo-build-properties", { android: { minSdkVersion: 26 } }]],
});
// Generate (or cleanly regenerate) the native projects:
// npx expo prebuild --clean
// ios/ and android/ can be git-ignored and deleted at any time.أخطاء شائعة
- تعديل كود الـ Native يدوياً داخل مجلدي android أو ios دون توثيقه في Config Plugin، مما يؤدي لمسحه عند تشغيل prebuild.
أسئلة متابعة
- ما هي الـ Expo Config Plugins وكيف تسمح بتعديل كود ومكتبات الـ Native بأمان؟
- ما الفرق بين React Native CLI الخالص (Bare Workflow) و Expo Managed Workflow؟