ios - لا يمكن تشغيل التطبيق على جهاز محاكاة بعد تثبيت Xcode 11-خطأ CFBundleVersion




xcode10 xcode11 (6)

بالأمس ، قمت بتنزيل الإصدار التجريبي من Xcode 11. بعد ذلك ، قمت بفتح مشروعي وحاولت تشغيله باستخدام Xcode جديد. لسوء الحظ حدث خطأ في الرسالة:


Failed to install the requested application
Domain: NSPOSIXErrorDomain
Code: 22
Failure Reason: The application's CFBundleVersion is invalid.
Recovery Suggestion: Ensure your bundle contains a CFBundleVersion with a valid semantic version number.
--

لقد أغلقت الإصدار التجريبي وحاولت تشغيله مرة أخرى باستخدام أحدث إصدار ثابت من Xcode (10.2.1) ، ولكن حدث الخطأ نفسه. يجب أن أذكر أنه قبل محاولة تشغيل مشروع باستخدام Xocde 11 ، كان يعمل دون أي مشاكل على Xcode 10. لم يتغير شيء قبل وبعد تشغيله مع beta Xcode.

ما جربته بالفعل:

  • لقد أزلت Xcode 11 beta
  • لقد قمت بتنظيف مشروعي وسحبه من أحدث فرع
  • لقد أزلت Xcode 10 بالكامل من:
~/Library/Caches/com.apple.dt.Xcode
~/Library/Developer
~/Library/MobileDevice
~/Library/Preferences/com.apple.dt.Xcode.plist
/Library/Preferences/com.apple.dt.Xcode.plist
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.bom
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.plist
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.bom
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.plist
  • ثم قم بتثبيت نسخة مستقرة جديدة 10.2.1

يمكنني تشغيل مشاريع أخرى لم يتم اختبارها مع Xcode 11 دون أي مشاكل.

فكرتي الأخيرة هي مجرد إعادة تثبيت macOS ، لكنني لا أرغب في القيام بذلك.

تحرير: لقد نسيت أن أذكر أن التطبيق يعمل على iPhone XS المادية.


إضافة إلى ذلك ، لاحظت أنه إذا كان CFBundleVersion الخاص بك لا يشير إلى:

This key is a machine-readable string composed of one to three period-separated integers, such as 10.14.1. The string can only contain numeric characters (0-9) and periods. انها لن تبني على محاكاة

link


إنها ميزة جديدة في Xcode11.

في ملاحظة الإصدار قالت:

الحزم التي لا تحتوي على CFBundleVersion غير صالحة ولا يمكن تثبيتها بشكل صحيح على الأجهزة أو أجهزة المحاكاة. يقوم CoreSimulator الآن بفحص هذه الحزم ورفضها في وقت سابق من العملية برسالة خطأ أوضح. (49892531)

يمكنك:

  1. قم بتعديل CFBundleVersion الخاص بك من خلال نمط link هذا
  2. إعادة تعيين Xcode والمحاكاة الخاصة بك
  3. تشغيل مرة أخرى ، سترى أنه يعمل مرة أخرى

عند تشغيل التطبيق بنجاح ، يمكنك تغيير CFBundleVersion مرة أخرى ، وستجد أنه لا يزال بإمكانه العمل على XD


جريت في هذه القضية نفسها كذلك.

لم أحصل على تجربة بعض الخيارات الأخرى المتوفرة هنا ، لكنني تمكنت من العودة إلى إنشاء جهاز محاكاة عن طريق حذف دليل / DerivedData.

إذا كنت غير متأكد من مكان العثور عليه ، فما عليك سوى القيام بذلك: Xcode -> تفضيلات -> المواقع وحدد السهم المجاور لمسار البيانات المشتقة


حدث لي أيضا ، يضيع ما يقرب من يوم كامل الكشفية لأسباب محتملة.

الخطوات التي حلت المشكلة أخيرًا وسمحت لي بالتثبيت على جهاز محاكاة:

  1. قم بإنهاء Xcode و iOS Simulator
  2. قم بإزالة /Library/Developer (واحد من الجذر) ، أو إعادة تسميته إذا كنت تريد الاحتفاظ بنسخة احتياطية
  3. أعد تشغيل Xcode ، واتفق على تثبيت أدوات سطر الأوامر
  4. مواصلة العمل حيث تركت :)

إلى جانب الخطوات المذكورة في السؤال (إلغاء تثبيت Xcode 11 بالكامل ، وإلغاء تثبيت Xcode 10 بالكامل وإعادة تثبيته بعد ذلك) ، حاولت أيضًا استنساخ المشروع في موقع آخر ، عبر جميع المواقع الممكنة للبيانات المشتقة ، وتثبيت أوقات تشغيل المحاكاة الأخرى ، ومحاولة إجراء تلك . لم ينجح أي منهم ، ولحسن الحظ أظهر تطبيق سجل وحدة التحكم مسار العملية التي رفضت حزمة التطبيق ، فقد كان أحد الثنائيات التي تم تثبيتها بواسطة Xcode في /Library/Developer/PrivateFrameworks/CoreSimulator.framework .

يبدو أن Xcode 11 قام بتثبيت إصدار أحدث من الأطر ، وأن Xcode 10 لم يحل محلها. أدت إزالة المجلد /Library/Developer بالكامل إلى تثبيت أدوات سطر الأوامر ، والتي أعادت أخيرًا وقت تشغيل المحاكاة الذي عمل بشكل صحيح في Xcode 10.

انت يجب حب بيتاس :)


كان لي نفس المشكلة. أجد أن Xcode 11 Beta Release Notes قد شرحت ذلك.

Bundles without a CFBundleVersion are invalid and cant be properly installed on 
devices or simulators. CoreSimulator now checks and rejects such bundles earlier in
the process with a clearer error message. (49892531)

وهذا link هو تنسيق CFBundleVersion.

عندما قمت بحل هذه المشكلة ، اكتشفت وجود مشكلة في CFBundleVersion عند تشغيل التطبيق لأول مرة. عندها دائمًا توجد مشكلة بغض النظر عما إذا كان التنسيق صحيحًا أم لا. لذلك أعد تشغيل Xcode و Simulator ، وأغير CFBundleVersion إلى تنسيق صحيح ، التطبيق يعمل بشكل صحيح.


هناك الكثير من المعلومات الخاطئة في الإجابات هنا ، لذلك أردت تقديم رد موثوق.

المشكلة هنا هي أن الإصدار الجديد من CoreSimulator.framework مع الإصدار التجريبي من Xcode 11 يقوم بالتحقق من صحة على CFBundleVersion التي لم تفعلها الإصدارات السابقة. عمليات التحقق هذه صالحة وتمثل مشكلة في التطبيق الخاص بك ، ولكن يوجد أيضًا خطأ في كيفية إجراء عمليات الفحص التي تؤدي إلى زيادة المشكلة.

أولاً ، قم بإصلاح CFBundleVersion في Info.plist الخاص بك. يجب أن يتكون من أرقام فقط وحتى فترتين (أي ##. [. ## [. ##]] ، على سبيل المثال: 12.4.2).

ثانياً ، بعد إصلاح CFBundleVersion ، تحتاج إلى killall -9 CoreSimulatorBridge لأنه لسوء الحظ ، يتم تخزين القيمة القديمة في CoreSimulatorBridge ، مما يمنعها من التعرف على القيمة الجديدة. هذا الجزء خطأ ، وسيتم تناوله في إصدار تجريبي مستقبلي.







xcode11