【问题标题】:Linked the third-party static library twice when use UnityFramework使用 UnityFramework 时两次链接第三方静态库
【发布时间】:2021-08-09 18:02:25
【问题描述】:
  • 统一2019.4
  • Cocoapods 1.10.1
  • xcode 12.5

Podfile:

source 'https://cdn.cocoapods.org/'
use_frameworks!

platform :ios, '10.0'

target 'UnityFramework' do
  pod 'AppsFlyerFramework', '~> 6.2.4'
end

target 'Unity-iPhone' do
end

运行日志

objc[5990]: Class AppsFlyerProxyManager is implemented in both /private/var/containers/Bundle/Application/97237BCE-C78A-4C22-8DE2-19D7CC866571/dev.app/dev (0x102d6b4c0) and /private/var/containers/Bundle/Application/97237BCE-C78A-4C22-8DE2-19D7CC866571/dev.app/Frameworks/UnityFramework.framework/UnityFramework (0x10c670350). One of the two will be used. Which one is undefined.
objc[5990]: Class AppsFlyerCrossPromotionHelper is implemented in both /private/var/containers/Bundle/Application/97237BCE-C78A-4C22-8DE2-19D7CC866571/dev.app/dev (0x102d6b510) and /private/var/containers/Bundle/Application/97237BCE-C78A-4C22-8DE2-19D7CC866571/dev.app/Frameworks/UnityFramework.framework/UnityFramework (0x10c6703a0). One of the two will be used. Which one is undefined.

AppsFlyerFramework 是静态库

$ file Versions/A/AppsFlyerLib
Versions/A/AppsFlyerLib: Mach-O universal binary with 4 architectures: [i386:current ar archive] [arm_v7] [x86_64] [arm64]
Versions/A/AppsFlyerLib (for architecture i386):    current ar archive
Versions/A/AppsFlyerLib (for architecture armv7):   current ar archive
Versions/A/AppsFlyerLib (for architecture x86_64):  current ar archive
Versions/A/AppsFlyerLib (for architecture arm64):   current ar archive

我尝试解决这个问题:修改Podfile如下:

source 'https://cdn.cocoapods.org/'
use_frameworks!

platform :ios, '10.0'

target 'UnityFramework' do
  pod 'AppsFlyerFramework', '~> 6.2.4'
end

target 'Unity-iPhone' do
end

static_frameworks = ['AppsFlyerFramework']
# make all the static frameworks into static frameworks by overriding the static_framework? function to return true
pre_install do |installer|
  installer.pod_targets.each do |pod|
    puts pod.name
    if static_frameworks.include?(pod.name)
      puts "Overriding the static_framework? method for #{pod.name}"
      def pod.static_framework?;
        true
      end
    end
  end
end

但这并没有解决问题

UnityFramework 是动态库。Unity-iPhone 依赖于UnityFramework。 UnityFramework依赖第三方框架

UnityFramework已经链接了第三方静态库。如何防止Unity-iPhone链接第三方静态库。

我的英文不好,如果有描述不清楚,我会补充

【问题讨论】:

    标签: ios xcode unity3d cocoapods


    【解决方案1】:

    我也遇到了同样的问题。

    1. UnityFramework 是一个动态框架,如果在源代码中声明和使用,它必须链接依赖的 3Party 库。
    2. 您必须确保 Unity-iPhone 未链接与 UnityFramework 相同的框架。

    如果有其他解决方案,请通知我。

    【讨论】:

    • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    相关资源
    最近更新 更多