gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:19:55 27 4
gpt4 key购买 nike

我想访问我的私有(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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com