React-native-onesignal: OneSignal OneSignalNotificationExtension build gagal pada Xcode 12 terkait dengan masalah cocoapods/arsitektur/simulator

Dibuat pada 31 Agu 2020  ·  32Komentar  ·  Sumber: OneSignal/react-native-onesignal

Keterangan:

Baru saja diperbarui dari Xcode 10 ke Xcode 12, sebelum di v10 proyek ini dibangun dan dijalankan dengan sukses.

Pembangunan target OneSignalNotificationExtension gagal:

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


dan 100 kesalahan lagi

Saya tidak begitu baik di Xcode dan Mac jadi saya minta maaf jika tidak jelas atau menyesatkan.

Terima kasih

Lingkungan

reaksi asli 0.63.2
onesignal-react-native 3.9.1
Kode X 12
Diinstal melalui npm dan ditautkan dengan pod

Langkah-langkah untuk Mereproduksi Masalah:

  • Membangun

  • Help Wanted

    Komentar yang paling membantu

    Saya juga mengalami beberapa masalah dengan Xcode 12

    Saya berhasil membangun proyek di Xcode 11. Namun begitu saya membuka Xcode12 dan membangun proyek saya mendapatkan kesalahan berikut:

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

    Ini sepertinya bukan kesalahan dari sisi OneSignal. Sepertinya ada yang aneh dengan cache atau semacamnya,
    hal yang saya coba:

    • Hapus Data Berasal dari Xcode - rm -rf ~/Library/Developer/Xcode/DerivedData/
    • Hapus reaksi asli, cache benang, dan instal ulang dependensi.
    • Setel ulang data dan konten simulator
    • Restart komputer

    Saya tidak tahu apa lagi yang harus saya coba, saya akan mengatakan bahwa semuanya terhubung dengan benar karena aplikasi berfungsi dengan baik di Produksi dan build bekerja dengan Xcode 11.

    Saya memiliki perpustakaan yang ditautkan secara manual menggunakan panduan OneSignal, adakah ide tentang cara memperbaikinya? 🙏🏼

    Biasanya ketika saya mendapatkan masalah ini diselesaikan dengan membersihkan DerivedData tetapi saya tidak dapat menghilangkan kesalahan

    Semua 32 komentar

    apa kabar,
    Seperti apa file NotificationService.swift ? Itu harus seperti:

    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)
            }
        }
    
    }
    

    Lihat langkah 4.3.6 dalam petunjuk pengaturan dan lanjutkan dari sana untuk memastikan Anda telah mengatur semuanya dengan benar.

    Semoga ini membantu. Bersulang

    Terima kasih untuk umpan baliknya.

    Saya menggunakan file Objective-C. Haruskah saya menggunakan yang cepat?

    Saya pikir Anda menggunakan Swift. Jika Anda menggunakan Obj-C, gunakan Objective C. Menikmati!

    Saya juga mengalami beberapa masalah dengan Xcode 12

    Saya berhasil membangun proyek di Xcode 11. Namun begitu saya membuka Xcode12 dan membangun proyek saya mendapatkan kesalahan berikut:

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

    Ini sepertinya bukan kesalahan dari sisi OneSignal. Sepertinya ada yang aneh dengan cache atau semacamnya,
    hal yang saya coba:

    • Hapus Data Berasal dari Xcode - rm -rf ~/Library/Developer/Xcode/DerivedData/
    • Hapus reaksi asli, cache benang, dan instal ulang dependensi.
    • Setel ulang data dan konten simulator
    • Restart komputer

    Saya tidak tahu apa lagi yang harus saya coba, saya akan mengatakan bahwa semuanya terhubung dengan benar karena aplikasi berfungsi dengan baik di Produksi dan build bekerja dengan Xcode 11.

    Saya memiliki perpustakaan yang ditautkan secara manual menggunakan panduan OneSignal, adakah ide tentang cara memperbaikinya? 🙏🏼

    Biasanya ketika saya mendapatkan masalah ini diselesaikan dengan membersihkan DerivedData tetapi saya tidak dapat menghilangkan kesalahan

    Saya telah menemukan sesuatu yang aneh,

    Jika saya mencoba membangun aplikasi dengan Xcode 12, selalu gagal. Namun Jika saya membangun aplikasi terlebih dahulu dengan Xcode 11 dan kemudian membuka Xcode 12 dan membangun aplikasi itu berfungsi

    Namun begitu saya membersihkan build dan mencoba membangun kembali dengan Xcode 12, itu mulai gagal dengan kesalahan yang sama lagi

    Kesalahan yang sama di sini dengan Xcode 12 dan onesignal-react-native 3.9.1 :-(
    Proyek bekerja sebelum pembaruan.

    Kesalahan yang sama.
    SDK Onesignal -> 2.15.2
    reaksi-asli-onesignal -> 3.9.1
    Bekerja dengan baik pada xCode 11.

    apa kabar,
    Itu aneh @carloscuesta . Sudahkah Anda mencoba melihat perbedaan antara proyek pada Xcode 11 vs 12? Mungkin 12 mengubah beberapa pengaturan build penting untuk beberapa alasan.

    Mendapat masalah serupa ketika saya memperbarui Xcode saya dari 11 menjadi 12 ..

    Hai @rgomezp

    Saya dapat mengonfirmasi bahwa tidak ada perubahan dari Xcode 11 ke Xcode 12. git status dari repo tidak dimodifikasi.

    Namun saya masih dapat mereproduksi build yang gagal. Dan setiap kali saya membangun Xcode 11 dan Xcode 12 setelah bekerja untuk pertama kalinya

    Screenshot 2020-09-25 at 12 12 40

    Screenshot 2020-09-25 at 12 18 39

    apa kabar,
    Saya yakin ini terkait dengan masalah Cocoapods yang sedang berlangsung yang sebelumnya dilaporkan di sini .

    Ini mungkin berhasil tambahkan x86_64 ke VALID_ARCH jika perlu menjalankan aplikasi di simulator, misalnya, x86_64 arm64 arm64e

    Stack overflow ini mungkin berisi solusi yang Anda butuhkan.

    Hai! Terima kasih atas bantuan Anda @rgomezp

    Saya akan memberi tahu Anda hasil eksperimen saya!

    Tambahkan Arsitektur yang Dikecualikan

    Saya memperkenalkan arm64 seperti yang disarankan pada posting StackOverflow di Project > Architectures > Excluded Architectures .

    Screenshot 2020-09-28 at 13 40 32

    Ini tidak memperbaiki masalah. Saya mendapatkan kesalahan yang sama dengan mengeluh tentang x86_64 .

    Screenshot 2020-09-28 at 13 39 50

    Jadi saya melanjutkan dan menambahkan x86_64 ke Excluded Architectures .

    Screenshot 2020-09-28 at 13 41 12

    Setelah perubahan berikut, kesalahan berikut tampaknya telah diperbaiki. Namun saya mendapat kesalahan lain terkait dengan 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.
    

    Namun saya tidak mengubah apa pun yang terkait dengan CodeSign – Build Xcode11 berfungsi dengan baik

    Screenshot 2020-09-28 at 11 36 29

    Setelah membersihkan build DerivedData dan restart komputer. Saya melihat kesalahan lain: Link app (i386) .

    Jika saya membuka kesalahan, saya melihat banyak file tidak ditemukan di folder DerivedData . Tak satu pun dari mereka terkait dengan OneSignal. Namun saya tidak tahu mengapa ini gagal jika berfungsi dengan baik di Xcode 11. Saya sangat bingung sekarang

    Gunakan VALID_ARCHS

    Ini juga tidak berhasil untuk saya. Saya juga membaca bahwa ini sudah usang pada Xcode 12 dan Excluded Architectures harus digunakan sebagai gantinya.

    Saya tidak punya User-Defined Setting untuk ini. Karena saya tidak menggunakan CocoaPods dan saya memiliki modul yang ditautkan secara manual.

    Saya menemukan dan tautan menarik yang berbicara tentang kesalahan "sertifikat yang sama" dengan Xcode setelah mengecualikan arm64 .

    Dikatakan bahwa ekstensi tidak boleh mengecualikan arsitektur tersebut . Kesalahan yang sama sayangnya :(

    Aku kehabisan ide untuk hari ini

    Saya dapat mengonfirmasi bahwa membangun dan menjalankan aplikasi pada perangkat nyata tidak menimbulkan kesalahan apa pun tanpa modifikasi "Arsitektur yang Dikecualikan".

    Jadi itu adalah sesuatu yang berhubungan 100% dengan arsitektur simulator itu sendiri

    Screenshot 2020-09-29 at 09 17 24

    Halo Carlos,
    Terima kasih atas penyelidikan terperinci. Untuk visibilitas, saya juga menemukan utas stack overflow ini .

    Untuk meringkas masalah @carloscuesta ,

    1. Kesalahan Embedded binary is not signed with the same certificate as the parent app... diselesaikan dengan menambahkan arm64 dan x86_64 ke Excluded Architectures , sesuai panduan untuk menggunakan ini di atas VALID ARCHS.
    2. Solusi yang diposting di repositori Cocoapods tidak bekerja untuk Anda karena Anda memiliki perpustakaan yang ditautkan secara manual.

    Carlos, pada titik ini saya tidak yakin apa lagi yang bisa dilakukan karena ini terdengar seperti masalah non-OneSignal.

    Bisakah orang lain mengonfirmasi bahwa solusi Cocoapods yang ditautkan di atas berfungsi untuk mereka jika mereka _are_ menggunakan Cocoapods?

    Hai @rgomezp

    Terima kasih atas semua bantuan yang Anda berikan.

    Carlos, pada titik ini saya tidak yakin apa lagi yang bisa dilakukan karena ini terdengar seperti masalah non-OneSignal.

    Saya tidak 100% yakin dengan pernyataan ini karena Jika saya memutuskan tautan seluruh perpustakaan OneSignal dan saya menghapus OneSignalNotificationServiceExtension proyek ini dibangun di atas Xcode12. Saya tidak tahu dari mana kesalahan itu berasal, itu pasti dan mungkin itu kasus khusus karena perpustakaan ditautkan secara manual. Dan saya tidak perlu menyentuh apapun yang berhubungan dengan arsitektur

    Tapi ya, mari kita lihat apakah kita dapat menemukan kasus penggunaan lain 👍🏼

    Tampaknya Xcode 12 build untuk simulator dengan arsitektur - arm64, i386, x86_64 .

    Jadi solusi solusi saya adalah

    1. Tambahkan arm64 di Arsitektur yang Dikecualikan dari pengaturan Pembangunan Proyek
    2. Hapus VALID ARCHS dari pengaturan build subproyek RCTOneSignal.
      (VAILD ARCHS dipindahkan ke Pengaturan build yang Ditentukan Pengguna di Xcode 12)

    Ini bekerja dengan baik di proyek saya.

    @stanleyctcl Solusi Anda berhasil! :tada:

    Saya tidak melihat target RCTOneSignal di dalam perpustakaan RCTOneSignal memiliki VALID_ARCHS didefinisikan sebagai pengaturan User-Defined . Ini adalah sesuatu yang harus kita hapus dari sisi Perpustakaan! Saya akan membuat PR untuk memperbaiki masalah ini!

    Screenshot 2020-10-07 at 10 22 44

    Itu sebabnya semua perubahan saya tidak berhasil. Karena perpustakaan OneSignal telah menetapkan Pengaturan Pengguna ini.

    Hei, terima kasih @stanleyctcl
    Solusi Anda berhasil untuk saya.

    Sebelumnya, build saya pada mode rilis ke iOS Simulator gagal. Saya mendapatkan kesalahan building for iOS Simulator, but linking in object file built for iOS, file onesignal . Tapi, saya bisa membangun mode rilis di perangkat nyata tanpa ada kesalahan yang muncul. Solusi di atas memecahkan masalah ini.

    Sayangnya, setelah saya menerapkan solusi Anda, saya tidak dapat mengarsipkan aplikasi saya. Saya mendapatkan kesalahan ini.

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

    ada petunjuk?

    @abdullahizzuddiin Pastikan Anda hanya

    Ah, burukku. Saya lupa detail kecilnya. Terima kasih @carloscuesta telah menunjuk saya. Ternyata saya hanya perlu mengatur Excluded Architecture tanpa menghapus VALID ARCHS dari RCTOneSignal pengaturan pembangunan subproyek. 🤔

    = = =
    Saya pikir, saya mendapat kesalahan perbedaan. Saya telah berhasil mengarsipkan. Tapi, setelah saya memilih "Kelola Penandatanganan Secara Otomatis", saya mendapatkan kesalahan ini
    image

    Saya dapat menyebarkan aplikasi ke Appstore tanpa masalah pada versi Xcode sebelumnya. Sebelumnya, saya menggunakan 11.7. Sekarang, saya menggunakan 12.0 dan saya langsung mendapatkan kesalahan ini tanpa ada perubahan pada repo saya.

    //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
    

    Ada petunjuk? atau haruskah saya membuat masalah terpisah?

    ps:
    Saya juga telah mengirimkan masalah saya ke Forum Pengembang Apple untuk berjaga-jaga jika itu bukan masalah perpustakaan ini.

    saya menggunakan react-native-onesignal 3.9.1 pada versi react native 0.60.0...Saya dapat mengatasi masalah ini dengan memasukkan x86_64 di dalam pengaturan yang Ditentukan Pengguna (VALID_ARCHS)

    Apa kabar,
    Saya pikir masalah ini aman untuk ditutup karena sepertinya bukan masalah OneSignal.


    @abdullahizzuddiin
    (Masalah Berbeda, pertimbangkan untuk membuka tiket terpisah)

    Untuk visibilitas, saya akan memposting salah satu tanggapan ke utas Forum Dev Apple :

    MASALAH:
    Mencoba menjalankan build di perangkat yang sebenarnya gagal, meskipun build berhasil di MacBook Pro saya.
    Terjadi galat berikut dengan pesan ini:
    Profil penyediaan "Profil Penyediaan Tim iOS: com.xxxxxxxxxxxx.Nama -App" tidak menyertakan perangkat "iPhone" yang saat ini dipilih (pengidentifikasi 0000xxxx-000xxxxxxxxxxxxxxxxxx).

    Panduan Online Bantuan Xcode

    Preferensi akun
    Gunakan preferensi Akun untuk mengelola aset akun pengembang (menandatangani sertifikat dan profil penyediaan), menambahkan repositori, dan menambahkan server.

    Untuk membuka preferensi Akun, pilih Xcode > Preferensi dan klik Akun.
    I Kemudian saya mengklik, mengelola sertifikat, dan menambahkan sertifikat baru dengan mengklik simbol plus.

    MASALAH TERSELESAIKAN:
    Saya kemudian menjalankan build saya dan kesalahan penandatanganan saya dihapus, aplikasi diinstal pada iPhone 11 Pro Max saya.
    Semoga solusi ini membantu Anda.

    Hai @rgomezp

    Masalah ini adalah campuran dari masalah yang berbeda. Yang Anda tunjuk tidak ada hubungannya dengan masalah Simulator itu sendiri, itu adalah sesuatu yang ada hubungannya dengan RCTOneSignal karena penggunaan VALID_ARCHS

    Saya tidak tahu apakah kami harus menutup masalah ini sepenuhnya sampai simulator diselesaikan.

    Hai @rgomezp

    Saya telah mengikuti saran dari Apple Dev Forum yang Anda kutip di atas. Tapi, itu tidak menyelesaikan masalah saya.

    Untuk sementara, saya menurunkan versi Xcode ke 11.7 dan saya berhasil membangun, menjalankan, dan mengarsipkan. Tapi, saya masih bisa melakukan tindakan itu di Xcode 12.0

    Saya akan membiarkan ini terbuka untuk ditutup secara otomatis pada # 1053

    Tampaknya Xcode 12 build untuk simulator dengan arsitektur - arm64, i386, x86_64 .

    Jadi solusi solusi saya adalah

    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)**
    

    Ini bekerja dengan baik di proyek saya.

    Ini bekerja untuk saya. Ingatlah untuk menghapusnya. Tidak hanya mengosongkan "" karena tidak akan berfungsi

    edit:
    Proyek saya menggunakan tautan manual Satu sinyal 3.2.12.
    reaksi asli 0.59.9
    xkode 12

    Saya mencoba solusi stanleyctcl yang berfungsi di simulator untuk debug dan rilis build. Tetapi ketika membangun untuk perangkat Generik/Arsip saya menghadapi masalah yang sama seperti abdullahizzuddiin

    Tidak ada arsitektur untuk dikompilasi (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
    arm64
    ))

    Solusi yang berhasil untuk saya adalah
    Terapkan ini saja

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

    Ini akan membuat Arsip berfungsi tetapi rilis simulator gagal. Untuk memperbaiki itu. anda harus pergi Semua target proyek dan target pod -> Pengaturan Bangun -> Arsitektur -> Bangun Arsitektur Aktif Saja -> Setel 'Ya' untuk mode rilis

    Penjelasan dan Langkah-langkahnya: https://stackoverflow.com/a/64139830/9232424.
    Baca lebih lanjut: https://medium.com/macoclock/deep-drive-xcode-build-settings-827c3ce4811c.

    Ah, burukku. Saya lupa detail kecilnya. Terima kasih @carloscuesta telah menunjuk saya. Ternyata saya hanya perlu mengatur Excluded Architecture tanpa menghapus VALID ARCHS dari RCTOneSignal pengaturan pembangunan subproyek. 🤔

    = = =
    Saya pikir, saya mendapat kesalahan perbedaan. Saya telah berhasil mengarsipkan. Tapi, setelah saya memilih "Kelola Penandatanganan Secara Otomatis", saya mendapatkan kesalahan ini
    image

    Saya dapat menyebarkan aplikasi ke Appstore tanpa masalah pada versi Xcode sebelumnya. Sebelumnya, saya menggunakan 11.7. Sekarang, saya menggunakan 12.0 dan saya langsung mendapatkan kesalahan ini tanpa ada perubahan pada repo saya.

    //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
    

    Ada petunjuk? atau haruskah saya membuat masalah terpisah?

    ps:
    Saya juga telah mengirimkan masalah saya ke Forum Pengembang Apple untuk berjaga-jaga jika itu bukan masalah perpustakaan ini.

    Masalah yang sama terjadi dengan saya di xcode 12, Apakah Anda menyelesaikan masalah? @abdullahizzuddiin atau Anda baru saja menurunkan versi xcode ke 11.7

    Terima kasih

    Untuk berjalan di simulator, saya harus menambahkan " arm64 " di " Arsitektur yang dikecualikan ".
    Tapi, untuk menjalankan aplikasi di perangkat nyata, saya harus membiarkannya tanpa modifikasi " Arsitektur yang Dikecualikan ".
    Jadi saya harus membuat perubahan ini setiap kali saya berlari.

    Saya harap ini membantu.

    Masalah yang sama di sini, itu kembali.

    Sama

    Sama

    Apakah halaman ini membantu?
    0 / 5 - 0 peringkat