説明:
React-native 0.60にアップグレードし、次のようにonesignalのインストール手順に従いました: https ://documentation.onesignal.com/docs/react-native-sdk-setup
xcodeアプリケーションを実行すると、OnesignalNotificationExtensionに関連するエラーが発生します。
エラー: ld: library not found for -lPods-OneSignalNotificationServiceExtension
OneSignalNotificationServiceExtensionターゲットには、次の設定があります。
"${PODS_ROOT}/Headers/Public/react-native-onesignal"
"${PODS_ROOT}/OneSignal/iOS_SDK/OneSignalSDK/Framework"
環境
問題を再現する手順:
ld: library not found for -lPods-OneSignalNotificationServiceExtension
ハウディ、
昨日、新しいバージョンをリリースしました。 更新してもう一度お試しください。 また、/ Users /にあるDerivedDataフォルダーをクリアしてみてください
最後に試すのは、 ios
ディレクトリからのポッドの更新です。
@jamesoneこの問題を解決しましたか? @rgomezpからの回答は
@rgomezp最新リリース3.4.1を使用した場合、上記の提案はいずれも
次の+1!
ハウディ、
プロジェクトのiosディレクトリからpod deintegrate && pod install
を実行してみてください
上記の提案は機能していません。 すでに最新リリースv3.4.1に更新されており、派生データをクリーンアップし、ポッドをクリーンアップして再インストールしますが、それでもエラーが発生します。
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_RCTOneSignalExtensionService", referenced from:
objc-class-ref in NotificationService.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Podfile.lock
- react-native-onesignal (3.4.1):
- OneSignal (= 2.11.0)
- React (< 1.0.0, >= 0.13.0)
更新:
私の悪い。 NotificationService.m
内容をDOCの最新のコードに置き換える必要があることがわかりました。 私はまだRCTOneSignalExtensionService.h
。 更新すると、エラーはなくなります。
聞いてよかった! あなたがまだこの問題に苦労しているならコメントしてください、そして私は再開することができます
ポッドを使用したRN:0.60.10でもまだ問題があります。
ポッドを一緒に使用する方法は?
こんにちは、
同じ問題がありますld: library not found for -lPods-OneSignalNotificationServiceExtension
私はreact-native0.61.4とonesignal3.6.1を使用しています
ポッドの分解とクリーニングおよびDerivedDataを使用
見つけましたが、構成リストに「リリース」構成がない場合、ライブラリが見つからずに「アーカイブ」が失敗する理由がわかりません。
アーカイブが失敗する:
アーカイブは成功します👍
参考までに、Dev、Preprod、Prodはリリースに基づいています。 それはonesignalで私の古いプロジェクトで「リリース」なしで働いていました
@rgomezpを更新し
- 新しいreact-nativeプロジェクトを作成する
- Onesignalを追加する
- ビルドとアーカイブ>大丈夫です
- 「リリース」構成の名前を別の名前(Devなど)に変更します
- ビルドとアーカイブ> ld:-lPodsのライブラリが見つかりません-OneSignalNotificationServiceExtension
上記の提案は機能していません。 すでに最新リリースv3.4.1に更新されており、派生データをクリーンアップし、ポッドをクリーンアップして再インストールしますが、それでもエラーが発生します。
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_RCTOneSignalExtensionService", referenced from: objc-class-ref in NotificationService.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Podfile.lock
- react-native-onesignal (3.4.1): - OneSignal (= 2.11.0) - React (< 1.0.0, >= 0.13.0)
更新:
私の悪い。NotificationService.m
内容をDOCの最新のコードに置き換える必要があることがわかりました。 私はまだRCTOneSignalExtensionService.h
。 更新すると、エラーはなくなります。
これは私のために働いていません
現在同じ問題が発生しています。 新しいスキームを追加したときに-lPods-OneSignalNotificationServiceExtension
失敗しました。 それに関する更新はありますか?
同じ
react-nativeをアップグレードした後も同じ問題が発生しました
これで私の問題が修正されましたhttps://github.com/OneSignal/react-native-onesignal/issues/651#issuecomment-429062289
RNバージョンを0.63.2にアップグレードしてアプリをアーカイブしようとしたときに同じ問題が発生し、修正されました
これで。
Podfileで指定したバージョンとターゲットバージョンの間のバージョンの不一致でした
OneSignal拡張機能を設定しました。 これらの2つの値を互いに一致するように変更するとすぐに、
問題はなくなりました。
Podfile
OneSignalNotificationExtension(または通知拡張機能に名前を付けたもの)
私は同じ問題を抱えていますが、上記のヒントのどれも私の問題を解決しませんでした。
非常によく似た2つのプロジェクトがあります。1つは機能し、もう1つは機能しません。
xcodeのビルドとアーカイブの手順は問題ありませんが、CIまたはコンピューターでは、以下のコマンドは1つのプロジェクトでは成功しますが、他のプロジェクトでは失敗します。
xcodebuild "-workspace" "/Users/vagrant/git/packages/mobile-pro/ios/WecasaPro.xcworkspace" "-scheme" "WecasaPro" "-configuration" "Staging" "COMPILER_INDEX_STORE_ENABLE=NO" "archive" "-archivePath" "/var/folders/6q/wgy6jtp12w5gzgm9lzcglpqw0000gn/T/__archive__581470914/WecasaPro.xcarchive" "-destination" "generic/platform=iOS" | xcpretty
コマンドのログを見ると。 うまくいくプロジェクトのために私は持っています
▸ Building Pods/Pods-OneSignalNotificationServiceExtension [Staging]
▸ Check Dependencies
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Building library libPods-OneSignalNotificationServiceExtension.a
▸ Building library libPods-OneSignalNotificationServiceExtension.a
▸ Building WecasaPro/OneSignalNotificationServiceExtension [Staging]
▸ Check Dependencies
▸ Processing Info.plist
▸ Running script '[CP] Check Pods Manifest.lock'
▸ Compiling NotificationService.m
▸ Linking OneSignalNotificationServiceExtension
▸ Generating 'OneSignalNotificationServiceExtension.appex.dSYM'
▸ Touching OneSignalNotificationServiceExtension.appex
▸ Signing /Users/vagrant/Library/Developer/Xcode/DerivedData/WecasaPro-fuytaarwfdjqjucxpzvnzgjrhcvd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/OneSignalNotificationServiceExtension.appex
▸ Touching OneSignalNotificationServiceExtension.appex.dSYM
うまくいかないプロジェクトのために私は持っています
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Running script 'Copy generated compatibility header'
▸ Building library libPods-OneSignalNotificationServiceExtension.a
両方のプロジェクトの構成を数回確認しましたが、類似しているようです。
誰かがこれを引き起こす可能性があるものについての手がかりを持っていますか?
2つのプロジェクトのログを比較したところ、成功したプロジェクトはレガシービルドシステムを使用し、もう1つは新しいビルドシステムを使用していることがわかりました。
プロジェクトをレガシービルドシステムに切り替えましたが、問題はまだ残っています。
成功したプロジェクトについて私は
CompileC /Users/scesbron/Library/Developer/Xcode/DerivedData/WecasaPro-guwmidkqvxjubvhfovvxnfhourjd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/Pods.build/Staging-iphoneos/Pods-OneSignalNotificationServiceExtension.build/Objects-normal/arm64/Pods-OneSignalNotificationServiceExtension-dummy.o Target\ Support\ Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension-dummy.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
その後
Libtool /Users/scesbron/Library/Developer/Xcode/DerivedData/WecasaPro-guwmidkqvxjubvhfovvxnfhourjd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/Pods.build/Staging-iphoneos/Pods-OneSignalNotificationServiceExtension.build/Objects-normal/armv7/libPods-OneSignalNotificationServiceExtension.a normal armv7
しかし、コンパイル後の他のプロジェクトでは、Ldコマンドがあります
Ld /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/OneSignalNotificationServiceExtension normal armv7
これらのコマンドの違いがわからないし、シーケンスが同じでない理由もわからない
私の問題についての最後のコメント。 OneSignalNotificationServiceExtensionターゲット、関連するObjective-cファイル、およびポッドファイル内のOneSignalへの参照を削除しました。 xcodebuild
コマンドは成功します。
ドキュメントhttps://documentation.onesignal.com/docs/react-native-sdk-setupで説明されているすべての手順を実行して、1つのシグナルを追加し直しました
その後、私のxcodebuild
コマンドはまだ失敗します
Ld /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/Binary/OneSignalNotificationServiceExtension` normal armv7
/Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/Binary
フォルダーは空であり、 OneSignalNotificationServiceExtension
ファイルは含まれていません。
私は同じ問題を抱えています
そう...
これは追跡するのが非常に難しいものでした。問題の修正を実際に見つけるには、新しいRN064.1プロジェクトを再作成する必要がありました。 私は自分のプロジェクトでスキームを使用しており、M1で正しくビルドされるように修正を適用していました。
プロジェクトが古いfatフレームワークの代わりに新しいOneSignalXCFramework
を使用するように更新されたので、Podfileでもそれを使用するようにNSEを更新することにしました。
モジュールが見つからないという多くの問題に直面していました。これには、リリースビルドのビルド中、またはシミュレーターやデバイスへのビルド中の問題が含まれます。
私のコードを台無しにして問題全体が機能しない原因となった部分は、Podfileの次のセクションです。
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[iphonesimulator=*]"] = "arm64"
end
結局、私はそれをデバッグビルドにのみ適用し、リリースビルドには適用する必要がありませんでした。 私はiOS開発者ではないので、アーキテクチャーからシミュレーターを除外すると、NSEでポッドが検出されなくなるという複雑さはわかりませんが、それが私の問題でした。
ブロック全体を削除することが私にとってそれを修正したものでした。 少なくとも私のプロジェクトではもう必要ないようです。
最も参考になるコメント
RNバージョンを0.63.2にアップグレードしてアプリをアーカイブしようとしたときに同じ問題が発生し、修正されました
これで。
Podfileで指定したバージョンとターゲットバージョンの間のバージョンの不一致でした
OneSignal拡張機能を設定しました。 これらの2つの値を互いに一致するように変更するとすぐに、
問題はなくなりました。
Podfile
OneSignalNotificationExtension(または通知拡張機能に名前を付けたもの)