Rya*_*los 16 cocoa-touch frameworks ios ios-universal-framework
这可能不仅限于iOS Universal Frameworks,而是所有xxx.framework文件.但是,我似乎无法找到有关如何在客户端应用程序中获取当前版本和构建框架的文档.在应用程序中,您可以使用以下内容:
NSString *name = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Run Code Online (Sandbox Code Playgroud)
这将为您提供存储在应用程序的Info.plist中的当前信息.但是我们如何找到框架的信息.就我而言,特别是嵌入式框架.
Rya*_*los 19
我发现Xcode 6支持Apple的新Cocoa Touch框架,可以很容易地解决这个问题.在为您创建的默认头文件中Framework.h,您将看到为您声明的两个常量.这些后来可能在运行时由内部框架逻辑定义.但是我已经证实他们已经从这个框架的plist中撤出了.
//! Project version number for LocalSearch.
FOUNDATION_EXPORT double FrameworkVersionNumber;
//! Project version string for LocalSearch.
FOUNDATION_EXPORT const unsigned char FrameworkVersionString[];
Run Code Online (Sandbox Code Playgroud)
pic*_*ano 11
这是一个与Universal Frameworks一起使用的解决方案.只需用SomeFrameworkClass所需框架中的类替换即可.
if let sdkVersion = Bundle(for: SomeFrameworkClass.self).infoDictionary?["CFBundleShortVersionString"] {
// sdkVersion is available here
}
Run Code Online (Sandbox Code Playgroud)
假设Foo是给定框架中的一个类,您可以使用以下内容:
NSDictionary *infoDictionary = [[NSBundle bundleForClass: [Foo class]] infoDictionary];
NSString *name = [infoDictionary valueForKey:(__bridge NSString*)kCFBundleNameKey];
NSString *version = [infoDictionary valueForKey:(__bridge NSString*)kCFBundleVersionKey];
NSLog(@"%@ version %@", name, version);
Run Code Online (Sandbox Code Playgroud)
在斯威夫特:
// `Foo` is a type defined in the framework
if let infos = Bundle(for: Foo.self).infoDictionary,
let name = infos[kCFBundleNameKey as String],
let version = infos[kCFBundleVersionKey as String] {
print("Using \(name) version \(version)")
if let shortVersion = infos["CFBundleShortVersionString"] as? String {
print("Short version : " + shortVersion)
}
}
Run Code Online (Sandbox Code Playgroud)
注意:由于某种原因,“CFBundleShortVersionString”没有在常量中定义,参见 iOS/MacOS 框架中是否有为 CFBundleShortVersionString 定义的常量