CocoaPodsは、その中央レジストリ(trunk)が2026年12月2日に恒久的に読み取り専用になると発表しました。その日以降、CocoaPodsは新しいポッドのバージョンの受け入れを停止します。このページでは、それがNew Relic iOSエージェントおよびその上に構築されたハイブリッドエージェントにとって何を意味するのか、またアプリを別のインストレーション方法に移行する方法について説明します。
移行する前に
移行する前に、これらの回答を確認してください:
- What's changing? バージョン7.7.10は、CocoaPods(
NewRelicAgentポッド)に公開する最後のiOSエージェントです。以降のバージョンは、SwiftパッケージマネージャおよびXCFrameworkのダウンロードを通じてのみ利用可能です。 - Will my app break? いいえ。すでに公開されているすべての
NewRelicAgentバージョンはCocoaPodsに残るため、pod installとCIパイプラインは引き続き機能します。CocoaPods経由で新しいエージェントバージョンを取得できなくなるだけです。 - Why migrate? 新しい機能、修正、および新しいiOSとXcodeバージョンのサポートを引き続き受け取るには、SwiftパッケージマネージャまたはXCFrameworkに移行してください。
この変更は、CocoaPodsを通じてiOSエージェントを取得するハイブリッドエージェントにも影響します。React Native、Flutter、Ionic Capacitor、Cordova、またはUnityを使用している場合は、ハイブリッドエージェントを使用するアプリの移行をご覧ください。
iOSアプリの移行
以下のインストレーション方法から1つを選択してください:
- Swift パッケージマネージャ:Xcodeに組み込まれているAppleのパッケージマネージャです。Xcodeからエージェントを更新します。
- XCFramework:ご自身でダウンロードしてプロジェクトに追加するフレームワークバンドルです。新しいバージョンをダウンロードすることで更新します。
iOSエージェントは他のパッケージに依存しないため、他の依存関係の一部が当面CocoaPodsに残る場合でも、Swiftパッケージマネージャに移行できます。すべての依存関係をCocoaPodsから移行する予定の場合は、まずそれぞれがSwiftパッケージマネージャをサポートしていることを確認してください。サポートしていない依存関係については、XCFrameworkメソッドを使用すると、パッケージマネージャとは独立してエージェントを追加および更新できます。
重要
エージェントのインストールには、1つの方法のみを使用してください。別の方法でエージェントを追加したときにNewRelicAgentポッドがまだインストールされている場合、アプリにエージェントのコピーが2つ存在することになり、ビルドエラーや予期しない動作の原因となります。
Swift パッケージ マネージャー
現在使用しているエージェントのバージョンを確認してください。これは、Podfile.lockのNewRelicAgentの横に記載されています。
Xcodeを閉じてから、NewRelicAgentポッドを削除します:
NewRelicAgentが唯一のポッドである場合は、プロジェクトのディレクトリでこのコマンドを実行してから、Podfile、Podfile.lock、および CocoaPods が生成した.xcworkspaceファイルを削除します:bash$pod deintegrate他のポッドを引き続き使用する場合は、
Podfileからpod 'NewRelicAgent'の行を削除し、次を実行します:bash$pod installPodfile.lockにNewRelicAgentが表示されなくなったことを確認してください。
Xcodeでプロジェクトを開いてください。引き続き他のポッドを使用する場合は、.xcworkspaceファイルを開いてください。それ以外の場合は、.xcodeprojファイルを開いてください。
File > Add Package Dependencies...を選択し、このURLを入力します:
https://github.com/newrelic/newrelic-ios-agent-spm依存関係のルールについては、最初のステップでメモしたバージョン、またはそれ以降のバージョンからUp to Next Major Versionを選択してください。
アプリのターゲット、およびアプリ拡張機能など、ポッドを使用したその他のターゲットに、NewRelicパッケージ製品を追加してください。
ターゲットのBuild PhasesでdSYMアップロードビルドスクリプトを確認してください:
- iOSエージェント7.4.0以降のスクリプトの場合(
run-symbol-toolを検索します)、そのままにします。Swiftパッケージ内のツールを検出します。 newrelic_postbuild.shを呼び出している場合、またはPods/内のパスを使用している場合は、Swiftパッケージマネージャのインストレーションの7.4.0以降のスクリプトに置き換えてください。
スクリプトを最後のビルドフェーズとして維持し、Based on dependency analysisのチェックが外れていることを確認してください。
アプリをクリーンにして構築してから、実行します。エージェントを開始するコードとアプリケーションのトークンは変更されません。
後でエージェントを更新するには、Swiftパッケージマネージャを使用した更新をご覧ください。
XCFramework
Xcodeを閉じて、Swiftパッケージマネージャの手順に記載されているとおりに、NewRelicAgentポッドを削除してください。
XCFramework手動インストレーションに従ってエージェントをダウンロードし、アプリのターゲットに追加してください。NewRelic.xcframeworkがEmbed & Signに設定されていることを確認してください。
Swiftパッケージマネージャの手順で説明されているように、dSYMアップロードビルドスクリプトを確認してください。7.4.0以上のスクリプトは、NewRelic.xcframework内のrun-symbol-toolを見つけます。
アプリをクリーンにして構築してから、実行します。エージェントを開始するコードとアプリケーションのトークンは変更されません。
後でエージェントを更新するには、「iOSエージェントを手動で置き換える」を参照してください。
CI/CDパイプラインを更新してください
CocoaPodsを完全に削除した場合は、pod installを実行する、または.xcworkspaceファイルをビルドするパイプライン・ステップを更新してください。Swiftパッケージマネージャを使用する場合は、ビルド前の別のステップでパッケージを解決することを検討してください:
$xcodebuild -resolvePackageDependencies -project YourApp.xcodeproj -scheme YourAppハイブリッドエージェントを使用するアプリを移行する
ハイブリッドエージェントには、iOSエージェントが含まれています。ほとんどの場合、CocoaPodsまたはSwiftパッケージマネージャを通じて取得できます。どちらを使用するかは、アプリのプロジェクト設定によって決まります:
エージェント | すべきこと |
|---|---|
| |
Flutter 3.44からデフォルトでオンになっている、FlutterのSwiftパッケージマネージャサポートを使用します。 | |
iOSプロジェクトがまだCocoaPodsを使用している場合は、Swiftパッケージマネージャに移行してください。 | |
| |
対応は不要です。より新しいiOSエージェントのバージョンを取得するには、ご自身でXCFrameworkをXcodeプロジェクトに追加してください。 | |
.NET MAUIとUnreal Engine | 対応は不要です。これらのエージェントは独自のパッケージにiOSエージェントを含んでおり、CocoaPodsを使用しません。 |
アプリが引き続きCocoaPods経由でiOSエージェントを取得する場合でも、ハイブリッドエージェントを更新できます。新しいハイブリッドエージェントのバージョンは、CocoaPods用にiOSエージェント7.7.10を維持し、Swiftパッケージマネージャ経由でのみ新しいiOSエージェントのバージョンを使用します。
リアクトネイティブ
デフォルトでは、React NativeエージェントはCocoaPodsからiOSエージェントを取得します。React Nativeエージェント1.9.3以降では、Swiftパッケージマネージャに切り替えることができます。
標準のReact Nativeアプリ
切り替える前に、アプリがこれらの要件を満たしていることを確認します:
- React Native 0.75以上
use_frameworks! :linkage => :dynamicご使用のPodfile- 標準のReact Nativeテンプレートと同様に、
react_native_post_installを呼び出すPodfile内のpost_installブロック
切り替えるには、以下の手順に従います:
React Nativeエージェントをバージョン1.9.3以降に更新してください。
ios/Podfileの先頭に、次を追加します:ENV['NEWRELIC_USE_SPM'] = '1'use_frameworks! :linkage => :dynamiciosディレクトリでpod installを実行し、Podfile.lockにNewRelicAgentが表示されなくなったことを確認してください。アプリを構築して実行します。
Expoアプリ
npx expo prebuild iosフォルダを再生成するため、Podfile内ではなくプロジェクト設定でこれを設定してください。Expo SDK 52以降が必要です。
切り替えるには、以下の手順に従います:
React Nativeエージェントをバージョン1.9.3以降に更新してください。
expo-build-propertiesをインストールします:bash$npx expo install expo-build-propertiesapp.jsonまたはapp.config.jsで、動的フレームワークを使用するようにiOSを設定してください:"plugins": ["newrelic-react-native-agent",["expo-build-properties", { "ios": { "useFrameworks": "dynamic" } }]]プロジェクトのルートディレクトリにある
.envファイルにNEWRELIC_USE_SPM=1を追加してください。npx expo prebuildとnpx expo run:iosがそれをロードします。npx expo prebuild --cleanを実行し、ios/Podfile.lockにNewRelicAgentが表示されなくなったことを確認してください。
CocoaPodsの実行時にNEWRELIC_USE_SPMが設定されていない場合(たとえば、ご自身でpod installやnpx pod-installを実行した場合など)、アプリはCocoaPodsからiOSエージェントを取得する状態に戻ります。
フラッター
FlutterエージェントはCocoaPodsとSwiftパッケージマネージャの両方をサポートしており、どちらを使用するかはFlutterが決定します。Flutter 3.44から、Swiftパッケージマネージャはデフォルトでオンになっているため、ほとんどのアプリはすでにこれを通じてiOSエージェントを取得しています。
Swiftパッケージマネージャをオフにした場合は、次を実行して再度オンにしてください:
$flutter config --enable-swift-package-managerまた、enable-swift-package-manager: falseを追加した場合は、pubspec.yamlから削除してください。
Ionic Capacitor
CapacitorエージェントはCocoaPodsとSwiftパッケージマネージャの両方をサポートしており、どちらを使用するかはiOSプロジェクトによって決まります。Capacitor 8では、Swiftパッケージマネージャを使用して新しいiOSプロジェクトを作成しますが、CocoaPodsで作成されたプロジェクトは、移行するまで引き続きCocoaPodsを使用します。
ios/AppフォルダにCapApp-SPMパッケージがある場合、すでにSwiftパッケージマネージャを使用しています。npx cap syncはエージェントを最新状態で維持します。Podfileがある場合は、CapacitorのSwiftパッケージマネージャガイドに従って、プロジェクトをSwiftパッケージマネージャに移行してください。これでは、npx cap spm-migration-assistantコマンドとiOSプラットフォームの再作成について説明しています。
コルドバ
cordova-ios 8以降では、CordovaエージェントはSwiftパッケージマネージャを介してiOSエージェントを取得します。以前のcordova-iosバージョンでは、CocoaPodsを使用します。
移行するには、以下の手順に従ってください:
Cordovaエージェントを最新バージョンに更新してください。
iOSプラットフォームを更新してください。cordova-ios 8のリリース発表をご覧ください:
bash$cordova platform remove ios$cordova platform add ios@8プラットフォームを削除すると
platforms/iosフォルダが削除されるため、手動で行った変更はすべて失われます。事前にバックアップしてください。config.xmlがiOSのデプロイメントターゲットを15.0以降に設定していることを確認してください:<preference name="deployment-target" value="15.0" />アプリを構築して実行します。
Unity
Unityエージェントは、External Dependency Manager for Unity(EDM4U)を使用して、CocoaPods経由でiOSエージェントを取得します。Swiftパッケージマネージャはサポートしていません。アプリはCocoaPodsにすでに存在するバージョンでビルドされ続け、新しいUnityエージェントのバージョンはiOSエージェント7.7.10を維持します。
新しいiOSエージェントバージョンを使用するには、Unityエージェントの依存関係の手順で説明されているように、ご自身でXCFrameworkをXcodeプロジェクトに追加してください。アプリ内のエージェントのコピーが1つだけになるように、EDM4UがNewRelicAgentポッドもインストールしないことを確認してください。