React-native-onesignal: فشل إنشاء OneSignal OneSignalNotificationExtension على Xcode 12 المتعلقة بمشاكل cocoapods / architecture / simulator

تم إنشاؤها على ٣١ أغسطس ٢٠٢٠  ·  32تعليقات  ·  مصدر: OneSignal/react-native-onesignal

وصف:

تم التحديث للتو من Xcode 10 إلى Xcode 12 ، قبل أن يتم إنشاء هذا المشروع وتشغيله بنجاح في الإصدار 10.

فشل بناء الهدف OneSignalNotificationExtension:

Undefined symbol: _swift_getObjCClassMetadata

Undefined symbol: type metadata accessor for Foundation.UUID

Undefined symbol: Swift._bridgeAnythingToObjectiveC<A>(A) -> Swift.AnyObject

Undefined symbol: protocol descriptor for Swift.ExpressibleByFloatLiteral

Undefined symbol: associated conformance descriptor for Swift.ExpressibleByFloatLiteral.Swift.ExpressibleByFloatLiteral.FloatLiteralType: Swift._ExpressibleByBuiltinFloatLiteral

Undefined symbol: associated type descriptor for Swift.ExpressibleByFloatLiteral.FloatLiteralType

Undefined symbol: protocol descriptor for Swift.ExpressibleByIntegerLiteral

Undefined symbol: associated type descriptor for Swift.ExpressibleByIntegerLiteral.IntegerLiteralType

Undefined symbol: method descriptor for Swift.ExpressibleByIntegerLiteral.init(integerLiteral: A.IntegerLiteralType) -> A

Undefined symbol: static Foundation.UUID._unconditionallyBridgeFromObjectiveC(__C.NSUUID?) -> Foundation.UUID

Undefined symbol: value witness table for Builtin.Int32

Undefined symbol: protocol witness table for Swift.Int : Swift._ExpressibleByBuiltinIntegerLiteral in Swift


و 100 خطأ أخرى

أنا لست جيدًا في استخدام Xcode و Mac ، لذلك أنا آسف إذا لم يكن الأمر واضحًا أو مضللًا.

شكرا لك

بيئة

رد الفعل الأصلي 0.63.2
أحادي الإشارة - تفاعل - أصلي 3.9.1
Xcode 12
مثبتة عبر npm وربطها بالبودات

