You've already forked KernelSU-Next
mirror of
https://github.com/KernelSU-Next/KernelSU-Next.git
synced 2025-08-27 23:46:34 +00:00
57 lines
1.2 KiB
Kotlin
57 lines
1.2 KiB
Kotlin
package com.rifsxd.ksunext
|
|
|
|
import android.system.Os
|
|
|
|
/**
|
|
* @author weishu
|
|
* @date 2022/12/10.
|
|
*/
|
|
|
|
data class KernelVersion(val major: Int, val patchLevel: Int, val subLevel: Int) {
|
|
override fun toString(): String {
|
|
return "$major.$patchLevel.$subLevel"
|
|
}
|
|
|
|
fun isGKI(): Boolean {
|
|
|
|
// kernel 6.x
|
|
if (major > 5) {
|
|
return true
|
|
}
|
|
|
|
// kernel 5.10.x
|
|
if (major == 5) {
|
|
return patchLevel >= 10
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
fun isULegacy(): Boolean {
|
|
return major == 3
|
|
}
|
|
|
|
fun isLegacy(): Boolean {
|
|
return major == 4 && patchLevel in 1..18
|
|
}
|
|
|
|
fun isGKI1(): Boolean {
|
|
return (major == 4 && patchLevel >= 19) || (major == 5 && patchLevel < 10)
|
|
}
|
|
|
|
}
|
|
|
|
fun parseKernelVersion(version: String): KernelVersion {
|
|
val find = "(\\d+)\\.(\\d+)\\.(\\d+)".toRegex().find(version)
|
|
return if (find != null) {
|
|
KernelVersion(find.groupValues[1].toInt(), find.groupValues[2].toInt(), find.groupValues[3].toInt())
|
|
} else {
|
|
KernelVersion(-1, -1, -1)
|
|
}
|
|
}
|
|
|
|
fun getKernelVersion(): KernelVersion {
|
|
Os.uname().release.let {
|
|
return parseKernelVersion(it)
|
|
}
|
|
} |