Flutter: تنتج أوامر متعددة '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework

تم إنشاؤها على ١٦ أغسطس ٢٠١٨  ·  50تعليقات  ·  مصدر: flutter/flutter

عندما أرغب في تصحيح أخطاء التطبيق في بيئة MacOs ، فإنه يلقي بهذا الخطأ:

تنتج أوامر متعددة '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework
1) الهدف 'Runner' يحتوي على أمر نسخ من '/ios/Flutter/Flutter.framework' إلى '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) يعتمد هذا الأمر على الأمر في الهدف "Runner": مرحلة البرنامج النصي "[CP] Embed Pods Frameworks"
تحذير: تجاهل ملف الإخراج المكرر: "//build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework" (في الهدف "Runner")
ملاحظة: استخدام نظام بناء جديد ملاحظة: تخطيط بناء ملاحظة: إنشاء وصف بناء

ماك 10.14 بيتا
Xcode 10 بيتا

كيف تصلحها؟ شكرا جزيلا

annoyance crowd platform-ios crash tool

التعليق الأكثر فائدة

تمكنت من إصلاحه بفتح مشروع مساحة العمل Runner في Xcode 10. ثم انتقل إلى File ، Workspace Settings وتغيير نظام الإنشاء إلى Legacy Build System .

schermafbeelding 2018-08-16 om 14 10 10

ال 50 كومينتر

هل يمكنك تقديم خطوات دقيقة حول كيفية التكاثر؟
كيف أنشأت المشروع؟
ما هي الملفات التي قمت بتغييرها ، ما هي التغييرات التي قمت بها؟

الرجاء إضافة الناتج flutter doctor -v .

تمكنت من إصلاحه بفتح مشروع مساحة العمل Runner في Xcode 10. ثم انتقل إلى File ، Workspace Settings وتغيير نظام الإنشاء إلى Legacy Build System .

schermafbeelding 2018-08-16 om 14 10 10

شكر كثيرا! إنها تعمل.

المشاريع المتضررة

تؤثر هذه المشكلة على جميع مشاريع Flutter التي تم إنشاؤها باستخدام Xcode 10 التي تعتمد على CocoaPods - وهذا يعني عادةً تلك التي تعتمد على المكونات الإضافية.

الحلول

هناك نوعان من الحلول:

  • الخيار 1: استخدام نظام البناء القديم. كما لاحظ @ gi097 ، افتح ios/Runner.xcworkspace ، وقم بتغيير نظام الإنشاء إلى Legacy Build System .
  • الخيار 2: استخدم نظام بناء Xcode 10 الجديد.

    1. افتح ios/Runner.xcworkspace

    2. حدد المشروع Runner في الشريط الجانبي لمتصفح المشروع.

    3. في العرض الرئيسي ، حدد الهدف Runner ، ثم حدد علامة التبويب Build Phases .

    4. قم بتوسيع المرحلة Embed Frameworks وحدد Flutter.framework من قائمة الإطارات المضمنة.

    5. انقر فوق - لإزالة Flutter.framework من القائمة (تأكد من الاحتفاظ بـ App.framework ).

السبب الجذري

عندما تكون المكونات الإضافية قيد الاستخدام ، يوجد إجراءان متنافسان للبناء ينسخان Flutter.framework في دليل أطر عمل تطبيق البناء:

  1. مرحلة الإنشاء Embed Frameworks لمشروع Runner
  2. مرحلة الإنشاء [CP] Embed Pods Frameworks التي أنشأها pod install في المشروع.

العنصر (1) موجود لضمان نسخ إطار العمل في التطبيق المدمج في حالة عدم وجود مكونات إضافية (وبالتالي لا يوجد تكامل CocoaPods في مشروع Xcode). العنصر (2) موجود لأن podspec الخاص بـ Flutter يعلن Flutter.framework كإطار تم بيعه ، ويضيف CocoaPods تلقائيًا خطوة نسخ لكل إطار vended_framework في الإغلاق الانتقالي لتبعيات CocoaPods.

إصلاح فوري

يتمثل الإصلاح الفوري في إيجاد طريقة لإعادة الاشتراك تلقائيًا في إصلاح البنية القديمة حتى يتم وضع حل أفضل على المدى الطويل. كانت الإصدارات التجريبية السابقة تدعم -useNewBuildSystem=NO أو -useModernBuildSystem=NO ولكن يبدو أنه تمت إزالة هذا في إصدار GM. يبدو أن الطريقة الحالية للقيام بذلك هي إضافة زوج ذي قيمة رئيسية ( <key>BuildSystemType</key><string>Original</string> ) إلى ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings .

