Описание:
Только что обновлен с Xcode 10 до Xcode 12, до того, как на v10 этот проект был построен и успешно запущен.
Ошибка построения цели 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
oneSignal-реагировать-родной 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 :-(
До обновления проекты работали.
Та же ошибка.
Onesignal 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 работает для них, если они _are_ используют 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 Убедитесь, что вы
Ах, моя беда. Я забыл маленькую деталь. Спасибо @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 на всякий случай, если проблема не в этой библиотеке.
Я использую response-native-onesignal 3.9.1 для реакции на родную версию 0.60.0 ... Я могу решить эту проблему, включив x86_64 в пользовательские настройки (VALID_ARCHS)
Привет всем,
Я думаю, что эту проблему можно безопасно закрыть, поскольку она не связана с OneSignal.
@abdullahizzuddiin
(Другой вопрос, рассмотрите возможность открытия отдельного билета)
Для наглядности я опубликую один из ответов в ветке форума Apple Dev :
ПРОБЛЕМА:
Попытка запустить сборку на реальном устройстве не удалась, даже если сборка прошла успешно на моем MacBook Pro.
С этим сообщением произошла следующая ошибка:
Профиль обеспечения «Профиль обеспечения группы iOS: com.xxxxxxxxxxxx. Имя -App» не включает в себя текущее выбранное устройство «iPhone» (идентификатор 0000xxxx-000xxxxxxxxxxxxxxxxxx).
Справочное руководство по Xcode
Настройки учетных записей
Используйте настройки учетных записей для управления активами учетной записи разработчика (подписывание сертификатов и профилей обеспечения), добавления репозиториев и серверов.
Чтобы открыть настройки «Учетные записи», выберите «Xcode»> «Настройки» и нажмите «Учетные записи».
I Затем я нажал «Управление сертификатами» и добавил новый сертификат, щелкнув значок «плюс».
ЗАДАЧА РЕШЕНА:
Затем я запустил свою сборку, и моя ошибка подписи исчезла, приложение было установлено на моем 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, которое работает в симуляторе для отладки и выпуска сборки. Но при сборке для универсального устройства / архива я столкнулся с той же проблемой, что и abdullahizzuddiin.
Нет архитектур для компиляции (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 на всякий случай, если проблема не в этой библиотеке.
Та же проблема произошла со мной в xcode 12. Вы решили проблему? @abdullahizzuddiin или вы просто понизили xcode до 11.7
Спасибо
Для запуска в симуляторе мне нужно добавить « arm64 » в « Исключенные архитектуры ».
Но, чтобы запустить приложение на реальном устройстве, я должен оставить его без модификаций « Исключенные архитектуры ».
Так что мне приходится вносить это изменение каждый раз, когда я бегу.
Надеюсь, это поможет.
Та же проблема здесь, она вернулась.
Тем же
Тем же
Самый полезный комментарий
У меня тоже проблемы с Xcode 12
Я могу успешно построить проект на Xcode 11. Однако, как только я открываю Xcode12 и создаю проект, я получаю следующую ошибку:
Это не похоже на ошибку со стороны OneSignal. Похоже, что-то странное с кешем или что-то в этом роде,
вещи, которые я пробовал:
rm -rf ~/Library/Developer/Xcode/DerivedData/
Я не знаю, что еще мне попробовать, я бы сказал, что все правильно связано, так как приложение хорошо работает на производстве, а сборка работает с Xcode 11.
У меня есть библиотека, связанная вручную с помощью руководства OneSignal, есть идеи, как это исправить? 🙏🏼
Обычно, когда у меня возникает эта проблема, она решается очисткой
DerivedData
но я не могу избавиться от ошибки 😞