在 SwiftUI 或任何 Swift 应用中,Bundle.main 提供了访问应用基本信息的方式,这些信息来自于 Info.plist 文件。可以显示的内容包括应用名称、版本号、构建号、包标识符等。
常用字段一览(通过 Bundle.main 获取)
1、应用名称(显示名):Info.plist键CFBundleDisplayName 或 CFBundleName,App 图标下方名称,示例:MyApp。
2、版本号(给用户看):CFBundleShortVersionString,显示给用户的版本号,示例:1.2.3。
3、构建号(开发内部使用):CFBundleVersion,显示每次构建自动增长,示例:42。
4、包名(标识符):CFBundleIdentifier,唯一的 bundle id,示例:com.example.MyApp。
5、执行文件名:CFBundleExecutable,主执行文件名,示例:MyApp。
6、App 所在目录路径:.bundlePath,应用包路径,示例:/Applications/MyApp.app。
使用示例
struct AppInfoView: View {
var appName: String {
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
?? Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String
?? "App"
}
var version: String {
Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String
?? "1.0"
}
var build: String {
Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as? String
?? "1"
}
var body: some View {
VStack(alignment: .leading, spacing: 8) {
Text("应用名称:\(appName)")
Text("版本号:v\(version)")
Text("构建号:\(build)")
}
.padding()
}
}

推荐扩展用法
extension Bundle {
var appName: String {
object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
?? object(forInfoDictionaryKey: "CFBundleName") as? String
?? "App"
}
var version: String {
object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "1.0"
}
var build: String {
object(forInfoDictionaryKey: "CFBundleVersion") as? String ?? "1"
}
var bundleIdentifier: String {
bundleIdentifier ?? "Unknown"
}
}
在SwiftUI中使用Bundle.main显示字段信息:
Text("当前版本:v\(Bundle.main.version) (Build \(Bundle.main.build))")

其他字段
也可以访问其他字段,只是很少用到。比如:
1、LSApplicationCategoryType:App 的分类(macOS App Store 用)。
2、NSHumanReadableCopyright:应用版权信息。
3、NSCameraUsageDescription:隐私权限描述。
4、UIRequiredDeviceCapabilities:设备能力需求。
这些字段可以通过 Bundle.main.object(forInfoDictionaryKey:) 动态读取。
配置版本号和构建号
在Xcode中,点击左上角 – TARGETS – General – Identity,配置版本号和构建号。
