从podspec或info.plist中检索pod版本到代码

时间:2018-10-15 04:05:57

标签: ios swift cocoapods swift4 plist

我已经创建了一个自己的pod,该pod具有包含s.version =“ 0.4.7”的podspec文件,我希望以编程方式将该代码添加到代码中,因此每当应用程序运行时,它将pod版本发送到服务器。

另一个获得pod版本的地方是从plist文件下面的文件,它是“捆绑版本字符串” 0.4.7

enter image description here

我尝试使用let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String,但它是从Apps Info.plist文件获取版本的。

2 个答案:

答案 0 :(得分:3)

您可以通过特定的lib软件包来获得pod的版本。

首先,单击到Pods Project文件,它将显示您在Podfile中特定安装的所有库。 enter image description here

例如,我将获得像这样的RxSwift版本

  • 步骤1:通过单击RxSwift目标>常规>复制Bundle Identifier(org.cocoapods.RxSwift),获取RxSwift的捆绑包标识符

  • 第2步:通过此代码获取版本

(请注意org.cocoapods.RxSwift是您从第1步获得的信息)

if let version = Bundle(identifier: "org.cocoapods.RxSwift")?.infoDictionary?["CFBundleShortVersionString"] as? String {
    print(version)
}

您可以获得这样的结果

"4.3.1"

答案 1 :(得分:0)

您可以更明确地检索包:Bundle(for: SomePodClass.self), 其中SomePodClass是您的广告连播中的任何类。

为方便起见,您也可以将其转换为Pod中的扩展名:

public extension Bundle {
    class var somePodName: Bundle {
        return Bundle(for: SomePodClass.self)
    }
}

为您的Pod编写一些配置文件:

public enum SomePodConfiguration {
    static var version: String {
        guard let version = Bundle.somePodName
            .infoDictionary?["CFBundleShortVersionString"] as? String else { return "Unknown" }
        return version
    }
}

并最终获得Pod版本:

SomePodConfiguration.somePodName.version