ios - bundle (标识符 : "org.cocoapods.MyPrivatePod") return nil

标签 ios swift cocoapods

我想访问我的私有(private) Pod 包,但总是返回 nil。

Bundle(identifier: "org.cocoapods.MyPrivatePod")//only this return nil
Bundle(identifier: "org.cocoapods.Alamofire")
Bundle(identifier: "org.cocoapods.SQLCipher")

我的 podspec

Pod::Spec.new do |s|
  s.name                  = 'MyPrivatePod'
  s.version               = '1.4.0'
  s.summary               = 'MyPrivatePod Component'
  s.description           = "MyPrivatePod."
  s.homepage              = 'https://github.com/myprivatecompany/myprivtepodrepo.git'
  s.license               = ""
  s.authors               = { 'me me' => 'me@me.com' }
  s.swift_version         = '4.2'
  s.source                = { :git => "git@github.com:myprivatecompany/myprivtepodrepo.git", :tag => "#{s.version}" }
  s.ios.deployment_target = '9.0'
  s.source_files          = 'MyPrivatePod/**/*.{h,m,swift}'
  s.resource_bundles      = {
    "MyPrivatePod" => ['MyPrivatePod/**/*.{xcassets,ttf,strings,json,xib,gif,storyboard}']
    }
  #s.resources        = 'MyPrivatePod/**/*.{xcassets,ttf,strings,json,xib,storyboard}'
  s.static_framework      = true
  s.dependency 'AnotherPrivatePod', '2.3.0'
end

最佳答案

问题是您在 podspec 中将 MyPrivatePod 定义为静态框架:

s.static_framework      = true

当您使用静态框架时,编译器将在您的应用程序二进制文件中包含该框架所需的代码,并且不会将该框架捆绑在应用程序包中。这意味着在运行时,应用程序中的代码与框架中的代码之间不会有任何差异。

既然是这种情况,请使用类似的东西:

let podBundle = Bundle(for: SomeClassFromPod.self)

实际上会返回应用程序包,因为 SomeClassFromPod 在编译时作为应用程序二进制文件的一部分包含在内。

如果您只在框架中包含代码,我想不出任何需要引用该包的用例。如果您还包含代码以外的一些资源,则有两种选择来访问它们:

  1. 将您的框架构建并包含为动态框架。这样做的缺点是,您将在应用启动时遇到与包含动态框架相关的性能问题。
  2. 继续使用该框架作为静态框架并手动将该框架中的资源复制到您的应用程序包中。您可以通过在主应用的构建阶段添加新复制文件阶段来实现此目的(仅在手动包含框架时才需要执行此操作)。执行此操作后,您可以访问这些资源,就像它们一开始就属于您的主包一样。这样做的问题是不同包中具有相同名称的资源会发生冲突。

关于ios - bundle (标识符 : "org.cocoapods.MyPrivatePod") return nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59185261/

相关文章:

ios - NSPredicate 按仅存在于其中一个子类中的属性过滤结果

ios - 为每一行 objective-c 创建一个新部分

ios - 你如何在 Swift 中为 iOS 制作垂直文本 UILabel 和 UITextView?

ios - 离开屏幕时表格单元格的行为极其奇怪

swift - 禁用打印 ("")在 Swift 4、Xcode 10 中

ios - 找不到 pod 的兼容版本

ios - 为什么 Travis 找不到我的头文件? (当相同的指令在我的本地 Xcode 上运行良好时)

ios - 我可以有一个包含 UIWebView 内容的 UIButton 吗?

ios - 在 podfile 中添加 'use_frameworks!' 会破坏应用程序

ios - iOS9 中的证书错误 9813,即使禁用了 App Transport Security