خطوات إعادة إنتاج المشكلة:

  • يبني

  • Help Wanted

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

    أواجه بعض المشكلات أيضًا مع Xcode 12

    يمكنني إنشاء المشروع بنجاح على Xcode 11. ولكن بمجرد أن أقوم بفتح Xcode12 وإنشاء المشروع ، أحصل على الخطأ التالي:

    ▸ Linking OneSignalNotificationServiceExtension
    
    ❌  clang: error: no such file or directory: '/Users/carloscuesta/project-folder/ios/build/project/Build/Products/Debug-iphonesimulator/libRCTOneSignal.a'
    

    لا يبدو هذا خطأ من جانب OneSignal. يبدو أن هناك شيئًا غريبًا في ذاكرة التخزين المؤقت أو شيء من هذا القبيل ،
    الأشياء التي جربتها:

    • حذف بيانات Xcode المشتقة - rm -rf ~/Library/Developer/Xcode/DerivedData/
    • امسح ذاكرة التفاعل الأصلية وذاكرة التخزين المؤقت للغزل وأعد تثبيت التبعيات.
    • إعادة تعيين بيانات المحاكاة والمحتويات
    • أعد تشغيل الكمبيوتر

    لا أعرف ما الذي يجب أن أحاوله أيضًا ، أود أن أقول إن كل شيء مرتبط بشكل صحيح لأن التطبيق يعمل بشكل جيد في الإنتاج ويعمل البناء مع Xcode 11.

    لقد تم ربط المكتبة يدويًا باستخدام دليل OneSignal ، فهل لديك فكرة عن كيفية إصلاح ذلك؟ 🙏🏼

    عادةً عندما حصلت على هذه المشكلة ، تم حلها عن طريق تنظيف DerivedData لكن لا يمكنني التخلص من الخطأ 😞

    ال 32 كومينتر

    مرحبًا ،
    كيف يبدو ملفك NotificationService.swift ؟ يجب أن يكون شيئًا مثل:

    import UserNotifications
    
    import OneSignal
    
    class NotificationService: UNNotificationServiceExtension {
    
        var contentHandler: ((UNNotificationContent) -> Void)?
        var receivedRequest: UNNotificationRequest!
        var bestAttemptContent: UNMutableNotificationContent?
    
        override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: <strong i="8">@escaping</strong> (UNNotificationContent) -> Void) {
            self.receivedRequest = request;
            self.contentHandler = contentHandler
            bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
    
            if let bestAttemptContent = bestAttemptContent {
                OneSignal.didReceiveNotificationExtensionRequest(self.receivedRequest, with: self.bestAttemptContent)
                contentHandler(bestAttemptContent)
            }
        }
    
        override func serviceExtensionTimeWillExpire() {
            // Called just before the extension will be terminated by the system.
            // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
            if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {
                OneSignal.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent)
                contentHandler(bestAttemptContent)
            }
        }
    
    }
    

    ألق نظرة على الخطوة 4.3.6 في تعليمات الإعداد وتابع من هناك للتأكد من أنك قمت بإعداد كل شيء بشكل صحيح.

    أتمنى أن يساعدك هذا. هتافات

    شكرا على ملاحظاتك.

    أنا أستخدم ملف Objective-C. هل يجب علي استخدام السويفت؟

    اعتقدت أنك تستخدم Swift. إذا كنت تستخدم Obj-C ، فاستخدم Objective C واحد. يتمتع!

    أواجه بعض المشكلات أيضًا مع Xcode 12

    يمكنني إنشاء المشروع بنجاح على Xcode 11. ولكن بمجرد أن أقوم بفتح Xcode12 وإنشاء المشروع ، أحصل على الخطأ التالي:

    ▸ Linking OneSignalNotificationServiceExtension
    
    ❌  clang: error: no such file or directory: '/Users/carloscuesta/project-folder/ios/build/project/Build/Products/Debug-iphonesimulator/libRCTOneSignal.a'
    

    لا يبدو هذا خطأ من جانب OneSignal. يبدو أن هناك شيئًا غريبًا في ذاكرة التخزين المؤقت أو شيء من هذا القبيل ،
    الأشياء التي جربتها:

    • حذف بيانات Xcode المشتقة - rm -rf ~/Library/Developer/Xcode/DerivedData/
    • امسح ذاكرة التفاعل الأصلية وذاكرة التخزين المؤقت للغزل وأعد تثبيت التبعيات.
    • إعادة تعيين بيانات المحاكاة والمحتويات
    • أعد تشغيل الكمبيوتر

    لا أعرف ما الذي يجب أن أحاوله أيضًا ، أود أن أقول إن كل شيء مرتبط بشكل صحيح لأن التطبيق يعمل بشكل جيد في الإنتاج ويعمل البناء مع Xcode 11.

    لقد تم ربط المكتبة يدويًا باستخدام دليل OneSignal ، فهل لديك فكرة عن كيفية إصلاح ذلك؟ 🙏🏼

    عادةً عندما حصلت على هذه المشكلة ، تم حلها عن طريق تنظيف DerivedData لكن لا يمكنني التخلص من الخطأ 😞

    لقد اكتشفت شيئًا غريبًا ،

    إذا حاولت إنشاء التطبيق باستخدام Xcode 12 ، فإنه يفشل دائمًا. ومع ذلك ، إذا قمت بإنشاء التطبيق أولاً باستخدام Xcode 11 ثم فتحت Xcode 12 وقمت ببناء التطبيق الذي يعمل 🤯

    ومع ذلك ، بمجرد أن أقوم بتنظيف البناء ومحاولة إعادة البناء مرة أخرى باستخدام Xcode 12 ، يبدأ في الفشل مع نفس الخطأ مرة أخرى 😖

    نفس الخطأ هنا مع Xcode 12 و oneSignal-react-native 3.9.1 :-(
    كانت المشاريع تعمل قبل التحديث.

    نفس الخطأ.
    SDK الأحادي -> 2.15.2
    رد فعل - أصلية - إشارة واحدة -> 3.9.1
    عملت بشكل جيد على xCode 11.

    مرحبًا ،
    هذا غريب carloscuesta . هل حاولت رؤية فرق بين المشروع على Xcode 11 مقابل 12؟ ربما يقوم 12 بتغيير بعض إعدادات البناء المهمة لسبب ما.

    حصلت على مشكلة مماثلة عندما قمت بتحديث Xcode الخاص بي من 11 إلى 12 ..

    يا rgomezp

    أستطيع أن أؤكد أنه لا توجد تغييرات من Xcode 11 إلى Xcode 12. لم يتم تعديل git status من الريبو.

    ومع ذلك ، لا يزال بإمكاني إعادة إنتاج الإصدار الفاشل. وكلما بنيت على Xcode 11 و Xcode 12 بعد الأعمال لأول مرة 😕

    Screenshot 2020-09-25 at 12 12 40

    Screenshot 2020-09-25 at 12 18 39

    مرحبًا ،
    أعتقد أن هذا مرتبط بمشكلة Cocoapods المستمرة والتي تم الإبلاغ عنها سابقًا هنا .

    قد ينجح هذا في إضافة x86_64 إلى VALID_ARCH إذا كنت بحاجة إلى تشغيل التطبيق على جهاز محاكاة ، على سبيل المثال ، x86_64 arm64 arm64e

    قد يحتوي هذا المكدس الفائض على الحل الذي تحتاجه.

    مهلا! شكرا لمساعدتكم @ rgomezp

    سأخبرك بنتائج تجاربي!

    أضف بنى مستبعدة

    لقد قدمت arm64 كما هو مقترح في منشور StackOverflow على Project > Architectures > Excluded Architectures .

    Screenshot 2020-09-28 at 13 40 32

    هذا لم يحل المشكلة. لقد تلقيت نفس الخطأ عندما أشكو من x86_64 .

    Screenshot 2020-09-28 at 13 39 50

    لذلك تقدمت وأضفت x86_64 إلى Excluded Architectures .

    Screenshot 2020-09-28 at 13 41 12

    بعد التغيير التالي ، يبدو أن الخطأ التالي قد تم إصلاحه. ومع ذلك ، لدي خطأ آخر بخصوص OneSignalNotificationServiceExtension.appex .

    Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.
    

    ومع ذلك ، لم أغير أي شيء متعلق بـ CodeSign 🤔 - يعمل بناء Xcode11 بشكل جيد

    Screenshot 2020-09-28 at 11 36 29

    بعد تنظيف بناء DerivedData وإعادة تشغيل الكمبيوتر. أشاهد خطأ آخر: Link app (i386) .

    إذا فتحت الخطأ ، أرى أنه لم يتم العثور على الكثير من الملفات في المجلد DerivedData . لا يرتبط أي منهم بـ OneSignal. ومع ذلك ، لا أعرف سبب فشل هذا إذا كان يعمل بشكل صحيح على Xcode 11. أنا في حيرة من أمري الآن 😅

    استخدم VALID_ARCHS

    هذا لم ينجح بالنسبة لي أيضًا. قرأت أيضًا أنه تم إهمال هذا في Xcode 12 ويجب استخدام Excluded Architectures بدلاً من ذلك.

    لم يكن لدي أي User-Defined Setting لهذا الغرض. نظرًا لأنني لا أستخدم CocoaPods وقد تم ربط الوحدة يدويًا.

    لقد وجدت ارتباطًا مثيرًا للاهتمام يتحدث عن خطأ "نفس الشهادة" مع Xcode بعد استبعاد arm64 .

    تقول أن الامتدادات لا ينبغي أن تستبعد تلك البنى . نفس الخطأ للأسف :(

    نفدت الأفكار لهذا اليوم 😅

    يمكنني أن أؤكد أن إنشاء التطبيق وتشغيله على جهاز حقيقي لا يؤدي إلى حدوث أي خطأ بدون تعديلات "البنيات المستبعدة".

    لذلك فهو شيء مرتبط بنسبة 100٪ بهندسة المحاكي نفسه

    Screenshot 2020-09-29 at 09 17 24

    هولا كارلوس ،
    شكرا لك على التحقيق المفصل. من أجل الرؤية ، وجدت أيضًا موضوع تجاوز سعة المكدس هذا.

    لتلخيص قضية carloscuesta ،

    1. تم حل الخطأ Embedded binary is not signed with the same certificate as the parent app... عن طريق إضافة arm64 و x86_64 إلى " البنى المستبعدة" ، لكل دليل لاستخدام هذا فوق "ARCHS الصالحة".
    2. لم يعمل الحل البديل المنشور في مستودع Cocoapods من أجلك لأن المكتبة مرتبطة يدويًا.

    كارلوس ، في هذه المرحلة ، لست متأكدًا مما يمكن فعله أيضًا لأن هذا يبدو وكأنه مشكلة لا تتعلق بـ OneSignal.

    هل يمكن للأشخاص الآخرين تأكيد أن حل Cocoapods المرتبط أعلاه يعمل لهم إذا كانوا يستخدمون Cocoapods؟

    يا rgomezp

    شكرا على كل المساعدة التي قدمتها.

    كارلوس ، في هذه المرحلة ، لست متأكدًا مما يمكن فعله أيضًا لأن هذا يبدو وكأنه مشكلة لا تتعلق بـ OneSignal.

    لست متأكدًا بنسبة 100٪ من هذا البيان لأنني إذا قمت بإلغاء ربط مكتبة OneSignal بالكامل وقمت بإزالة OneSignalNotificationServiceExtension فإن المشروع يبني على Xcode12. لا أعرف من أين أتى الخطأ وهذا أمر مؤكد وربما تكون هذه حالة محددة لأن المكتبة مرتبطة يدويًا. ولست مضطرًا للمس أي شيء متعلق بالهندسة المعمارية

    لكن نعم ، لنرى ما إذا كان بإمكاننا العثور على حالات استخدام أخرى 👍🏼

    يبدو أن Xcode 12 بناء لمحاكاة مع الهندسة المعمارية - arm64 ، i386 ، x86_64 .

    لذا فإن الحل البديل الخاص بي هو

    1. أضف arm64 في المستبعدة لإعداد بناء المشروع
    2. قم بإزالة VALID ARCHS من إعداد بناء المشروع الفرعي RCTOneSignal.
      (تم نقل VAILD ARCHS إلى محدد من قبل المستخدم لإعداد البناء في Xcode 12)

    إنه يعمل بشكل جيد في مشروعي.

    stanleyctcl الحل الخاص بك يعمل! : تادا:

    لم أكن رأيت RCTOneSignal المستهدفة داخل RCTOneSignal المكتبة لديها VALID_ARCHS يعرف بأنه User-Defined وضع. هذا شيء يجب أن نزيله من جانب المكتبة! سأقوم بعمل علاقات عامة لإصلاح المشكلة!

    Screenshot 2020-10-07 at 10 22 44

    لهذا السبب لم تنجح كل التغييرات التي أجريتها. لأن مكتبة OneSignal تم تعريف إعداد المستخدم هذا.

    مرحبًا ، شكرًاstanleyctcl
    الحل الخاص بك يعمل معي.

    في السابق ، فشل تصميمي على وضع الإصدار إلى iOS Simulator. تلقيت خطأ building for iOS Simulator, but linking in object file built for iOS, file onesignal . لكن يمكنني إنشاء وضع الإصدار على جهاز حقيقي دون ظهور أي أخطاء. الحل أعلاه حل هذه المشكلة.

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

    No architectures to compile for (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
        arm64
    ))
    

    أي فكرة؟

    abdullahizzuddiin تأكد من أنك استبعدت بنية محاكيات iOS فقط

    آه ، يا سيئ. لقد نسيت التفاصيل الصغيرة. شكرا carloscuesta لتوجيه لي. اتضح أنني بحاجة فقط إلى تعيين Excluded Architecture بدون إزالة إعداد إنشاء المشروع الفرعي VALID ARCHS من RCTOneSignal . 🤔

    = = =
    أعتقد ، لدي خطأ في الاختلاف. لقد قمت بالأرشفة بنجاح. ولكن بعد أن اخترت "إدارة التوقيع تلقائيًا" ، حصلت على هذا الخطأ
    image

    يمكنني نشر تطبيق على Appstore دون أي مشكلة في الإصدار السابق من Xcode. في السابق ، استخدمت 11.7. الآن ، استخدمت 12.0 وتلقيت هذا الخطأ على الفور دون أي تغييرات في الريبو الخاص بي.

    //package.json
    react-native-onesignal: 3.8.1
    
    //Podfile
    pod 'OneSignal', '>= 2.14.2', '< 3.0'
    ...
    target 'OneSignalNotificationServiceExtension' do
      pod 'OneSignal', '>= 2.14.2', '< 3.0'
    end
    

    أي فكرة؟ أو يجب أن أقوم بإنشاء مشكلة منفصلة؟

    ملاحظة:
    لقد قمت أيضًا بإرسال مشكلتي إلى Apple Developer Forum فقط في حال لم تكن هذه مشكلة هذه المكتبة.

    أستخدم 3.9.1 لإصدار رد الفعل الأصلي 0.60.0 ... أنا قادر على حل هذه المشكلة من خلال تضمين x86_64 داخل الإعدادات المحددة بواسطة المستخدم (VALID_ARCHS)

    هودي y'all،
    أعتقد أن إغلاق هذه المشكلة آمن لأنه لا يبدو أنها مشكلة OneSignal.


    تضمين التغريدة
    (مشكلة مختلفة ، فكر في فتح تذكرة منفصلة)

    من أجل الرؤية ، سوف أنشر أحد الردود على سلسلة منتدى Apple Dev :

    مشكلة:
    فشلت محاولة تشغيل الإنشاء على الجهاز الفعلي ، على الرغم من نجاح الإنشاء على جهاز MacBook Pro الخاص بي.
    حدث الخطأ التالي مع هذه الرسالة:
    ملف التوفير "ملف تعريف إدارة فريق iOS: com.xxxxxxxxxxxx.Name of -App" لا يتضمن الجهاز المحدد حاليًا "iPhone" (المعرف 0000xxxx-000xxxxxxxxxxxxxxxxxx).

    دليل تعليمات Xcode عبر الإنترنت

    تفضيلات الحسابات
    استخدم تفضيلات الحسابات لإدارة أصول حساب المطور (توقيع الشهادات وملفات تعريف التوفير) وإضافة المستودعات وإضافة الخوادم.

    لفتح تفضيلات الحسابات ، اختر Xcode> تفضيلات وانقر فوق الحسابات.
    ثم قمت بالنقر فوق "إدارة الشهادات" وإضافة شهادة جديدة بالنقر فوق رمز علامة الجمع.

    تم حل المشكلة:
    ثم قمت بتشغيل بنائي وتم مسح خطأ التوقيع الخاص بي ، وتم تثبيت التطبيق على جهاز iPhone 11 Pro Max.
    نأمل أن يساعدك هذا الحل.

    يا rgomezp

    كانت هذه المشكلة مزيجًا من المشكلات المختلفة. الشخص الذي تشير إليه ليس له علاقة بمشكلة المحاكي نفسها ، وهذا شيء له علاقة بـ RCTOneSignal لأن استخدام VALID_ARCHS

    لا أعرف ما إذا كان علينا إغلاق هذه المشكلة تمامًا حتى يتم حل مشكلة المحاكاة.

    مرحبًا rgomezp

    لقد اتبعت الاقتراح من Apple Dev Forum الذي اقتطعته أعلاه. لكنها لم تحل مشكلتي.

    مؤقتًا ، قمت بخفض إصدار Xcode إلى 11.7 وتمكنت من الإنشاء والتشغيل والأرشفة بنجاح. لكن ، لا يزال بإمكاني فعل ذلك في Xcode 12.0

    سأترك هذا مفتوحًا ليتم إغلاقه تلقائيًا بواسطة # 1053

    يبدو أن Xcode 12 بناء لمحاكاة مع الهندسة المعمارية - arm64 ، i386 ، x86_64 .

    لذا فإن الحل البديل الخاص بي هو

    1. Add **arm64** in  **Excluded Architectures** of Project Build setting
    
    2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting.
       **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
    

    إنه يعمل بشكل جيد في مشروعي.

    هذا يعمل بالنسبة لي. تذكر حذفه. لا تجعلها فارغة فقط لأنها لن تعمل

    تعديل:
    يستخدم مشروعي الربط اليدوي لإشارة واحدة 3.2.12.
    تفاعل أصلي 0.59.9
    xcode 12

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

    لا توجد معماريات لتجميعها لـ (ARCHS = arm64، VALID_ARCHS = arm64 arm64e armv7 armv7s، EXCLUDED_ARCHS = (
    الذراع 64
    ))

    الحل الذي نجح معي هو
    قم بتطبيق هذا فقط

    2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting.
       **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
    

    هذا يجب أن يجعل الأرشيف يعمل لكن إصدار المحاكاة يفشل. لإصلاح ذلك. تحتاج إلى الانتقال إلى هدف كل أهداف المشروع والقرص -> إنشاء الإعدادات -> الهندسة المعمارية -> إنشاء بنية نشطة فقط -> تعيين "نعم" لوضع الإصدار

    الشرح والخطوات على: https://stackoverflow.com/a/64139830/9232424.
    اقرأ المزيد: https://medium.com/macoclock/deep-drive-xcode-build-settings-827c3ce4811c.

    آه ، يا سيئ. لقد نسيت التفاصيل الصغيرة. شكرا carloscuesta لتوجيه لي. اتضح أنني بحاجة فقط إلى تعيين Excluded Architecture بدون إزالة إعداد إنشاء المشروع الفرعي VALID ARCHS من RCTOneSignal . 🤔

    = = =
    أعتقد ، لدي خطأ في الاختلاف. لقد قمت بالأرشفة بنجاح. ولكن بعد أن اخترت "إدارة التوقيع تلقائيًا" ، حصلت على هذا الخطأ
    image

    يمكنني نشر تطبيق على Appstore دون أي مشكلة في الإصدار السابق من Xcode. في السابق ، استخدمت 11.7. الآن ، استخدمت 12.0 وتلقيت هذا الخطأ على الفور دون أي تغييرات في الريبو الخاص بي.

    //package.json
    react-native-onesignal: 3.8.1
    
    //Podfile
    pod 'OneSignal', '>= 2.14.2', '< 3.0'
    ...
    target 'OneSignalNotificationServiceExtension' do
      pod 'OneSignal', '>= 2.14.2', '< 3.0'
    end
    

    أي فكرة؟ أو يجب أن أقوم بإنشاء مشكلة منفصلة؟

    ملاحظة:
    لقد قمت أيضًا بإرسال مشكلتي إلى Apple Developer Forum فقط في حال لم تكن هذه مشكلة هذه المكتبة.

    حدثت نفس المشكلة معي في xcode 12 ، هل قمت بحل المشكلة؟ abdullahizzuddiin أو u قم بخفض إصدار xcode إلى 11.7

    اشكرك

    للتشغيل في جهاز المحاكاة ، يجب أن أضيف " arm64 " في " أبنية مستبعدة ".
    ولكن لتشغيل التطبيق على جهاز حقيقي ، يجب أن أتركه بدون تعديلات " البنيات المستبعدة ".
    لذلك علي إجراء هذا التغيير في كل مرة أركض فيها.

    آمل أن يساعد هذا.

    نفس المشكلة هنا ، عادت.

    نفس

    نفس

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