إصلاح طويل المدى

سيكون أبسط خيار هو إزالة Flutter.framework من Embed Frameworks أعلاه والاعتماد دائمًا على تثبيت pod ، حتى في حالة عدم وجود تبعيات للمكونات الإضافية. سنحتاج إلى تحديث أداة Flutter لتحرير المشاريع الحالية تلقائيًا لإزالة Flutter.framework من خطوة Embed Frameworks.

المؤيد: كود أبسط. con: يجعل cocoapods خطوة تثبيت مطلوبة لتطوير Flutter ، يتضمن التشغيل الأول تنزيلًا ضخمًا وبطيئًا جدًا لمستندهم.

سيكون الخيار الأجمل قليلاً بالنسبة لنا هو اكتشاف ما إذا كان المشروع يستخدم المكونات الإضافية أم لا ، وتحرير مشروع Xcode للتحقق من وإزالة Flutter.framework من خطوة Embed Frameworks تلقائيًا إذا كانت المكونات الإضافية قيد الاستخدام أو إضافتها إذا لم تكن كذلك.

المؤيد: تجربة مستخدم أفضل. يخدع: كود أكثر تعقيدًا.

في كلتا الحالتين ، نحتاج إلى آلية ما لتحرير ملف project.pbxproj تلقائيًا وإزالة إطار العمل من خطوة بناء إطارات التضمين. إن دعم إضافته مرة أخرى ليس عملاً متزايدًا وينتج عنه تجربة أفضل.

/ سم مكعبtvolkertgspencergoogdnfield

عُذْرًا ، لَمْ أَقَدْ إِغْراقُ مُتعقِّبِ الْمُشْكَلَة.

لقد اتبعت هذا القرار # 20685

ولكن الآن ينتج عنه الخطأ التالي

captura de tela 2018-09-18 as 10 06 38 am

أي شخص لديه أي فكرة عن كيفية حل هذا؟
@ gi097cbrackenzoechisidealicehungrymonkey

tiagosito سيتم إرسال التصحيح مؤقتًا إلى الفرع master . في الوقت الحالي ، راجع الحلول المدرجة في تعليقي أعلاه.

tiagosito سيتم وضع التصحيح للحظات على المستوى الرئيسي. في الوقت الحالي ، راجع الحلول المدرجة في تعليقي أعلاه.

cbracken لقد اتبعت الخيار 2 الذي أبلغت عنه # 20685

لكن كان لدي هذه المشكلة الصغيرة رقم 21989

تم حلها بهذه الطريقة # 21989

أنا لا أستخدم القناة الرئيسية ، عند إصدار التصحيح الذي ذكرته ، هل سأحصل على نفس الحل على القناة التجريبية؟

cbracken و @ gi097 الآن شكرا جزيلا لك

واجهت هذه المشكلة أيضًا في وقت سابق اليوم بعد الانتقال إلى نظام التشغيل iOS 12 ، والذي تطلب بعد ذلك xcode 10 ، والذي أدى بعد ذلك إلى كسر الرفرفة. نجح الخيار 2 أعلاه ، ولكن يجب عليك مسح ذاكرة التخزين المؤقت لإنشاء الحزمة:

~/flutter/.pub-cache/hosted/
flutter clean
flutter packages get

وإلا فسوف تحك رأسك.

لقد وصل "الإصلاح الفوري" في تعليقي أعلاه إلى السيد. العمل على توصيل هذا إلى قناة dev أسرع وقت ممكن.

لمعلوماتك ، وصل هذا الآن إلى قناة dev .

رائعة!
بالمناسبة ، كيف نطبق هذا التصحيح في المشاريع القائمة؟ ببساطة عن طريق القيام بترقية الرفرفة؟

tadejkan سترغب في تشغيل flutter channel dev للتبديل إلى قناة dev ثم flutter upgrade .

cbracken ، لا يزال هناك شك هو ... سنستخدم الوضع القديم للتجميع أو التصحيح سوف يصحح بالفعل للوضع الجديد للترجمة.

بمعنى آخر ، هل يطبق التصحيح حل الخطوة 1 أو الخطوة 2 الذي قدمته هنا أم أنه بالفعل حل نهائي ومتى سيتم تطبيق هذا التصحيح على القناة التجريبية؟

