وصف:
تم التحديث للتو من 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 وربطها بالبودات
خطوات إعادة إنتاج المشكلة:
يبني
مرحبًا ،
كيف يبدو ملفك 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. يبدو أن هناك شيئًا غريبًا في ذاكرة التخزين المؤقت أو شيء من هذا القبيل ،
الأشياء التي جربتها:
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 بعد الأعمال لأول مرة 😕
مرحبًا ،
أعتقد أن هذا مرتبط بمشكلة Cocoapods المستمرة والتي تم الإبلاغ عنها سابقًا هنا .
قد ينجح هذا في إضافة x86_64
إلى VALID_ARCH
إذا كنت بحاجة إلى تشغيل التطبيق على جهاز محاكاة ، على سبيل المثال ، x86_64
arm64
arm64e
قد يحتوي هذا المكدس الفائض على الحل الذي تحتاجه.
مهلا! شكرا لمساعدتكم @ rgomezp
سأخبرك بنتائج تجاربي!
لقد قدمت arm64
كما هو مقترح في منشور StackOverflow على Project
> Architectures
> Excluded Architectures
.
هذا لم يحل المشكلة. لقد تلقيت نفس الخطأ عندما أشكو من x86_64
.
لذلك تقدمت وأضفت x86_64
إلى Excluded Architectures
.
بعد التغيير التالي ، يبدو أن الخطأ التالي قد تم إصلاحه. ومع ذلك ، لدي خطأ آخر بخصوص 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 بشكل جيد
بعد تنظيف بناء DerivedData
وإعادة تشغيل الكمبيوتر. أشاهد خطأ آخر: Link app (i386)
.
إذا فتحت الخطأ ، أرى أنه لم يتم العثور على الكثير من الملفات في المجلد DerivedData
. لا يرتبط أي منهم بـ OneSignal. ومع ذلك ، لا أعرف سبب فشل هذا إذا كان يعمل بشكل صحيح على Xcode 11. أنا في حيرة من أمري الآن 😅
VALID_ARCHS
هذا لم ينجح بالنسبة لي أيضًا. قرأت أيضًا أنه تم إهمال هذا في Xcode 12 ويجب استخدام Excluded Architectures
بدلاً من ذلك.
لم يكن لدي أي User-Defined Setting
لهذا الغرض. نظرًا لأنني لا أستخدم CocoaPods وقد تم ربط الوحدة يدويًا.
لقد وجدت ارتباطًا مثيرًا للاهتمام يتحدث عن خطأ "نفس الشهادة" مع Xcode بعد استبعاد arm64
.
تقول أن الامتدادات لا ينبغي أن تستبعد تلك البنى . نفس الخطأ للأسف :(
نفدت الأفكار لهذا اليوم 😅
يمكنني أن أؤكد أن إنشاء التطبيق وتشغيله على جهاز حقيقي لا يؤدي إلى حدوث أي خطأ بدون تعديلات "البنيات المستبعدة".
لذلك فهو شيء مرتبط بنسبة 100٪ بهندسة المحاكي نفسه
هولا كارلوس ،
شكرا لك على التحقيق المفصل. من أجل الرؤية ، وجدت أيضًا موضوع تجاوز سعة المكدس هذا.
لتلخيص قضية carloscuesta ،
Embedded binary is not signed with the same certificate as the parent app...
عن طريق إضافة arm64 و x86_64 إلى " البنى المستبعدة" ، لكل دليل لاستخدام هذا فوق "ARCHS الصالحة".كارلوس ، في هذه المرحلة ، لست متأكدًا مما يمكن فعله أيضًا لأن هذا يبدو وكأنه مشكلة لا تتعلق بـ OneSignal.
هل يمكن للأشخاص الآخرين تأكيد أن حل Cocoapods المرتبط أعلاه يعمل لهم إذا كانوا يستخدمون Cocoapods؟
يا rgomezp
شكرا على كل المساعدة التي قدمتها.
كارلوس ، في هذه المرحلة ، لست متأكدًا مما يمكن فعله أيضًا لأن هذا يبدو وكأنه مشكلة لا تتعلق بـ OneSignal.
لست متأكدًا بنسبة 100٪ من هذا البيان لأنني إذا قمت بإلغاء ربط مكتبة OneSignal بالكامل وقمت بإزالة OneSignalNotificationServiceExtension
فإن المشروع يبني على Xcode12. لا أعرف من أين أتى الخطأ وهذا أمر مؤكد وربما تكون هذه حالة محددة لأن المكتبة مرتبطة يدويًا. ولست مضطرًا للمس أي شيء متعلق بالهندسة المعمارية
لكن نعم ، لنرى ما إذا كان بإمكاننا العثور على حالات استخدام أخرى 👍🏼
يبدو أن Xcode 12 بناء لمحاكاة مع الهندسة المعمارية - arm64 ، i386 ، x86_64 .
لذا فإن الحل البديل الخاص بي هو
إنه يعمل بشكل جيد في مشروعي.
stanleyctcl الحل الخاص بك يعمل! : تادا:
لم أكن رأيت RCTOneSignal
المستهدفة داخل RCTOneSignal
المكتبة لديها VALID_ARCHS
يعرف بأنه User-Defined
وضع. هذا شيء يجب أن نزيله من جانب المكتبة! سأقوم بعمل علاقات عامة لإصلاح المشكلة!
لهذا السبب لم تنجح كل التغييرات التي أجريتها. لأن مكتبة 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
. 🤔
= = =
أعتقد ، لدي خطأ في الاختلاف. لقد قمت بالأرشفة بنجاح. ولكن بعد أن اخترت "إدارة التوقيع تلقائيًا" ، حصلت على هذا الخطأ
يمكنني نشر تطبيق على 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
. 🤔= = =
أعتقد ، لدي خطأ في الاختلاف. لقد قمت بالأرشفة بنجاح. ولكن بعد أن اخترت "إدارة التوقيع تلقائيًا" ، حصلت على هذا الخطأيمكنني نشر تطبيق على 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 " في " أبنية مستبعدة ".
ولكن لتشغيل التطبيق على جهاز حقيقي ، يجب أن أتركه بدون تعديلات " البنيات المستبعدة ".
لذلك علي إجراء هذا التغيير في كل مرة أركض فيها.
آمل أن يساعد هذا.
نفس المشكلة هنا ، عادت.
نفس
نفس
التعليق الأكثر فائدة
أواجه بعض المشكلات أيضًا مع Xcode 12
يمكنني إنشاء المشروع بنجاح على Xcode 11. ولكن بمجرد أن أقوم بفتح Xcode12 وإنشاء المشروع ، أحصل على الخطأ التالي:
لا يبدو هذا خطأ من جانب OneSignal. يبدو أن هناك شيئًا غريبًا في ذاكرة التخزين المؤقت أو شيء من هذا القبيل ،
الأشياء التي جربتها:
rm -rf ~/Library/Developer/Xcode/DerivedData/
لا أعرف ما الذي يجب أن أحاوله أيضًا ، أود أن أقول إن كل شيء مرتبط بشكل صحيح لأن التطبيق يعمل بشكل جيد في الإنتاج ويعمل البناء مع Xcode 11.
لقد تم ربط المكتبة يدويًا باستخدام دليل OneSignal ، فهل لديك فكرة عن كيفية إصلاح ذلك؟ 🙏🏼
عادةً عندما حصلت على هذه المشكلة ، تم حلها عن طريق تنظيف
DerivedData
لكن لا يمكنني التخلص من الخطأ 😞