1. ホーム
  2. ios

[解決済み】クラスは両方で実装されており、どちらかが使用されることになります。どちらが未定義か

2022-02-19 08:50:32

質問

Cocoapodsに含まれる依存関係で問題があります。

私は、Frameworkプロジェクト(MyFrameworkターゲット)を持っており、それはまた、Appターゲット(MyFrameworkExampleApp)を持っています。アプリを実行しようとすると、このようなエラーでいっぱいのコンソールが表示されます。

PodsDummy_AFNetworkingクラスは、/private/var/containers/Bundle/Application/AD85D7EC-2652-4019-94FB-C799D0FBA69B/MyFrameworkExampleApp.app /Frameworks/MyFramework.Networking /MyFrameworkExampleApp.fromで実装されているクラスです。 framework/MyFramework (0x1019a0438) と /var/containers/Bundle/Application/AD85D7EC-2652-4019-94FB-C799D0FBA69B/MyFrameworkExampleApp.app/MyFrameworkExampleApp (0x10107c558) があります。2つのうち1つが使用されます。どちらが使われるかは、未定義です。

MyFrameworkターゲットにのみ含まれるライブラリからエラーが発生することです。

以下は、私のPodfileの内容です。

# Specify platform.
platform :ios, '9.0'

# Let's ignore all warnings from all pods
inhibit_all_warnings!

target 'MyFramework’ do

    # ReactiveCocoa for easier binding between UI and data models.
    pod 'ReactiveCocoa', '< 3.0'

    # ReactiveViewModel for easier handling of active/inactive view models.
    pod 'ReactiveViewModel', '0.3'

    # An Objective-C extension with some nice helpers including @weakify/@strongify.
    pod 'libextobjc', '~> 0.4.1'

    # AFNetworking Security stuff
    pod 'AFNetworking/Security', '~> 2.5.4'

    # KZPropertyMapper to easily map JSON dicts to properties
    pod "KZPropertyMapper"

    # Simple wrapper for KeyChain
    pod 'UICKeyChainStore', '~> 2.0.6'

    # Animated gifs
    pod 'FLAnimatedImage', '~> 1.0'

    # Firebase push notifications
    pod 'Firebase/Core'
    pod 'Firebase/Messaging'

    # Easy image downloading with cache.
    pod 'SDWebImage', '~> 3.7.2'

    # Activity indicator for RBSlider
    pod 'DGActivityIndicatorView'

end

target 'MyFrameworkExampleApp' do

    # Progress indicator
    pod 'MBProgressHUD', '~> 1.0.0'

    # Color picker
    pod 'iOS-Color-Picker'

    # Hockey SDK
    pod 'HockeySDK', '~> 5.0.0'

end

ご覧の通り、App targetはPodを継承していませんし、グローバルPodも持っていません。この理由は何でしょうか?

解決方法は?

理由はわかりませんが、cocoapodsが作成するアプリのPods-[AppName].debug.xcconfigファイルを開くと、OTHER_LDFLAGSがあり、フレームワークでリンクしたものと同じフレームワークにリンクしていることがわかります。そこで、-framework [Duplicated framework]を削除すると、警告が消えます。

cocoapodsのエラーのようです。