tiagosito فإن التصحيح الذي قمت أعِد الاشتراك في نظام إنشاء ما قبل Xcode 10) والذي يوفر لنا الوقت لتنفيذ إصلاح يقوم بذلك بالطريقة الصحيحة. هناك حل سريع بديل لذلك ، لكنه سيجعل CocoaPods مطلبًا لجميع تطبيقات Flutter المبنية على iOS (حتى تلك التي لا تعتمد على المكونات الإضافية). نظرًا لحجم / وقت التنزيل الأولي للتشغيل الأول من CocoaPods ، فأنا أفضل حقًا تجنب السير في هذا الطريق.

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

أواجه مشكلات في بناء نظام تشغيل iOS والتي لا يمكنني حلها لمدة 4 أيام كاملة الآن ... أصبحت عاجزًا للغاية الآن حيث جربت العديد من الأشياء والتركيبات ؛ أصبح مرتبكًا وحزينًا جدًا.
هذا هو أحدث خطأ بعد عدة أخطاء مختلفة:

duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._localAuthenticationInfo in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._keychainInfo in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasLocalAuthentication in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasKeychain in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._cachedState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._keychainExpireTime in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_CLASS_$_MDMPasscodeCache in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_METACLASS_$_MDMPasscodeCache in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasEnteredBackground in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeState._status in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeState._info in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_CLASS_$_MDMPasscodeState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_METACLASS_$_MDMPasscodeState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) ld: 13 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

ld: 13 duplicate symbols for architecture x86_64
Launching lib/main.dart on iPhone XS Max in debug mode...
Xcode build done.
Failed to build iOS app
Error output from Xcode build:
↳
** BUILD FAILED **
Xcode's output:
↳
warning: The iOS Simulator deployment target is set to 4.3, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'nanopb')
warning: The iOS Simulator deployment target is set to 6.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'GoogleUtilities')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'GTMSessionFetcher')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'Protobuf')
warning: The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'leveldb-library')
warning: The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'BoringSSL')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-RxLibrary')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-Core')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-C++')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-gRPCCertificates')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-ProtoRPC')
warning: The iOS Simulator deployment target is set to 6.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'cloud_firestore')
duplicate symbol __channel in:
/Users/erikiado/Code/internals/flutter/find_word/build/ios/Debug-iphonesimulator/audioplayers/libaudioplayers.a(AudioplayersPlugin.o)
/Users/erikiado/Code/internals/flutter/find_word/build/ios/Debug-iphonesimulator/firebase_admob/libfirebase_admob.a(FLTMobileAd.o)
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Using new build systemnote: Planning buildnote: Constructing build description
Could not build the application for the simulator.
Error launching application on iPhone XS Max.
Exited (sigterm)

erikiado و LiveRock تبدو مشكلاتك (الرموز المكررة في تصميمات محاكاة x86_64) غير مرتبطة بهذه

ETA لقناة بيتا؟

lukepighetti يتم دفع هذا الآن إلى قناة beta (اعتبارًا من لحظات مضت). flutter upgrade بعيدًا!

أصلحت مشكلتي. شكرا لك!

sidealice هل هذا ثابت بالنسبة لك أيضا؟

شكرا ، الحل 2 نجح!

بدون معلومات إضافية ، لسنا متأكدين للأسف من كيفية حل هذه المشكلة. لذلك نحن بصدد إغلاق هذا الخطأ على مضض في الوقت الحالي. من فضلك لا تتردد في التعليق على الخطأ إذا كان لديك المزيد من المعلومات لنا ؛ سنعيد فتحه على الفور!
شكرا لمساهمتك.
cc هيكسي

شكرا أخي ! إنها تعمل.

ما زلت أتلقى هذه المشكلة على قناة Flutter المستقرة v1.0.0
هل من المفترض أن يكون الإصلاح مستقرًا؟

[✓] Flutter (قناة مستقرة ، v1.0.0 ، في نظام التشغيل Mac OS X 10.14.1 18B75 ، الإعدادات المحلية en-GB)
• Flutter الإصدار 1.0.0 في / usr / local / share / flutter
• مراجعة الإطار 5391447fae (منذ 3 أسابيع) ، 2018-11-29 19:41:26 -0800
• مراجعة المحرك 7375a0f414
• Dart الإصدار 2.1.0 (الإصدار 2.1.0-dev.9.4 f9ebf21297)

