تكرار السؤال: …
الإجابة المختصرة
يمثل versionName (في أندرويد) و CFBundleShortVersionString (في iOS) رقم الإصدار الظاهر للمستخدم (مثل 1.2.0)، بينما versionCode و CFBundleVersion يمثلان رقم البناء الداخلي التراكمي الإلزامي لكل رفع جديد للمتجر.
الشرح
ترفض المتاجر رفع أي حزمة جديدة تحمل نفس رقم البناء (Build Number) لحزمة سابقة. يجب زيادة رقم البناء مع كل رفع تجريبي أو إنتاجي (مثل 101 ثم 102). يمكن أتمتة هذه الزيادة تلقائياً في أدوات مثل EAS Build عبر إعداد autoIncrement: true لتجنب أخطاء رفض الحزم بسبب تكرار الأرقام.
مثال بالكود
// في app.json:
{
"expo": {
"version": "1.2.0", // رقم النسخة العام للمستخدمين
"ios": {
"buildNumber": "15" // رقم البناء التراكمي الإلزامي لـ Apple
},
"android": {
"versionCode": 15 // رقم صحيح متزايد إلزامي لـ Google
}
}
}أخطاء شائعة
- محاولة رفع تحديث جديد للمتجر بنفس رقم versionCode أو buildNumber السابق مما يؤدي لرفض الحزمة فورياً من خوادم المتجر.