为什么在 pod repo 推送期间出现 ld:framework not found <frameworkName> 构建错误?

问题描述

我有一个为 iOS 构建的框架,一个带有通用二进制文件的动态框架,用于 x86_64 (iosSimulator)、arm64 和 arm64e。

当我将它拖到应用程序并使用它时,该框架工作正常。

当我在我的机器上使用一个存储框架的存储库和我机器上的另一个规范存储库时,Pod 存储库推送工作正常。我用 git init --bare

创建了 repos

当我使用 github 并将规范指向 github 存储库而不是我的本地存储库时,它会失败并显示 ld:framework not found <frameworkName> 。当我跳过验证和推送并最终在使用 pod 文件的应用程序中使用它时,我得到相同的错误ld:framework not found <frameworkName>

唯一的区别是我已经从我的本地 git 仓库转移到 Github 上的一个框架。

编辑:

在下方粘贴 podspec

Pod::Spec.new do |s|
    s.name         = "frameworkName"
    s.version      = "0.51.0"
    s.summary      = "A brief description of frameworkName project."
    s.description  = <<-DESC
    An extended description of frameworkName project.
    DESC
    s.homepage     = "http://your.homepage/here"
    s.license = { :type => 'copyright',:text => <<-LICENSE
                   copyright 2018
                   Permission is granted to...
                  LICENSE
                }
    s.author             = { "myname" => "" }
    s.source       = { :git => "<git hub repo>",:tag => "#{s.version}",:branch => "iOS_Framework" }

    s.ios.vendored_frameworks = "frameworkName.framework"
    s.vendored_frameworks = "frameworkName.framework"
    s.ios.deployment_target  = '12.0'
    s.pod_target_xcconfig   = { 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
    s.user_target_xcconfig  = { 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
end

解决方法

它最终成为一个区分大小写的问题。存储库中的框架被命名为 frameworkName.Framework 而不是 frameworkName.framework。改了之后就可以用了。

不知道为什么本地 git 存储库没有问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...