[✓] سلسلة أدوات iOS - تطوير لأجهزة iOS (Xcode 10.1)
• Xcode في /Applications/Xcode.app/Contents/Developer
• Xcode 10.1 ، الإصدار الإصدار 10B61
• نشر ios 2.0.0
• CocoaPods الإصدار 1.5.3

JannieT يرجى التحقق من dev أيضًا.
لا أعرف ما إذا كان يجب أن يكون في stable ، ولكن إذا كان يعمل على dev ، فربما تكون الإجابة "لا".

شكرا! فقط للتأكيد ، الإصلاح موجود في Stable v1.0.0
واجهت المشكلة لأنني كنت أفتح ملف .xcodeproject بدلاً من مساحة العمل .xcworkspace الموثقة عند محاولة إنشاء أرشيف.

لدي نفس المشكلة الآن.

error: Multiple commands produce '/Users/n.gendron/Library/Developer/Xcode/DerivedData/Runner-eilfeqiwvjuvbghjmkepqybkaoja/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/n.gendron/Documents/GitLab/techno_store/ios/Flutter/Flutter.framework' to '/Users/n.gendron/Library/Developer/Xcode/DerivedData/Runner-eilfeqiwvjuvbghjmkepqybkaoja/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”
[✓] Flutter (Channel dev, v1.2.2, on Mac OS X 10.13.6 17G5019, locale fr-CA)
    • Flutter version 1.2.2 at /Library/flutter
    • Framework revision 007a415c2a (5 days ago), 2019-02-21 20:22:47 -0800
    • Engine revision f1f19bba8f
    • Dart version 2.2.0 (build 2.2.0-dev.2.1 c92d5ca288)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/n.gendron/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.1, Build version 10B61
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[✓] Android Studio (version 3.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 33.1.1
    • Dart plugin version 182.5215
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[✓] VS Code
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 2.12.2

[✓] Connected device (1 available)
    • iPad de TechnoSolutions • 3e430eb4db265d124e9684f487cc542f2442ed1d • ios • iOS 10.3.3

• No issues found!

لقد جربت نظام Legacy Build System ، ولكن بعد ذلك واجهت مشكلة أخرى. حاولت أيضًا إزالة Flutter.framework ، لكن الخطأ هو نفسه.

#import <barcode_scan/BarcodeScanPlugin.h> # 'barcode_scan/BarcodeScanPlugin.h' file not found

المكون الإضافي المتأثر هو barcode_scan .


ما تم حله بالنسبة لي هو https://github.com/apptreesoftware/flutter_barcode_reader/issues/44#issuecomment -460415307.

open -a Xcode ios

إعادة الفتح لأننا توصلنا فقط إلى الحل البديل في هذه المرحلة ، وليس الإصلاح طويل المدى للانتقال إلى نظام البناء الجديد.

بدون معلومات إضافية ، لسنا متأكدين للأسف من كيفية حل هذه المشكلة. لذلك نحن بصدد إغلاق هذا الخطأ على مضض في الوقت الحالي. من فضلك لا تتردد في التعليق على الخطأ إذا كان لديك المزيد من المعلومات لنا ؛ سنعيد فتحه على الفور!
شكرا لمساهمتك.

يساعدني في تنظيف الرفرفة ثم الإنشاء من خلال استوديو android

[✓] Flutter (Channel beta, v1.3.8, on Mac OS X 10.14.4 18E226, locale en-AU)
    • Flutter version 1.3.8 at /Users/yantsui/Installs/flutter
    • Framework revision e5b1ed7a7f (6 weeks ago), 2019-03-06 14:23:37 -0800
    • Engine revision f4951df193
    • Dart version 2.2.1 (build 2.2.1-dev.0.0 571ea80e11)

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_HOME to that location.
      You may also want to add it to your PATH environment variable.


[✓] iOS toolchain - develop for iOS devices (Xcode 10.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.2, Build version 10E125
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).

[✓] IntelliJ IDEA Ultimate Edition (version 2018.3.5)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 34.0.2
    • Dart plugin version 183.5912.23

[!] VS Code (version 1.33.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (1 available)
    • iPhone Xʀ • 39D838DF-E49E-4F0A-8F40-B73C91700F6E • ios • com.apple.CoreSimulator.SimRuntime.iOS-12-2 (simulator)

! Doctor found issues in 3 categories.
flutter clean
flutter build ios
Xcode 10 -> Product -> Clean Build Folder
Xcode 10 -> Product -> Run

خطأ في Xcode:

Showing All Messages
:-1: Multiple commands produce '/Users/meow/Documents/meow/crystal/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/meow/Documents/meow/crystal/ios/Flutter/Flutter.framework' to '/Users/meow/Documents/meow/crystal/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”

مثبت:
Ran open -a Xcode ios لكن يبدو أنه لم ينجح.
لذلك فتحت المشروع في Xcode باستخدام Runner.xcworkspace بدلاً من ذلك ونجح.

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

يمكننا أيضًا الاستفادة من خيار تثبيت CocoaPods (تعطيل_input_output_paths) ، والذي يزيل ملفات الإدخال والإخراج من مرحلة بناء إطار عمل [CP] Emded Pods. تمت إضافة خيار التثبيت هذا لأن نظام إنشاء Xcode الجديد فشل في تشغيل البرنامج النصي حتى عند لمس ملفات الإدخال. راجع https://www.ralfebert.de/ios/blog/cocoapods-clean-input-output-files.

الايجابيات:

  • سوف تستخدم مشاريع Xcode نظام البناء الجديد دون أخطاء في الترجمة. تهدد Xcode بسحب دعم بناء الإرث ، لذلك سيكون Flutter جاهزًا عند حدوث ذلك.
  • حل بسيط.
  • لا يوجد منطق إضافي لتقرير ما إذا كان سيتم تضمين Flutter.framework في مرحلة بناء إطارات عمل التضمين حيث سيتم تضمينها دائمًا.
  • لن تتطلب CocoaPods أن تصبح تبعية إذا كان المشروع Vanilla Flutter بدون حزم.

سلبيات:

  • سيتم تشغيل البرنامج النصي Pods-Runner-frameworks.sh على كل بناء ، حتى عندما لا يتغير Flutter.framework. على جهاز MacBook Pro 2018 الخاص بي ، يضيف هذا حوالي ثانية واحدة إلى التصميم.
  • إذا تمت معالجة خطأ نظام إنشاء Xcode الجديد ، فقد يقوم CocoaPods بإزالة خيار التثبيت هذا وستقوم مشكلة نسخ إطار العمل بإعادة تأكيد نفسها.
  • سيحتاج الحد الأدنى من إصدار CocoaPods إلى الزيادة من 1.0.0 إلى 1.6.0 عند تقديم خيار disable_input_output_paths.

تضمين التغريدة هذا النهج يبدو جيدا بالنسبة لي. إذا وصلنا إلى النقطة التي نرى فيها المكون الإضافي Cocoapods الذي يعد مكلفًا حقًا في التجميع ، فيمكننا التعامل مع ذلك كتحسين. هذا يحل المخاطر الفورية في هذه الأثناء!

شكرا!!!!!

شكرا

إذا كنت لا تزال ترى هذا الخطأ ، فستحتاج إلى ترحيل مشروع Xcode الخاص بك:

  1. ملف> إعدادات مساحة العمل ...> إنشاء نظام ، تغيير القائمة المنسدلة إلى نظام إنشاء جديد (افتراضي)
  2. في Podfile الخاص بك ، أضف السطر
install! 'cocoapods', :disable_input_output_paths => true

راجع https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile على سبيل المثال.

  1. في مرحلة Runner target "[CP] Embed Pods Framework" ، قم بإزالة جميع ملفات الإخراج.

jmagman شكرًا - ولكن هل يمكن أن يكون هذا متعلقًا بـ # 18673؟ لأنه بعد الترحيل (عبر flutter upgrade ، الذي أجرى هذا التغيير على جهازي تلقائيًا في Podfile) ، يمكنني الإنشاء باستخدام flutter build ios ولكن عند محاولة الأرشفة في Xcode ، أعمل في الخطأ # 18673.

jmagman شكرًا - ولكن هل يمكن أن يكون هذا متعلقًا بـ # 18673؟ لأنه بعد الترحيل (عبر flutter upgrade ، الذي أجرى هذا التغيير على جهازي تلقائيًا في Podfile) ، يمكنني الإنشاء باستخدام flutter build ios ولكن عند محاولة الأرشفة في Xcode ، أعمل في الخطأ # 18673.

jmagman لقد وجدت الحل ، في الواقع هذا https://github.com/flutter/flutter/issues/16246#issuecomment -476329255 حل مشكلتي. أسف لأي ازعاج.

jmagman لمن هم أقل دراية بـ XCode ، هل يمكنك شرح الخطوة 3 بشكل أكبر؟ أين تم العثور على مرحلة بناء هدف العداء "[CP] Embed Pods Framework" لإزالة جميع ملفات الإخراج؟

وجدته. انقر فوق "Runner" في شريط التنقل الأيسر ، ثم علامة التبويب "Build Phases" ، ثم قم بالتمرير لأسفل إلى "Output Files" ، وحدد كل منهم ، ثم انقر فوق الزر "طرح" لإزالتها

كيف يمكنني حل هذا بدون جهاز Mac؟ أستخدم خط أنابيب سحابي لإنشاء نظام iOS ولكني بحاجة إلى حل هذه المشكلة ...

إذا كنت لا تزال ترى هذا الخطأ ، فستحتاج إلى ترحيل مشروع Xcode الخاص بك:

  1. ملف> إعدادات مساحة العمل ...> إنشاء نظام ، تغيير القائمة المنسدلة إلى نظام إنشاء جديد (افتراضي)
  2. في Podfile الخاص بك ، أضف السطر
install! 'cocoapods', :disable_input_output_paths => true

راجع https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile على سبيل المثال.

  1. في مرحلة Runner target "[CP] Embed Pods Framework" ، قم بإزالة جميع ملفات الإخراج.

أو يمكنك تنفيذ # 1 و # 2 ، ثم تشغيل pod install من دليل ios ، ويجب على CocoaPods إزالة ملف الإخراج هذا في مرحلة الإنشاء تلقائيًا.

gincos إذا لم يكن لديك جهاز Mac ، فيمكنك الاطلاع على PR https://github.com/flutter/flutter/pull/33684/ للحصول على مثال حول كيفية تعديل ملفات Xcode يدويًا. إذا كان لديك جهاز Mac ، فيرجى اتباع الخطوات المذكورة أعلاه بدلاً من ذلك!

  1. احذف الملف ios / Runner.xcworkspace / xcshareddata / WorkspaceSettings.xcsettings. هذا ما يحدث تحت الأغلفة مع File> Workspace Settings ...> Build System> New Build System (افتراضي).
    https://github.com/flutter/flutter/pull/33684/files#diff -e7ad834b29956b3cbd9225dc81f2c06a

    1. في Podfile الخاص بك ، أضف السطر

      install! 'cocoapods', :disable_input_output_paths => true

      https://github.com/flutter/flutter/pull/33684/files#diff -4e7de62cf4dff9802f06b7f3cb120939

نأمل أن يتم تشغيل خط الأنابيب السحابي الخاص بك pod install والعناية بالمركز الثالث أعلاه نيابة عنك.

إذا كنت لا تزال ترى الخطأ ، فيمكنك تحرير ios / Runner.xcodeproj / project.pbxproj لإزالة ملف الإخراج يدويًا. يرجى توخي الحذر عند القيام بذلك! ملف مشروع Xcode لا يأخذ بعين الاعتبار الفساد.
https://github.com/flutter/flutter/pull/33684/files#diff -e9e57f7f2e911a135acd8f08e79b20e1

jmagman شكرا! عملت هذا وكأنه سحر! نعم ، يقوم موفر السحابة بتشغيل تثبيت pod وهو الآن ينتج الأداة الصحيحة لكل من Android و iOS في الإصدار التجريبي الأحدث.

المشاريع المتضررة

تؤثر هذه المشكلة على جميع مشاريع Flutter التي تم إنشاؤها باستخدام Xcode 10 التي تعتمد على CocoaPods - وهذا يعني عادةً تلك التي تعتمد على المكونات الإضافية.

الحلول

هناك نوعان من الحلول:

  • الخيار 1: استخدام نظام البناء القديم. كما لاحظ @ gi097 ، افتح ios/Runner.xcworkspace ، وقم بتغيير نظام الإنشاء إلى Legacy Build System .
  • الخيار 2: استخدم نظام بناء Xcode 10 الجديد.

    1. افتح ios/Runner.xcworkspace
    2. حدد المشروع Runner في الشريط الجانبي لمتصفح المشروع.
    3. في العرض الرئيسي ، حدد الهدف Runner ، ثم حدد علامة التبويب Build Phases .
    4. قم بتوسيع المرحلة Embed Frameworks وحدد Flutter.framework من قائمة الإطارات المضمنة.
    5. انقر فوق - لإزالة Flutter.framework من القائمة (تأكد من _keep_ App.framework ).

السبب الجذري

عندما تكون المكونات الإضافية قيد الاستخدام ، يوجد إجراءان متنافسان للبناء ينسخان Flutter.framework في دليل أطر عمل تطبيق البناء:

  1. مرحلة الإنشاء Embed Frameworks لمشروع Runner
  2. مرحلة الإنشاء [CP] Embed Pods Frameworks التي أنشأها pod install في المشروع.

العنصر (1) موجود لضمان نسخ إطار العمل في التطبيق المدمج في حالة عدم وجود مكونات إضافية (وبالتالي لا يوجد تكامل CocoaPods في مشروع Xcode). العنصر (2) موجود لأن podspec الخاص بـ Flutter يعلن Flutter.framework كإطار تم بيعه ، ويضيف CocoaPods تلقائيًا خطوة نسخ لكل إطار vended_framework في الإغلاق الانتقالي لتبعيات CocoaPods.

إصلاح فوري

يتمثل الإصلاح الفوري في إيجاد طريقة لإعادة الاشتراك تلقائيًا في إصلاح البنية القديمة حتى يتم وضع حل أفضل على المدى الطويل. كانت الإصدارات التجريبية السابقة تدعم -useNewBuildSystem=NO أو -useModernBuildSystem=NO ولكن يبدو أنه تمت إزالة هذا في إصدار GM. يبدو أن الطريقة الحالية للقيام بذلك هي إضافة زوج ذي قيمة رئيسية ( <key>BuildSystemType</key><string>Original</string> ) إلى ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings .

إصلاح طويل المدى

سيكون أبسط خيار هو إزالة Flutter.framework من Embed Frameworks أعلاه والاعتماد دائمًا على تثبيت pod ، حتى في حالة عدم وجود تبعيات للمكونات الإضافية. سنحتاج إلى تحديث أداة Flutter لتحرير المشاريع الحالية تلقائيًا لإزالة Flutter.framework من خطوة Embed Frameworks.

المؤيد: كود أبسط. con: يجعل cocoapods خطوة تثبيت مطلوبة لتطوير Flutter ، يتضمن التشغيل الأول تنزيلًا ضخمًا وبطيئًا جدًا لمستندهم.

سيكون الخيار الأجمل قليلاً بالنسبة لنا هو اكتشاف ما إذا كان المشروع يستخدم المكونات الإضافية أم لا ، وتحرير مشروع Xcode للتحقق من وإزالة Flutter.framework من خطوة Embed Frameworks تلقائيًا إذا كانت المكونات الإضافية قيد الاستخدام أو إضافتها إذا لم تكن كذلك.

المؤيد: تجربة مستخدم أفضل. يخدع: كود أكثر تعقيدًا.

في كلتا الحالتين ، نحتاج إلى آلية ما لتحرير ملف project.pbxproj تلقائيًا وإزالة إطار العمل من خطوة بناء إطارات التضمين. إن دعم إضافته مرة أخرى ليس عملاً متزايدًا وينتج عنه تجربة أفضل.

/ سم مكعبtvolkertgspencergoogdnfield

cbracken شكرا جزيلا ، يعمل ، شكرا لمساعدتكم

إعادة نسخ الهجرة الحقيقية منذ دفنها.

إذا كنت لا تزال ترى هذا الخطأ ، فستحتاج إلى ترحيل مشروع Xcode الخاص بك:

  1. ملف> إعدادات مساحة العمل ...> إنشاء نظام ، تغيير القائمة المنسدلة إلى نظام إنشاء جديد (افتراضي)
  2. في Podfile الخاص بك ، أضف السطر
install! 'cocoapods', :disable_input_output_paths => true

راجع https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile على سبيل المثال.

  1. قم بتشغيل flutter build ios

سأقوم بقفل هذا حتى تظل تعليمات الترحيل هذه في نهاية هذه المشكلة. يرجى تقديم مشكلة جديدة إذا كانت لديك مشكلات إضافية بعد اتباع هذه الإرشادات.

تحديث: إذا اتبعت إرشادات الترحيل على https://flutter.dev/docs/development/ios-project-migration ، فيمكنك إزالة install! 'cocoapods', :disable_input_output_paths => true من ios/Podfile . قد يؤدي ذلك إلى تحسين وقت الترجمة إذا كنت تستخدم ملحقات Flutter.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات