# BuildInfo 新增功能使用示例 ## 概述 BuildInfo类已新增了大量系统信息获取功能,包括Treble支持、无缝更新、Root检测、Google Play服务、系统工具、SSL版本、语言时区、USB调试、内核信息和设备标识符等。 ## 新增功能列表 ### 1. Treble 和系统更新 - ✅ **Treble支持检测** - `isTrebleEnabled` - ✅ **Treble版本** - `trebleVersion` - ✅ **无缝更新(A/B)支持** - `isSeamlessUpdateSupported` - ✅ **当前活动插槽** - `currentSlot` - ✅ **虚拟A/B支持** - `isVirtualABEnabled` ### 2. Root 权限和安全 - ✅ **Root状态检测** - `isRooted` - ✅ **SELinux状态** - `seLinuxStatus` - ✅ **dm-verity状态** - `isDmVerityEnabled` ### 3. Google Play 服务 - ✅ **Play服务版本名称** - `googlePlayServicesVersion` - ✅ **Play服务版本代码** - `googlePlayServicesVersionCode` - ✅ **Play商店版本** - `googlePlayStoreVersion` - ✅ **Google Services Framework版本** - `googleServicesFrameworkVersion` ### 4. 系统工具版本 - ✅ **Toybox版本** - `toyboxVersion` - ✅ **Toolbox版本** - `toolboxVersion` - ✅ **BusyBox版本** - `busyboxVersion` ### 5. SSL/TLS 信息 - ✅ **OpenSSL版本** - `openSslVersion` - ✅ **BoringSSL版本** - `boringSslVersion` - ✅ **TLS支持版本** - `tlsVersion` ### 6. 语言和时区 - ✅ **系统语言** - `systemLanguage` - ✅ **语言代码** - `languageCode` - ✅ **国家/地区** - `country` - ✅ **国家/地区代码** - `countryCode` - ✅ **系统时区** - `timeZone` - ✅ **时区显示名称** - `timeZoneDisplayName` - ✅ **UTC偏移** - `timeZoneOffset` ### 7. 开发者选项和调试 - ✅ **USB调试状态** - `isUsbDebuggingEnabled` - ✅ **开发者选项状态** - `isDevelopmentSettingsEnabled` - ✅ **未知来源安装** - `isUnknownSourcesEnabled` ### 8. 内核信息 - ✅ **内核版本号** - `kernelVersion` - ✅ **内核架构** - `kernelArchitecture` - ✅ **内核名称** - `kernelName` - ✅ **内核命令行参数** - `kernelCommandLine` - ✅ **CPU信息(/proc/cpuinfo)** - `procCpuInfo` - ✅ **内存信息(/proc/meminfo)** - `procMemInfo` ### 9. 设备标识符 - ✅ **Android ID** - `androidId` - ✅ **序列号** - `serialNumber` - ✅ **设备唯一ID** - `deviceUniqueId` ## 使用示例 ### 初始化 ```kotlin import com.xyzshell.andinfo.AndInfo // 在Application或Activity中初始化 AndInfo.init(applicationContext) // 获取BuildInfo实例 val buildInfo = AndInfo.instance.build ``` ### 1. Treble 和系统更新信息 ```kotlin // 检查Treble支持 val isTrebleSupported = buildInfo.isTrebleEnabled println("Treble支持: ${if (isTrebleSupported) "是" else "否"}") // Treble版本 buildInfo.trebleVersion?.let { version -> println("Treble版本: $version") } // 检查无缝更新(A/B)支持 val isABUpdateSupported = buildInfo.isSeamlessUpdateSupported println("无缝更新(A/B): ${if (isABUpdateSupported) "支持" else "不支持"}") // 当前活动插槽 buildInfo.currentSlot?.let { slot -> println("当前活动插槽: $slot") } // 虚拟A/B支持 val isVirtualAB = buildInfo.isVirtualABEnabled println("虚拟A/B: ${if (isVirtualAB) "支持" else "不支持"}") ``` ### 2. Root 权限和安全检测 ```kotlin // Root状态检测 val isRooted = buildInfo.isRooted println("Root状态: ${if (isRooted) "已Root" else "未Root"}") // SELinux状态 val seLinuxStatus = buildInfo.seLinuxStatus println("SELinux状态: $seLinuxStatus") // dm-verity状态 val isDmVerity = buildInfo.isDmVerityEnabled println("dm-verity: ${if (isDmVerity) "启用" else "禁用"}") ``` ### 3. Google Play 服务信息 ```kotlin // Google Play 服务版本 buildInfo.googlePlayServicesVersion?.let { version -> println("Play服务版本: $version") } // Google Play 服务版本代码 buildInfo.googlePlayServicesVersionCode?.let { versionCode -> println("Play服务版本代码: $versionCode") } // Google Play 商店版本 buildInfo.googlePlayStoreVersion?.let { version -> println("Play商店版本: $version") } // Google Services Framework 版本 buildInfo.googleServicesFrameworkVersion?.let { version -> println("GSF版本: $version") } ``` ### 4. 系统工具版本 ```kotlin // Toybox版本 buildInfo.toyboxVersion?.let { version -> println("Toybox: $version") } // Toolbox版本 buildInfo.toolboxVersion?.let { version -> println("Toolbox: $version") } // BusyBox版本(如果安装) buildInfo.busyboxVersion?.let { version -> println("BusyBox: $version") } ``` ### 5. SSL/TLS 信息 ```kotlin // OpenSSL版本 buildInfo.openSslVersion?.let { version -> println("OpenSSL: $version") } // BoringSSL版本 buildInfo.boringSslVersion?.let { version -> println("BoringSSL: $version") } // TLS支持版本 buildInfo.tlsVersion?.let { version -> println("TLS支持: $version") // 输出示例: "TLSv1, TLSv1.1, TLSv1.2, TLSv1.3" } ``` ### 6. 语言和时区信息 ```kotlin // 系统语言 val language = buildInfo.systemLanguage val languageCode = buildInfo.languageCode println("系统语言: $language ($languageCode)") // 国家/地区 val country = buildInfo.country val countryCode = buildInfo.countryCode println("国家/地区: $country ($countryCode)") // 时区信息 val timeZone = buildInfo.timeZone val timeZoneDisplay = buildInfo.timeZoneDisplayName val utcOffset = buildInfo.timeZoneOffset / 3600000 // 转换为小时 println("时区: $timeZone") println("时区显示: $timeZoneDisplay") println("UTC偏移: ${if (utcOffset >= 0) "+" else ""}${utcOffset}小时") ``` ### 7. 开发者选项和调试 ```kotlin // USB调试状态 val isUsbDebugEnabled = buildInfo.isUsbDebuggingEnabled println("USB调试: ${if (isUsbDebugEnabled) "启用" else "禁用"}") // 开发者选项状态 val isDeveloperEnabled = buildInfo.isDevelopmentSettingsEnabled println("开发者选项: ${if (isDeveloperEnabled) "启用" else "禁用"}") // 未知来源安装 val isUnknownSourcesEnabled = buildInfo.isUnknownSourcesEnabled println("未知来源: ${if (isUnknownSourcesEnabled) "允许" else "禁止"}") ``` ### 8. 内核信息 ```kotlin // 内核基本信息 buildInfo.kernelName?.let { println("内核名称: $it") } buildInfo.kernelVersion?.let { println("内核版本: $it") } buildInfo.kernelArchitecture?.let { println("内核架构: $it") } buildInfo.kernelCompleteVersion?.let { println("完整版本: $it") } // 内核命令行参数 buildInfo.kernelCommandLine?.let { cmdline -> println("内核命令行:") println(cmdline) } // CPU信息(/proc/cpuinfo) buildInfo.procCpuInfo?.let { cpuInfo -> println("CPU信息:") println(cpuInfo) } // 内存信息(/proc/meminfo) buildInfo.procMemInfo?.let { memInfo -> println("内存信息:") println(memInfo) } ``` ### 9. 设备标识符 ```kotlin // Android ID val androidId = buildInfo.androidId println("Android ID: $androidId") // 序列号 val serialNumber = buildInfo.serialNumber println("序列号: $serialNumber") // 设备唯一ID(基于多个参数生成) val deviceUniqueId = buildInfo.deviceUniqueId println("设备唯一ID: $deviceUniqueId") ``` ### 10. 完整信息输出 ```kotlin // 使用text()方法获取格式化的完整信息 val fullInfo = buildInfo.text() println(fullInfo) ``` ## 示例输出 ``` === Treble 和系统更新 === Treble支持: 是 Treble版本: 1 无缝更新(A/B): 是 当前活动插槽: a 虚拟A/B: 否 === Root 和安全 === Root状态: 未Root SELinux状态: Enforcing dm-verity: 启用 === Google 服务 === Play服务版本: 23.45.12 (190400-582679489) Play服务版本代码: 234512023 Play商店版本: 38.6.21-29 [0] [PR] 593153572 GSF版本: 13-9684448 === 系统工具 === Toybox: 0.8.9-android13 Toolbox: 未找到 BusyBox: 未安装 === SSL/TLS === OpenSSL: OpenSSL 1.1.1t 7 Feb 2023 BoringSSL: BoringCrypto TLS支持: TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 === 语言和时区 === 系统语言: 中文(简体) (zh) 国家/地区: 中国 (CN) 时区: Asia/Shanghai 时区显示: 中国标准时间 UTC偏移: +8小时 === 开发者选项 === USB调试: 启用 开发者选项: 启用 未知来源: 允许 === 内核信息 === 内核名称: Linux 内核版本: 5.10.157 内核架构: aarch64 完整版本: 5.10.157-android13-4-00001-gf0123456789a-ab9876543 === 设备标识符 === Android ID: 1234567890abcdef 序列号: ABC123456789 设备唯一ID: 123456789 ``` ## 注意事项 1. **权限要求**: - 序列号 (`serialNumber`) 在 Android 8.0+ 需要 `READ_PHONE_STATE` 权限 - 大部分其他功能不需要特殊权限 2. **设备差异**: - 不同设备支持的功能可能不同 - 某些属性可能返回 `null` 3. **安全和隐私**: - Android ID 和序列号属于设备标识符,使用时需要注意隐私保护 - Root检测方法可能无法检测到所有Root工具 4. **系统版本**: - 某些功能仅在特定 Android 版本上可用 - Treble 功能需要 Android 8.0+ - 虚拟A/B 需要 Android 11+ 5. **Root检测**: - `isRooted` 检测常见的Root工具和文件 - 高级隐藏Root的设备可能检测不到 6. **Google服务**: - 如果设备未安装Google服务,相关属性将返回 `null` - 国内Android设备通常没有Google服务 ## 典型应用场景 ### 系统信息页面 ```kotlin class SystemInfoActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val buildInfo = AndInfo.instance.build // 显示完整系统信息 val textView = findViewById(R.id.systemInfo) textView.text = buildInfo.text() } } ``` ### 安全检查 ```kotlin fun checkDeviceSecurity(): SecurityReport { val buildInfo = AndInfo.instance.build return SecurityReport( isRooted = buildInfo.isRooted, seLinuxEnabled = buildInfo.seLinuxStatus == "Enforcing", dmVerityEnabled = buildInfo.isDmVerityEnabled, usbDebuggingEnabled = buildInfo.isUsbDebuggingEnabled ) } ``` ### 兼容性检查 ```kotlin fun checkSystemCompatibility(): Boolean { val buildInfo = AndInfo.instance.build // 检查是否支持必要的功能 val hasTreble = buildInfo.isTrebleEnabled val hasABUpdate = buildInfo.isSeamlessUpdateSupported val hasGoogleServices = buildInfo.googlePlayServicesVersion != null return hasTreble && hasABUpdate && hasGoogleServices } ``` ## 完成度 ✅ **100%** - 所有请求的功能都已实现并添加详细注释 - Treble支持检测 ✅ - 无缝更新检测 ✅ - 活动插槽信息 ✅ - Root权限检测 ✅ - Google Play服务版本 ✅ - Toybox信息 ✅ - SSL版本信息 ✅ - 语言和时区 ✅ - USB调试状态 ✅ - 内核信息 ✅ - 设备标识符 ✅ - 详细中文注释 ✅