# 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<TextView>(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调试状态 ✅
- 内核信息 ✅
- 设备标识符 ✅
- 详细中文注释 ✅

