Compare commits

..

60 Commits

Author SHA1 Message Date
Rifat Azad
1d258196b1 CI: try uploading artifacts properly for release 2025-04-03 22:13:56 +06:00
rifsxd
63ebf730f9 manager: improved floating button for module & LKM flashing screen 2025-04-03 19:22:08 +06:00
dependabot[bot]
810889a964 build(deps): bump the crates group across 1 directory with 41 updates (#277)
Bumps the crates group with 31 updates in the /userspace/ksud_magic directory:

| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.96` | `1.0.97` |
| [clap](https://github.com/clap-rs/clap) | `4.5.30` | `4.5.35` |
| [zip](https://github.com/zip-rs/zip2) | `2.2.2` | `2.5.0` |
| [log](https://github.com/rust-lang/log) | `0.4.26` | `0.4.27` |
| [env_logger](https://github.com/rust-cli/env_logger) | `0.11.6` | `0.11.8` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.139` | `1.0.140` |
| [libc](https://github.com/rust-lang/libc) | `0.2.170` | `0.2.171` |
| [rust-embed](https://github.com/pyros2097/rust-embed) | `8.5.0` | `8.6.0` |
| [sha256](https://github.com/baoyachi/sha256-rs) | `1.5.0` | `1.6.0` |
| [tempfile](https://github.com/Stebalien/tempfile) | `3.17.1` | `3.19.1` |
| [chrono](https://github.com/chronotope/chrono) | `0.4.39` | `0.4.40` |
| [android_logger](https://github.com/rust-mobile/android_logger-rs) | `0.14.1` | `0.15.0` |
| [async-trait](https://github.com/dtolnay/async-trait) | `0.1.86` | `0.1.88` |
| [bytes](https://github.com/tokio-rs/bytes) | `1.10.0` | `1.10.1` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.2.15` | `1.2.17` |
| [either](https://github.com/rayon-rs/either) | `1.14.0` | `1.15.0` |
| [flate2](https://github.com/rust-lang/flate2-rs) | `1.1.0` | `1.1.1` |
| [getrandom](https://github.com/rust-random/getrandom) | `0.3.1` | `0.3.2` |
| [iana-time-zone](https://github.com/strawlab/iana-time-zone) | `0.1.61` | `0.1.63` |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.7.1` | `2.8.0` |
| [itoa](https://github.com/dtolnay/itoa) | `1.0.14` | `1.0.15` |
| [once_cell](https://github.com/matklad/once_cell) | `1.20.3` | `1.21.3` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.93` | `1.0.94` |
| [quote](https://github.com/dtolnay/quote) | `1.0.38` | `1.0.40` |
| [rustversion](https://github.com/dtolnay/rustversion) | `1.0.19` | `1.0.20` |
| [ryu](https://github.com/dtolnay/ryu) | `1.0.19` | `1.0.20` |
| [serde](https://github.com/serde-rs/serde) | `1.0.218` | `1.0.219` |
| [syn](https://github.com/dtolnay/syn) | `2.0.98` | `2.0.100` |
| [time](https://github.com/time-rs/time) | `0.3.37` | `0.3.41` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.43.0` | `1.44.1` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident) | `1.0.17` | `1.0.18` |



Updates `anyhow` from 1.0.96 to 1.0.97
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.96...1.0.97)

Updates `clap` from 4.5.30 to 4.5.35
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.30...clap_complete-v4.5.35)

Updates `zip` from 2.2.2 to 2.5.0
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zip-rs/zip2/compare/v2.2.2...v2.5.0)

Updates `log` from 0.4.26 to 0.4.27
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.26...0.4.27)

Updates `env_logger` from 0.11.6 to 0.11.8
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.11.6...v0.11.8)

Updates `serde_json` from 1.0.139 to 1.0.140
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.139...v1.0.140)

Updates `libc` from 0.2.170 to 0.2.171
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.171/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.170...0.2.171)

Updates `rust-embed` from 8.5.0 to 8.6.0
- [Changelog](https://github.com/pyrossh/rust-embed/blob/master/changelog.md)
- [Commits](https://github.com/pyros2097/rust-embed/commits)

Updates `sha256` from 1.5.0 to 1.6.0
- [Release notes](https://github.com/baoyachi/sha256-rs/releases)
- [Commits](https://github.com/baoyachi/sha256-rs/compare/1.5.0...1.6.0)

Updates `tempfile` from 3.17.1 to 3.19.1
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.17.1...v3.19.1)

Updates `chrono` from 0.4.39 to 0.4.40
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.39...v0.4.40)

Updates `android_logger` from 0.14.1 to 0.15.0
- [Release notes](https://github.com/rust-mobile/android_logger-rs/releases)
- [Changelog](https://github.com/rust-mobile/android_logger-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-mobile/android_logger-rs/compare/0.14.1...v0.15.0)

Updates `android_log-sys` from 0.3.1 to 0.3.2
- [Commits](https://github.com/rust-mobile/android_log-sys-rs/commits)

Updates `async-trait` from 0.1.86 to 0.1.88
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.86...0.1.88)

Updates `bytes` from 1.10.0 to 1.10.1
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.10.0...v1.10.1)

Updates `cc` from 1.2.15 to 1.2.17
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.15...cc-v1.2.17)

Updates `clap_builder` from 4.5.30 to 4.5.35
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.30...v4.5.35)

Updates `clap_derive` from 4.5.28 to 4.5.32
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.28...v4.5.32)

Updates `either` from 1.14.0 to 1.15.0
- [Commits](https://github.com/rayon-rs/either/compare/1.14.0...1.15.0)

Updates `flate2` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.0...1.1.1)

Updates `getrandom` from 0.3.1 to 0.3.2
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.3.1...v0.3.2)

Updates `iana-time-zone` from 0.1.61 to 0.1.63
- [Changelog](https://github.com/strawlab/iana-time-zone/blob/main/CHANGELOG.md)
- [Commits](https://github.com/strawlab/iana-time-zone/compare/v0.1.61...v0.1.63)

Updates `indexmap` from 2.7.1 to 2.8.0
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.7.1...2.8.0)

Updates `itoa` from 1.0.14 to 1.0.15
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.14...1.0.15)

Updates `once_cell` from 1.20.3 to 1.21.3
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.3...v1.21.3)

Updates `proc-macro2` from 1.0.93 to 1.0.94
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.93...1.0.94)

Updates `quote` from 1.0.38 to 1.0.40
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.38...1.0.40)

Updates `rust-embed-impl` from 8.5.0 to 8.6.0
- [Changelog](https://github.com/pyrossh/rust-embed/blob/master/changelog.md)
- [Commits](https://github.com/pyros2097/rust-embed/commits)

Updates `rust-embed-utils` from 8.5.0 to 8.6.0
- [Changelog](https://github.com/pyrossh/rust-embed/blob/master/changelog.md)
- [Commits](https://github.com/pyros2097/rust-embed/commits)

Updates `rustversion` from 1.0.19 to 1.0.20
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.19...1.0.20)

Updates `ryu` from 1.0.19 to 1.0.20
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.19...1.0.20)

Updates `serde` from 1.0.218 to 1.0.219
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.218...v1.0.219)

Updates `serde_derive` from 1.0.218 to 1.0.219
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.218...v1.0.219)

Updates `syn` from 2.0.98 to 2.0.100
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.98...2.0.100)

Updates `time` from 0.3.37 to 0.3.41
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.37...v0.3.41)

Updates `time-core` from 0.1.2 to 0.1.4
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/commits)

Updates `tokio` from 1.43.0 to 1.44.1
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.43.0...tokio-1.44.1)

Updates `unicode-ident` from 1.0.17 to 1.0.18
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.17...1.0.18)

Updates `wasi` from 0.13.3+wasi-0.2.2 to 0.14.2+wasi-0.2.4
- [Commits](https://github.com/bytecodealliance/wasi-rs/compare/0.13.3...0.14.2)

Updates `windows-core` from 0.52.0 to 0.61.0
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/compare/0.52.0...0.61.0)

Updates `wit-bindgen-rt` from 0.33.0 to 0.39.0
- [Release notes](https://github.com/bytecodealliance/wit-bindgen/releases)
- [Commits](https://github.com/bytecodealliance/wit-bindgen/compare/v0.33.0...v0.39.0)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: zip
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: log
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: rust-embed
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: sha256
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: android_logger
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: android_log-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: async-trait
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: bytes
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: clap_builder
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: clap_derive
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: flate2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: iana-time-zone
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: indexmap
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: once_cell
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: rust-embed-impl
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: rust-embed-utils
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: serde_derive
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: time
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: time-core
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: tokio
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: wasi
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: windows-core
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: wit-bindgen-rt
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-03 17:29:00 +06:00
dependabot[bot]
0a97eee7ad build(deps): bump the crates group across 1 directory with 41 updates (#276)
Bumps the crates group with 31 updates in the /userspace/ksud_overlayfs directory:

| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.96` | `1.0.97` |
| [clap](https://github.com/clap-rs/clap) | `4.5.31` | `4.5.35` |
| [zip](https://github.com/zip-rs/zip2) | `2.2.2` | `2.5.0` |
| [log](https://github.com/rust-lang/log) | `0.4.26` | `0.4.27` |
| [env_logger](https://github.com/rust-cli/env_logger) | `0.11.6` | `0.11.8` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.139` | `1.0.140` |
| [libc](https://github.com/rust-lang/libc) | `0.2.170` | `0.2.171` |
| [rust-embed](https://github.com/pyros2097/rust-embed) | `8.5.0` | `8.6.0` |
| [sha256](https://github.com/baoyachi/sha256-rs) | `1.5.0` | `1.6.0` |
| [tempfile](https://github.com/Stebalien/tempfile) | `3.17.1` | `3.19.1` |
| [chrono](https://github.com/chronotope/chrono) | `0.4.39` | `0.4.40` |
| [android_logger](https://github.com/rust-mobile/android_logger-rs) | `0.14.1` | `0.15.0` |
| [async-trait](https://github.com/dtolnay/async-trait) | `0.1.86` | `0.1.88` |
| [bytes](https://github.com/tokio-rs/bytes) | `1.10.0` | `1.10.1` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.2.15` | `1.2.17` |
| [either](https://github.com/rayon-rs/either) | `1.14.0` | `1.15.0` |
| [flate2](https://github.com/rust-lang/flate2-rs) | `1.1.0` | `1.1.1` |
| [getrandom](https://github.com/rust-random/getrandom) | `0.3.1` | `0.3.2` |
| [iana-time-zone](https://github.com/strawlab/iana-time-zone) | `0.1.61` | `0.1.63` |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.7.1` | `2.8.0` |
| [itoa](https://github.com/dtolnay/itoa) | `1.0.14` | `1.0.15` |
| [once_cell](https://github.com/matklad/once_cell) | `1.20.3` | `1.21.3` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.93` | `1.0.94` |
| [quote](https://github.com/dtolnay/quote) | `1.0.38` | `1.0.40` |
| [rustversion](https://github.com/dtolnay/rustversion) | `1.0.19` | `1.0.20` |
| [ryu](https://github.com/dtolnay/ryu) | `1.0.19` | `1.0.20` |
| [serde](https://github.com/serde-rs/serde) | `1.0.218` | `1.0.219` |
| [syn](https://github.com/dtolnay/syn) | `2.0.98` | `2.0.100` |
| [time](https://github.com/time-rs/time) | `0.3.37` | `0.3.41` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.43.0` | `1.44.1` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident) | `1.0.17` | `1.0.18` |



Updates `anyhow` from 1.0.96 to 1.0.97
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.96...1.0.97)

Updates `clap` from 4.5.31 to 4.5.35
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.31...clap_complete-v4.5.35)

Updates `zip` from 2.2.2 to 2.5.0
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zip-rs/zip2/compare/v2.2.2...v2.5.0)

Updates `log` from 0.4.26 to 0.4.27
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.26...0.4.27)

Updates `env_logger` from 0.11.6 to 0.11.8
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.11.6...v0.11.8)

Updates `serde_json` from 1.0.139 to 1.0.140
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.139...v1.0.140)

Updates `libc` from 0.2.170 to 0.2.171
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.171/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.170...0.2.171)

Updates `rust-embed` from 8.5.0 to 8.6.0
- [Changelog](https://github.com/pyrossh/rust-embed/blob/master/changelog.md)
- [Commits](https://github.com/pyros2097/rust-embed/commits)

Updates `sha256` from 1.5.0 to 1.6.0
- [Release notes](https://github.com/baoyachi/sha256-rs/releases)
- [Commits](https://github.com/baoyachi/sha256-rs/compare/1.5.0...1.6.0)

Updates `tempfile` from 3.17.1 to 3.19.1
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.17.1...v3.19.1)

Updates `chrono` from 0.4.39 to 0.4.40
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.39...v0.4.40)

Updates `android_logger` from 0.14.1 to 0.15.0
- [Release notes](https://github.com/rust-mobile/android_logger-rs/releases)
- [Changelog](https://github.com/rust-mobile/android_logger-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-mobile/android_logger-rs/compare/0.14.1...v0.15.0)

Updates `android_log-sys` from 0.3.1 to 0.3.2
- [Commits](https://github.com/rust-mobile/android_log-sys-rs/commits)

Updates `async-trait` from 0.1.86 to 0.1.88
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.86...0.1.88)

Updates `bytes` from 1.10.0 to 1.10.1
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.10.0...v1.10.1)

Updates `cc` from 1.2.15 to 1.2.17
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.15...cc-v1.2.17)

Updates `clap_builder` from 4.5.31 to 4.5.35
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.31...v4.5.35)

Updates `clap_derive` from 4.5.28 to 4.5.32
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.28...v4.5.32)

Updates `either` from 1.14.0 to 1.15.0
- [Commits](https://github.com/rayon-rs/either/compare/1.14.0...1.15.0)

Updates `flate2` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.0...1.1.1)

Updates `getrandom` from 0.3.1 to 0.3.2
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.3.1...v0.3.2)

Updates `iana-time-zone` from 0.1.61 to 0.1.63
- [Changelog](https://github.com/strawlab/iana-time-zone/blob/main/CHANGELOG.md)
- [Commits](https://github.com/strawlab/iana-time-zone/compare/v0.1.61...v0.1.63)

Updates `indexmap` from 2.7.1 to 2.8.0
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.7.1...2.8.0)

Updates `itoa` from 1.0.14 to 1.0.15
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.14...1.0.15)

Updates `once_cell` from 1.20.3 to 1.21.3
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.3...v1.21.3)

Updates `proc-macro2` from 1.0.93 to 1.0.94
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.93...1.0.94)

Updates `quote` from 1.0.38 to 1.0.40
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.38...1.0.40)

Updates `rust-embed-impl` from 8.5.0 to 8.6.0
- [Changelog](https://github.com/pyrossh/rust-embed/blob/master/changelog.md)
- [Commits](https://github.com/pyros2097/rust-embed/commits)

Updates `rust-embed-utils` from 8.5.0 to 8.6.0
- [Changelog](https://github.com/pyrossh/rust-embed/blob/master/changelog.md)
- [Commits](https://github.com/pyros2097/rust-embed/commits)

Updates `rustversion` from 1.0.19 to 1.0.20
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.19...1.0.20)

Updates `ryu` from 1.0.19 to 1.0.20
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.19...1.0.20)

Updates `serde` from 1.0.218 to 1.0.219
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.218...v1.0.219)

Updates `serde_derive` from 1.0.218 to 1.0.219
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.218...v1.0.219)

Updates `syn` from 2.0.98 to 2.0.100
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.98...2.0.100)

Updates `time` from 0.3.37 to 0.3.41
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.37...v0.3.41)

Updates `time-core` from 0.1.2 to 0.1.4
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/commits)

Updates `tokio` from 1.43.0 to 1.44.1
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.43.0...tokio-1.44.1)

Updates `unicode-ident` from 1.0.17 to 1.0.18
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.17...1.0.18)

Updates `wasi` from 0.13.3+wasi-0.2.2 to 0.14.2+wasi-0.2.4
- [Commits](https://github.com/bytecodealliance/wasi-rs/compare/0.13.3...0.14.2)

Updates `windows-core` from 0.52.0 to 0.61.0
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/compare/0.52.0...0.61.0)

Updates `wit-bindgen-rt` from 0.33.0 to 0.39.0
- [Release notes](https://github.com/bytecodealliance/wit-bindgen/releases)
- [Commits](https://github.com/bytecodealliance/wit-bindgen/compare/v0.33.0...v0.39.0)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: zip
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: log
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: rust-embed
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: sha256
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: android_logger
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: android_log-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: async-trait
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: bytes
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: clap_builder
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: clap_derive
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: flate2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: iana-time-zone
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: indexmap
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: once_cell
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: rust-embed-impl
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: rust-embed-utils
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: serde_derive
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: time
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: time-core
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: tokio
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: crates
- dependency-name: wasi
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: windows-core
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
- dependency-name: wit-bindgen-rt
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: crates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-03 17:28:48 +06:00
dependabot[bot]
cc8f0e456a build(deps): bump the maven group across 1 directory with 10 updates (#253)
Bumps the maven group with 10 updates in the /manager directory:

| Package | From | To |
| --- | --- | --- |
| androidx.navigation:navigation-compose | `2.8.8` | `2.8.9` |
| androidx.compose:compose-bom | `2025.02.00` | `2025.03.00` |
| androidx.webkit:webkit | `1.12.1` | `1.13.0` |
| [io.github.raamcosta.compose-destinations:core](https://github.com/raamcosta/compose-destinations) | `2.1.0-beta16` | `2.1.0` |
| [io.github.raamcosta.compose-destinations:ksp](https://github.com/raamcosta/compose-destinations) | `2.1.0-beta16` | `2.1.0` |
| com.android.application | `8.8.2` | `8.9.0` |
| com.android.library | `8.8.2` | `8.9.0` |
| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.1.10` | `2.1.20` |
| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.1.10` | `2.1.20` |
| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.1.10-1.0.31` | `2.1.20-1.0.31` |



Updates `androidx.navigation:navigation-compose` from 2.8.8 to 2.8.9

Updates `androidx.compose:compose-bom` from 2025.02.00 to 2025.03.00

Updates `androidx.webkit:webkit` from 1.12.1 to 1.13.0

Updates `io.github.raamcosta.compose-destinations:core` from 2.1.0-beta16 to 2.1.0
- [Release notes](https://github.com/raamcosta/compose-destinations/releases)
- [Commits](https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta16...2.1.0)

Updates `io.github.raamcosta.compose-destinations:ksp` from 2.1.0-beta16 to 2.1.0
- [Release notes](https://github.com/raamcosta/compose-destinations/releases)
- [Commits](https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta16...2.1.0)

Updates `io.github.raamcosta.compose-destinations:ksp` from 2.1.0-beta16 to 2.1.0
- [Release notes](https://github.com/raamcosta/compose-destinations/releases)
- [Commits](https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta16...2.1.0)

Updates `com.android.application` from 8.8.2 to 8.9.0

Updates `com.android.library` from 8.8.2 to 8.9.0

Updates `com.android.library` from 8.8.2 to 8.9.0

Updates `org.jetbrains.kotlin.android` from 2.1.10 to 2.1.20
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.1.10...v2.1.20)

Updates `org.jetbrains.kotlin.plugin.compose` from 2.1.10 to 2.1.20
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.1.10...v2.1.20)

Updates `org.jetbrains.kotlin.plugin.compose` from 2.1.10 to 2.1.20
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.1.10...v2.1.20)

Updates `com.google.devtools.ksp` from 2.1.10-1.0.31 to 2.1.20-1.0.31
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.1.10-1.0.31...2.1.20-1.0.31)

---
updated-dependencies:
- dependency-name: androidx.navigation:navigation-compose
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: androidx.compose:compose-bom
  dependency-type: direct:production
  dependency-group: maven
- dependency-name: androidx.webkit:webkit
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven
- dependency-name: io.github.raamcosta.compose-destinations:core
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: io.github.raamcosta.compose-destinations:ksp
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: io.github.raamcosta.compose-destinations:ksp
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven
- dependency-name: com.android.library
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven
- dependency-name: com.android.library
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven
- dependency-name: org.jetbrains.kotlin.android
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: org.jetbrains.kotlin.plugin.compose
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: org.jetbrains.kotlin.plugin.compose
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: com.google.devtools.ksp
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-03 17:28:36 +06:00
Kangmin Kim
0f7e8d3214 Update Korean strings.xml (#280) 2025-04-03 15:50:34 +06:00
igor
2c193e0dd4 Update portuguese translation (#279)
* manager: improved mount system info fetching logic

* Update portuguese translation

---------

Co-authored-by: rifsxd <rifat.44.azad.rifs@gmail.com>
Co-authored-by: Rifat Azad <33044977+rifsxd@users.noreply.github.com>
2025-04-03 15:50:21 +06:00
Rifat Azad
2512239ea7 ksud_overlayfs: fixed rust formatting error 2025-04-03 15:13:21 +06:00
cvnertnc
6f6b797e22 Update values-tr/strings.xml (#278)
* manager: improved mount system info fetching logic

* Update values-tr/strings.xml

---------

Co-authored-by: rifsxd <rifat.44.azad.rifs@gmail.com>
Co-authored-by: Rifat Azad <33044977+rifsxd@users.noreply.github.com>
2025-04-03 02:28:03 +06:00
the slaytanic one~
d5f25590a5 Added Bulgaran Readme + Fix my older writing style of the bulgarian translatation in strings.xml (#273)
* Added Bulgaran Readme (By boyan)

* manager: improved mount system info fetching logic

* UPDATE BULGARIAN STRINGS.xml

no questions asked

---------

Co-authored-by: rifsxd <rifat.44.azad.rifs@gmail.com>
Co-authored-by: Rifat Azad <33044977+rifsxd@users.noreply.github.com>
2025-04-03 01:36:42 +06:00
Nhật Minh
bf81c9a17b Update strings.xml (#270)
update vietnamese

Co-authored-by: Rifat Azad <33044977+rifsxd@users.noreply.github.com>
2025-04-03 01:35:50 +06:00
rifsxd
5cec5aa656 manager: improved mount system info fetching logic 2025-04-03 00:21:53 +06:00
rifsxd
02dbb7d0f7 ksud: added module mount command to check current mount system enabled 2025-04-02 15:12:44 +06:00
rifsxd
c5aa6ffffc manager: module & allowlist backup directory changed to /data/adb/ksu/
manager: placed export logs list item to the bottom
2025-04-02 14:46:23 +06:00
rifsxd
335ea3190f docs: removed redundant web page 2025-04-02 14:11:22 +06:00
5ec1cff
35c98aee76 Fix off-by-one when iterating dir (#2530)
Fix https://github.com/tiann/KernelSU/issues/2528
2025-04-02 14:09:44 +06:00
Wang Han
dc992818de Fix su --shell argument handling (#2529)
This fixes https://github.com/tiann/KernelSU/issues/2523.
2025-04-02 14:09:34 +06:00
Wang Han
dfea38e0f2 Skip staging package when searching manager (#2511) 2025-04-02 14:09:22 +06:00
ZGX089
6452427b6c Added Arabic translation (#267) 2025-03-30 01:46:24 +06:00
Caner Karaca
feb3c47bdc Fix formatting (#266) 2025-03-30 01:46:06 +06:00
kam821
de44373599 Update Polish translation (#264)
- Added settings_language translation
2025-03-27 22:20:21 +06:00
luigimak
4bd7e7cc9f Update values-it/strings.xml (#261)
Update Italian Translation
2025-03-27 22:20:04 +06:00
igor
39014fb89c Update portuguese translation (#260) 2025-03-27 00:56:09 +06:00
AJleKcAHgP68
eeecbf255a Update Ru translate (#256) 2025-03-27 00:55:51 +06:00
Saksham Singla
11e4729519 Update README.md (#262)
Changed Installation Instructions Link according to new website ksunext.org
2025-03-27 00:55:33 +06:00
kam821
f3093eace6 Add Polish documentation (#249)
- Added README_PL.md
- Added link to Polish version in other language versions
2025-03-24 22:15:16 +06:00
rifsxd
3a7edf48bf manager: remove beta warning for mount system switch 2025-03-23 23:27:10 +06:00
rifsxd
de189fe426 ksud_overlayfs: ability to specify custom sparse image size 2025-03-23 23:15:47 +06:00
rifsxd
30835787c9 Revert "ksud: determine modules's size by checking partion size"
This reverts commit c40bfd694c.
2025-03-23 22:38:01 +06:00
mr_vokintos
9fc1bd1876 Update README_RU.md (#248)
Donations added
2025-03-23 17:53:45 +06:00
AxelPLN(Axel Yinjia Huang)
a223781fae improve manager translations for zh-rCN & zh-rTW (#247)
* add README_TW

* Update README_CN.md

* add Simplified Chinese for website

add Simplified Chinese for website

fix some mistakes in README_CN

* Update zh/devices.html

* Update zh/features.html

* Update zh/devices.html

* Update zh/features.html

* Update zh/index.html

* Add Traditional Chinese translation for manager

* Try to add switching function for website

* fix manager translations for zh-rCH & zh-rTW

* try to add language switcher for manager

* try to add language switcher for manager

* try to add language switching function for manager app

* try to add language switching function for manager app

* try to add language switching function for manager app

* discard invalid changes
2025-03-23 17:50:22 +06:00
kam821
2a154c1985 Update Polish translation - SUSFS/sus_su (#243)
Added SUSFS/sus_su strings translation
2025-03-23 17:49:05 +06:00
luigimak
110b8e92dc Update Italian Translation (#242)
* Update values-it/strings.xml

Update Italian translation

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Added Italian link README_IT.md

* Create README_IT.md

Create Italian README
2025-03-23 17:48:37 +06:00
igor
3b87014bf9 Update Portuguese Brazilian translation (#240) 2025-03-23 17:47:27 +06:00
AJleKcAHgP68
bd0bcc4337 Russian translation updated (#239) 2025-03-23 17:46:24 +06:00
the slaytanic one~
916f8151ea UPDATE BG translation...thats all (#237)
* Create strings.xml

* UPDATE BULGARIAN XD
2025-03-23 17:45:24 +06:00
rifsxd
59ca8fa2c2 manager: susfs and sus_su status now global strings 2025-03-16 00:50:57 +06:00
AJleKcAHgP68
238f2ee008 Update Ru strings.xml (#234)
Update Ru string
2025-03-14 16:47:45 +06:00
kam821
7eaf37bc4a Update Polish Translation (#229)
* Update Polish Translation - UpdateJson

UpdateJson in this context doesn't mean 'update the json file', but 'a link to a JSON file that contains info so manager can update the module'.
It is also a field described in the Magisk documentation, so it's best to leave the original form.

* Update Polish Translation - Export logs

Mostly a cosmetic change, should fit better with the other options in the settings menu
2025-03-14 16:47:27 +06:00
JuicerV3
022ee4bb1c README_TH: Update Thai translation (#224) 2025-03-14 16:47:07 +06:00
Ksawlii
d209dc087e Update selinux strings in values-pl (#218)
Signed-off-by: Ksawlii <ksawery.blaszczak@proton.me>
2025-03-14 16:46:39 +06:00
rifsxd
d79ea50c6e Revert "ksud_magic: probe for more workdir candidates (#221)"
This reverts commit a68b4fe7e0.
2025-03-11 23:31:30 +06:00
rifsxd
d8944d641c ksud_magic: reformat rust codes 2025-03-10 23:51:02 +06:00
Wang Han
1c9705fdd0 Set KSU_APP_PROFILE_VER for shell (#2481)
This reverts commit bd24044ec3.
2025-03-10 22:16:22 +06:00
AlexLiuDev233
f369297be9 kernel: fix sometimes sucompat can not toggle by manager (#2484)
When the manager is already running, if other programs / kernel toggle
the sucompat enable status,
The manager "Disable SU Compat" toggle button can not work, kmesg print
"cmd enable su but no need to change."

I think we should still return reply_ok when the syscall value is
consistent with the kernel, which would fix the issue.
2025-03-10 22:16:03 +06:00
backslashxx
a68b4fe7e0 ksud_magic: probe for more workdir candidates (#221)
- reuses old ksu functions
- makes sure its an empty dir
- adapted from https://github.com/rsuntk/KernelSU/commit/141f010 71cb86c2e9

Co-authored-by: powellnorma <101364699+powellnorma@users.noreply.github.com>
Co-authored-by: Rissu <90097027+rsuntk@users.noreply.github.com>
2025-03-09 14:48:24 +06:00
kam821
52399f7fd1 Update Polish Translation (#212)
- Fixed incorrect translations
- Unified nomenclature
- Added splitting to preserve both forms where needed
2025-03-09 14:33:48 +06:00
backslashxx
7218a504c9 kernel: ksud: add ksu_handle_execve_ksud (#217)
adapted from sys_execve_handler_pre()
upstream, https://github.com/tiann/KernelSU/commit/2027ac3

this completes the puzzle where all hooks are on syscalls

ksu_handle_execve_ksud
- sets argv to __argv, dunno what this is for, I just copied.
- creates dummy struct `filename_in` to store filename in `filename_in.name`
- strncpy filename to path, assign path to .name
- simply a shim for ksu_handle_execveat_ksud

usage: `ksu_handle_execve_ksud(filename, argv);` on sys_execve

tested on 4.14, 6.1

Tested-by: selfmusing <mirandamehek@gmail.com>
Tested-by: Adam W. Willis <return.of.octobot@gmail.com>

Signed-off-by: backslashxx <118538522+backslashxx@users.noreply.github.com>
Co-authored-by: Another Guy <25584417+anotherjin@users.noreply.github.com>
2025-03-09 14:33:26 +06:00
luigimak
9d5999c8c3 Create values-it/strings.xml (#208)
Italian translation
2025-03-08 10:41:51 +06:00
the slaytanic one~
204805852c Create strings.xml (#205) 2025-03-05 01:22:08 +06:00
xradens
36b42e611e Update Bahasa Indonesia Translation (#203)
Fixed some translations
2025-03-03 20:54:24 +06:00
dependabot[bot]
c50bbd32aa build(deps): bump the maven group across 1 directory with 5 updates (#201)
Bumps the maven group with 5 updates in the /manager directory:

| Package | From | To |
| --- | --- | --- |
| androidx.activity:activity-compose | `1.10.0` | `1.10.1` |
| androidx.navigation:navigation-compose | `2.8.7` | `2.8.8` |
| com.android.application | `8.8.1` | `8.8.2` |
| com.android.library | `8.8.1` | `8.8.2` |
| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.1.10-1.0.30` | `2.1.10-1.0.31` |



Updates `androidx.activity:activity-compose` from 1.10.0 to 1.10.1

Updates `androidx.navigation:navigation-compose` from 2.8.7 to 2.8.8

Updates `com.android.application` from 8.8.1 to 8.8.2

Updates `com.android.library` from 8.8.1 to 8.8.2

Updates `com.android.library` from 8.8.1 to 8.8.2

Updates `com.google.devtools.ksp` from 2.1.10-1.0.30 to 2.1.10-1.0.31
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.1.10-1.0.30...2.1.10-1.0.31)

---
updated-dependencies:
- dependency-name: androidx.activity:activity-compose
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: androidx.navigation:navigation-compose
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: com.android.library
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: com.android.library
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
- dependency-name: com.google.devtools.ksp
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-03 20:54:11 +06:00
Anaël
d2f6d00327 manager: translations: Update french translations (#198)
* manager: translations: Update french translations

* Fixed typos
* Added su compat translations
* Added allowlist backup/restore translations
* Added about source code translation

* manager: translations: fix typo

* This was missed in commit 4097d55716

* manager: translations: fix another typo

* i really have to get some sleep duh im tired
2025-03-02 01:20:57 +06:00
rifsxd
c9e4c8e186 manager: remove unnecessary isManager definition in Settings screen 2025-02-28 01:40:28 +06:00
Wang Han
3a6c30fba1 Avoid popping back stack right after navigation (#2477)
This fixes https://github.com/tiann/KernelSU/issues/2462.
2025-02-28 00:50:50 +06:00
rifsxd
d5d4304120 manager: hide su related settings screen items if ksuVersion is null 2025-02-28 00:35:13 +06:00
rifsxd
4eac2f783e manager: change MINIMAL_SUPPORTED_SU_COMPAT to 12404 (where disable su compat feature was fully implemented) 2025-02-28 00:25:59 +06:00
rifsxd
2cc765ee0a manager: add back navigation to BackupRestore screen 2025-02-28 00:22:37 +06:00
cvnertnc
453524d382 Update values-tr/strings.xml (#195) 2025-02-27 03:33:34 +06:00
Mateusz Chrząszcz
fccc3db5c5 Update strings.xml fix, update (#194) 2025-02-26 03:10:27 +06:00
63 changed files with 1675 additions and 636 deletions

View File

@@ -48,10 +48,10 @@ jobs:
uses: softprops/action-gh-release@v2
with:
files: |
manager/*.apk
Manager/*.apk
android*-lkm/*_kernelsu.ko
AnyKernel3-*.zip
boot-images-*/Image-*/*.img.gz
ksud_magic-*
ksud_overlayfs-*
susfsd-*
ksud_magic/ksud_magic-*
ksud_overlayfs/ksud_overlayfs-*
susfsd/susfsd-*

View File

@@ -1,4 +1,4 @@
**English** | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
**English** | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next
@@ -28,7 +28,7 @@ Currently, only the `arm64-v8a` architecture is supported.
## Usage
- [Installation instruction](https://KernelSU-Next.github.io/KernelSU-Next/)
- [Installation instruction](https://ksunext.org/pages/installation.html)
## Security

58
docs/README_BG.md Normal file
View File

@@ -0,0 +1,58 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | **Български**
# KernelSU Next
<img src="/assets/kernelsu_next.png" style="width: 96px;" alt="лого">
Ядрено решение за root достъп за Android устройства.
[![Последна версия](https://img.shields.io/github/v/release/KernelSU-Next/KernelSU-Next?label=Версия&logo=github)](https://github.com/KernelSU-Next/KernelSU-Next/releases/latest)
[![Нощна версия](https://img.shields.io/badge/Нощнаерсия-сива?logo=hackthebox&logoColor=fff)](https://nightly.link/KernelSU-Next/KernelSU-Next/workflows/build-manager-ci/next/Manager)
[![Лиценз: GPL v2](https://img.shields.io/badge/Лиценз-GPL%20v2-оранжев.svg?logo=gnu)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
[![Лиценз в GitHub](https://img.shields.io/github/license/KernelSU-Next/KernelSU-Next?logo=gnu)](/LICENSE)
## Възможности
1. Управление на `su` и root достъп на ядрено ниво
2. Система за модули базирана на [Magic Mount](https://topjohnwu.github.io/Magisk/details.html#magic-mount) / [OverlayFS](https://en.wikipedia.org/wiki/OverlayFS)
3. [Профили за приложения](https://kernelsu.org/guide/app-profile.html): Ограничаване на root права за конкретни приложения
## Съвместимост
KernelSU Next официално поддържа повечето Android ядра от версия 4.4 до 6.6:
- Ядра GKI 2.0 (5.10+) могат да използват предварително компилирани изображения и LKM/KMI
- Ядра GKI 1.0 (4.19 - 5.4) изискват прекомпилиране с драйвера на KernelSU
- Остарели ядра (<4.14) също изискват прекомпилиране (3.18+ е експериментална поддръжка)
В момента се поддържа само архитектурата `arm64-v8a`.
## Инсталация
- [Инструкции за инсталиране](https://ksunext.org/pages/installation.html)
## Сигурност
За докладване на уязвимости вижте [SECURITY.md](/SECURITY.md).
## Лиценз
- Файловете в директорията `kernel` са [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
- Всички останали файлове са [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0.html)
## Дарения
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT BEP20 ]
- TYUVMWGTcnR5svnDoX85DWHyqUAeyQcdjh [ USDT TRC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT ERC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ ETH ERC20 ]
- Ld238uYBuRQdZB5YwdbkuU6ektBAAUByoL [ LTC ]
- 19QgifcjMjSr1wB2DJcea5cxitvWVcXMT6 [ BTC ]
## Благодарности
- [Kernel-Assisted Superuser](https://git.zx2c4.com/kernel-assisted-superuser/about/): Идеята за KernelSU
- [Magisk](https://github.com/topjohnwu/Magisk): Мощният root инструмент
- [genuine](https://github.com/brevent/genuine/): Валидация на APK подписи v2
- [Diamorphine](https://github.com/m0nad/Diamorphine): Rootkit техники
- [KernelSU](https://github.com/tiann/KernelSU): Благодарности към tiann за създаването на KernelSU
- [Magic Mount Port](https://github.com/5ec1cff/KernelSU/blob/main/userspace/ksud/src/magic_mount.rs): 💜 5ec1cff за спасяването на KernelSU

View File

@@ -1,4 +1,4 @@
[English](README.md) | **简体中文** | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
[English](README.md) | **简体中文** | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next

View File

@@ -1,4 +1,4 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | **Français** | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | **Français** | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next

View File

@@ -1,4 +1,4 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | **Bahasa Indonesia** | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | **Bahasa Indonesia** | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next

63
docs/README_IT.md Normal file
View File

@@ -0,0 +1,63 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | **Italiano** | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next
<img src="/assets/kernelsu_next.png" style="width: 96px;" alt="logo">
Una soluzione root basata sul kernel per dispositivi Android.
[![Latest Release](https://img.shields.io/github/v/release/KernelSU-Next/KernelSU-Next?label=Release&logo=github)](https://github.com/KernelSU-Next/KernelSU-Next/releases/latest)
[![Nightly Release](https://img.shields.io/badge/Nightly%20Release-gray?logo=hackthebox&logoColor=fff)](https://nightly.link/KernelSU-Next/KernelSU-Next/workflows/build-manager-ci/next/Manager)
[![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-orange.svg?logo=gnu)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
[![GitHub License](https://img.shields.io/github/license/KernelSU-Next/KernelSU-Next?logo=gnu)](/LICENSE)
## Caratteristiche
1. Gestione degli accessi `su` e root basata sul kernel.
2. Sistema modulare basato sul sistema di montaggio dinamico [Magic Mount](https://topjohnwu.github.io/Magisk/details.html#magic-mount) / [OverlayFS](https://en.wikipedia.org/wiki/OverlayFS).
3. [App Profile](https://kernelsu.org/guide/app-profile.html): Rinchiudi il potere della radice in una gabbia.
## Stato compatibilità
KernelSU Next supporta ufficialmente la maggior parte dei kernel Android dalla versione 4.4 alla 6.6.
- I kernel GKI 2.0 (5.10+) possono eseguire immagini precostruite e LKM/KMI.
- I kernel GKI 1.0 (4.19 - 5.4) devono essere ricostruiti con il driver KernelSU.
- Anche i kernel EOL (<4.14) devono essere ricostruiti con il driver KernelSU (la versione 3.18+ è sperimentale e potrebbe richiedere alcuni backport di funzioni).
Attualmente è supportata solo l'architettura `arm64-v8a`.
## Utilizzo
- [Istruzioni per l'installazione](https://KernelSU-Next.github.io/KernelSU-Next/)
## Security
Per informazioni sulla segnalazione delle vulnerabilità di sicurezza in KernelSU, vedere [SECURITY.md](/SECURITY.md).
## Licenza
- I file nella directory `kernel` sono [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html).
- Tutte le altre parti eccetto la directory `kernel` sono [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0.html).
## Donazioni
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT BEP20 ]
- TYUVMWGTcnR5svnDoX85DWHyqUAeyQcdjh [ USDT TRC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT ERC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ ETH ERC20 ]
- Ld238uYBuRQdZB5YwdbkuU6ektBAAUByoL [ LTC ]
- 19QgifcjMjSr1wB2DJcea5cxitvWVcXMT6 [ BTC ]
## Crediti
- [Kernel-Assisted Superuser](https://git.zx2c4.com/kernel-assisted-superuser/about/): L'idea di KernelSU.
- [Magisk](https://github.com/topjohnwu/Magisk): Il potente strumento di root.
- [genuine](https://github.com/brevent/genuine/): Convalida della firma APK v2.
- [Diamorphine](https://github.com/m0nad/Diamorphine): Alcune competenze sui rootkit.
- [KernelSU](https://github.com/tiann/KernelSU): Grazie a tiann, altrimenti KernelSU Next non esisterebbe nemmeno.
- [Magic Mount Port](https://github.com/5ec1cff/KernelSU/blob/main/userspace/ksud/src/magic_mount.rs): 💜 5ec1cff per aver salvato KernelSU!

View File

@@ -1,4 +1,4 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | **한국어** | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | **한국어** | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next

63
docs/README_PL.md Normal file
View File

@@ -0,0 +1,63 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | **Polski** | [Български](README_BG.md)
# KernelSU Next
<img src="/assets/kernelsu_next.png" style="width: 96px;" alt="logo">
Bazujące na jądrze rozwiązanie root dla urządzeń z Androidem.
[![Latest Release](https://img.shields.io/github/v/release/KernelSU-Next/KernelSU-Next?label=Release&logo=github)](https://github.com/KernelSU-Next/KernelSU-Next/releases/latest)
[![Nightly Release](https://img.shields.io/badge/Nightly%20Release-gray?logo=hackthebox&logoColor=fff)](https://nightly.link/KernelSU-Next/KernelSU-Next/workflows/build-manager-ci/next/Manager)
[![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-orange.svg?logo=gnu)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
[![GitHub License](https://img.shields.io/github/license/KernelSU-Next/KernelSU-Next?logo=gnu)](/LICENSE)
## Funkcjonalności
1. Oparte na jądrze `su` i zarządzanie dostępem do roota.
2. System modułów oparty na dynamicznym systemie montowania [Magic Mount](https://topjohnwu.github.io/Magisk/details.html#magic-mount) / [OverlayFS](https://en.wikipedia.org/wiki/OverlayFS).
3. [Profil aplikacji](https://kernelsu.org/guide/app-profile.html): Ujarzmij moc roota poprzez możliwość nakładania ograniczeń na uprawnienia roota dla poszczególnych aplikacji.
## Stan zgodności
KernelSU Next oficjalnie obsługuje większość jąder Androida od wersji 4.4 do 6.6.
- Jądra GKI 2.0 (5.10+) mogą uruchamiać wstępnie przygotowane obrazy i LKM/KMI.
- Jądra GKI 1.0 (4.19 - 5.4) muszą zostać zrekompilowane z dodatkiem sterownika KernelSU.
- Jądra EOL (<4.14) również muszą zostać zrekompilowane z dodatkiem sterownika KernelSU (obsługa 3.18+ jest eksperymentalna i może wymagać backportu pewnych funkcji).
Obecnie obsługiwana jest tylko architektura `arm64-v8a`.
## Użycie
- [Instrukcja instalacji](https://KernelSU-Next.github.io/KernelSU-Next/)
## Bezpieczeństwo
Informacje na temat zgłaszania luk bezpieczeństwa w KernelSU znajdziesz w [SECURITY.md](/SECURITY.md).
## Licencje
- Pliki w katalogu `kernel` są dostępne na licencji [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html).
- Wszystkie inne elementy, z wyjątkiem katalogu `kernel`, są dostępne na licencji [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0.html).
## Darowizny
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT BEP20 ]
- TYUVMWGTcnR5svnDoX85DWHyqUAeyQcdjh [ USDT TRC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT ERC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ ETH ERC20 ]
- Ld238uYBuRQdZB5YwdbkuU6ektBAAUByoL [ LTC ]
- 19QgifcjMjSr1wB2DJcea5cxitvWVcXMT6 [ BTC ]
## Podziękowania
- [Kernel-Assisted Superuser](https://git.zx2c4.com/kernel-assisted-superuser/about/): Idea, na której opiera się KernelSU.
- [Magisk](https://github.com/topjohnwu/Magisk): Potężne narzędzie do rootowania.
- [genuine](https://github.com/brevent/genuine/): Walidacja podpisu APK v2.
- [Diamorphine](https://github.com/m0nad/Diamorphine): Część zdolności rootkitowych.
- [KernelSU](https://github.com/tiann/KernelSU): Dzięki tiann, bez ciebie KernelSU Next w ogóle by nie istniał.
- [Magic Mount Port](https://github.com/5ec1cff/KernelSU/blob/main/userspace/ksud/src/magic_mount.rs): 💜 5ec1cff za uratowanie KernelSU!

View File

@@ -1,4 +1,4 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | **Português (Brasil)** | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | **Português (Brasil)** | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next

View File

@@ -1,4 +1,4 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | **Русский** | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | **Русский** | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next
@@ -39,6 +39,20 @@ KernelSU Next работает с большинством ядер Android (4.4
- Всё, что в директории `kernel`, — [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html).
- Остальной код, кроме директории `kernel`, под [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0.html).
## Донаты
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT BEP20 ]
- TYUVMWGTcnR5svnDoX85DWHyqUAeyQcdjh [ USDT TRC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT ERC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ ETH ERC20 ]
- Ld238uYBuRQdZB5YwdbkuU6ektBAAUByoL [ LTC ]
- 19QgifcjMjSr1wB2DJcea5cxitvWVcXMT6 [ BTC ]
## Благодарность
- [Kernel-Assisted Superuser](https://git.zx2c4.com/kernel-assisted-superuser/about/): Идея KernelSU.

View File

@@ -1,10 +1,10 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | **ภาษาไทย** | [Tiếng Việt](README_VI.md)
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | **ภาษาไทย** | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next
<img src="/assets/kernelsu_next.png" style="width: 96px;" alt="logo">
โซลูชันรูทบนพื้นฐานเคอร์เนลสำหรับอุปกรณ์ Android
โซลูชันรูทบนพื้นฐานเคอร์เนลสำหรับอุปกรณ์ Android
[![Latest Release](https://img.shields.io/github/v/release/KernelSU-Next/KernelSU-Next?label=Release&logo=github)](https://github.com/KernelSU-Next/KernelSU-Next/releases/latest)
[![Nightly Release](https://img.shields.io/badge/Nightly%20Release-gray?logo=hackthebox&logoColor=fff)](https://nightly.link/KernelSU-Next/KernelSU-Next/workflows/build-manager-ci/next/Manager)
@@ -13,16 +13,16 @@
## คุณสมบัติ
1. การจัดการการเข้าถึงรูทและ `su` บนเคอร์เนล
2. ระบบโมดูลที่ใช้ระบบการติดตั้งแบบไดนามิก [Magic Mount](https://topjohnwu.github.io/Magisk/details.html#magic-mount) / [OverlayFS](https://en.wikipedia.org/wiki/OverlayFS)
3. [App Profile](https://kernelsu.org/guide/app-profile.html): จำกัดพลังรูทไว้สำหรับแอปต่างๆ
1. จัดการการเข้าถึงรูท และ `su` บนพื้นฐานเคอร์เนล
2. ระบบโมดูลแบบไดนามิกเมานต์ [Magic Mount](https://topjohnwu.github.io/Magisk/details.html#magic-mount) / [OverlayFS](https://en.wikipedia.org/wiki/OverlayFS)
3. [App Profile](https://kernelsu.org/guide/app-profile.html): จำกัดสิทธิ์เข้าถึงรูทสำหรับแอปต่างๆ
## การเข้ากันในอุปกรณ์ต่างๆ
KernelSU Next รองรับแบบเป็นทางการตั้งแต่เคอร์เนลแอนดรอยด์ 4.4 ถึง 6.6
- GKI 2.0 (5.10+) เคอร์เนลสามารถรันแบบไฟล์สำเร็จรูปและ LKM/KMI ได้
- GKI 1.0 (4.19 - 5.4) เคอร์เนลต้องการ build ร่วมกับไดร์เวอร์ของทาง KernelSU
- EOL (<4.14) เคอร์เนลก็ต้องการ build ร่วมกับไดร์เวอร์ของทาง KernelSU เช่นกัน (3.18+ ยังเป็นการทดลองอยู่และยังต้องการเขียนนหลังบ้านเพิ่มเติม)
- GKI 2.0 (5.10+) เคอร์เนลสามารถรันไฟล์อิมเมจสำเร็จรูป และ LKM/KMI ได้
- GKI 1.0 (4.19 - 5.4) เคอร์เนลจะต้องรีบิ้วร่วมกับไดร์เวอร์ของ KernelSU
- EOL (<4.14) เคอร์เนลก็ต้องรีบิ้วร่วมกับไดร์เวอร์ของ KernelSU เช่นกัน (3.18+ ยังเป็นเวอร์ชั่นทดลอง และยังต้องเขียนฟังก์ชั่นหลังบ้านเพิ่มเติม)
ในขณะนี้, มีแค่สถาปัตยกรรม `arm64-v8a` ที่รองรับเท่านั้น
@@ -32,18 +32,32 @@ KernelSU Next รองรับแบบเป็นทางการตั้
## ความปลอดภัย
สำหรับข้อมูลเกี่ยวกับการรายงานช่องโหว่ด้านความปลอดภัยใน KernelSU โปรดดูที่ [SECURITY.md](/SECURITY.md).
สำหรับข้อมูลการรายงานช่องโหว่ด้านความปลอดภัยของ KernelSU โปรดดูที่ [SECURITY.md](/SECURITY.md).
## ใบอนุญาต
## สัญญาอนุญาต
- ไฟล์ที่ภายใต้โฟลเดอร์ `kernel` ถือว่าเป็น [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html).
- ไฟล์ที่นอกเหนือจากโฟลเดอร์ `kernel` ถือว่าเป็น [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0.html).
- ไฟล์ภายใต้โฟลเดอร์ `kernel` ถือว่าเป็นสัญญาอนุญาต [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html).
- ไฟล์ที่นอกเหนือจากโฟลเดอร์ `kernel` ถือว่าเป็นสัญญาอนุญาต [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0.html).
## การบริจาก
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT BEP20 ]
- TYUVMWGTcnR5svnDoX85DWHyqUAeyQcdjh [ USDT TRC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT ERC20 ]
- 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ ETH ERC20 ]
- Ld238uYBuRQdZB5YwdbkuU6ektBAAUByoL [ LTC ]
- 19QgifcjMjSr1wB2DJcea5cxitvWVcXMT6 [ BTC ]
## เครดิต
- [Kernel-Assisted Superuser](https://git.zx2c4.com/kernel-assisted-superuser/about/): ที่เป็นคนริเริ่มไอเดียเกี่ยวกับ KernelSU
- [Magisk](https://github.com/topjohnwu/Magisk): อุปกรณ์มือเกี่ยวกับรูทที่ทรงพลัง
- [genuine](https://github.com/brevent/genuine/): การออกลายเซ็นให้กับไฟล์ APK v2
- [Diamorphine](https://github.com/m0nad/Diamorphine): ความรู้ความสามารถเกี่ยวกับ rootkit
- [KernelSU](https://github.com/tiann/KernelSU): ต้องขอบคุณ tiann ถ้าไม่มีคนนั้นก็ไม่มีสิ่งที่เรียกว่า KernelSU เกิดขึ้น
- [Magic Mount Port](https://github.com/5ec1cff/KernelSU/blob/main/userspace/ksud/src/magic_mount.rs): 💜 5ec1cff ที่ช่วย KernelSU ไว้
- [Kernel-Assisted Superuser](https://git.zx2c4.com/kernel-assisted-superuser/about/): ที่เป็นคนริเริ่มไอเดีย KernelSU
- [Magisk](https://github.com/topjohnwu/Magisk): เครื่องมือรูทที่ทรงพลัง
- [genuine](https://github.com/brevent/genuine/): การตรวจสอบลายเซ็น APK v2
- [Diamorphine](https://github.com/m0nad/Diamorphine): ความรู้เกี่ยวกับ rootkit
- [KernelSU](https://github.com/tiann/KernelSU): ต้องขอบคุณ tiann ไม่งั้นจะไม่มี KernelSU ขึ้นมา
- [Magic Mount Port](https://github.com/5ec1cff/KernelSU/blob/main/userspace/ksud/src/magic_mount.rs): 💜 5ec1cff ที่ช่วย KernelSU เอาไว้!

View File

@@ -1,4 +1,4 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | **Türkçe** | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | **Türkçe** | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next

View File

@@ -1,4 +1,4 @@
[English](README.md) | [简体中文](README_CN.md) | **繁體中文** | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md)
[English](README.md) | [简体中文](README_CN.md) | **繁體中文** | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | [Tiếng Việt](README_VI.md) | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next

View File

@@ -1,4 +1,4 @@
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | **Tiếng Việt**
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [Türkçe](README_TR.md) | [Português (Brasil)](README_PT-BR.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Bahasa Indonesia](README_ID.md) | [Русский](README_RU.md) | [ภาษาไทย](README_TH.md) | **Tiếng Việt** | [Italiano](README_IT.md) | [Polski](README_PL.md) | [Български](README_BG.md)
# KernelSU Next

View File

@@ -113,6 +113,7 @@ void ksu_show_allow_list(void)
static void ksu_grant_root_to_shell()
{
struct app_profile profile = {
.version = KSU_APP_PROFILE_VER,
.allow_su = true,
.current_uid = 2000,
};

View File

@@ -494,6 +494,9 @@ int ksu_handle_prctl(int option, unsigned long arg2, unsigned long arg3,
bool enabled = (arg3 != 0);
if (enabled == ksu_su_compat_enabled) {
pr_info("cmd enable su but no need to change.\n");
if (copy_to_user(result, &reply_ok, sizeof(reply_ok))) {// return the reply_ok directly
pr_err("prctl reply error, cmd: %lu\n", arg2);
}
return 0;
}

View File

@@ -469,6 +469,36 @@ bool ksu_is_safe_mode()
return false;
}
/*
* ksu_handle_execve_ksud, execve_ksud handler for non kprobe
* adapted from sys_execve_handler_pre
* https://github.com/tiann/KernelSU/commit/2027ac3
*/
__maybe_unused int ksu_handle_execve_ksud(const char __user *filename_user,
const char __user *const __user *__argv)
{
struct user_arg_ptr argv = { .ptr.native = __argv };
struct filename filename_in, *filename_p;
char path[32];
// return early if disabled.
if (!ksu_execveat_hook) {
return 0;
}
if (!filename_user)
return 0;
memset(path, 0, sizeof(path));
ksu_strncpy_from_user_nofault(path, filename_user, 32);
// this is because ksu_handle_execveat_ksud calls it filename->name
filename_in.name = path;
filename_p = &filename_in;
return ksu_handle_execveat_ksud(AT_FDCWD, &filename_p, &argv, NULL, NULL);
}
#ifdef CONFIG_KSU_WITH_KPROBES
// https://elixir.bootlin.com/linux/v5.10.158/source/fs/exec.c#L1864

View File

@@ -148,6 +148,12 @@ FILLDIR_RETURN_TYPE my_actor(struct dir_context *ctx, const char *name,
if (!strncmp(name, "..", namelen) || !strncmp(name, ".", namelen))
return FILLDIR_ACTOR_CONTINUE; // Skip "." and ".."
if (d_type == DT_DIR && namelen >= 8 && !strncmp(name, "vmdl", 4) &&
!strncmp(name + namelen - 4, ".tmp", 4)) {
pr_info("Skipping directory: %.*s\n", namelen, name);
return FILLDIR_ACTOR_CONTINUE; // Skip staging package
}
if (snprintf(dirpath, DATA_PATH_LEN, "%s/%.*s", my_ctx->parent_dir,
namelen, name) >= DATA_PATH_LEN) {
pr_err("Path too long: %s/%.*s\n", my_ctx->parent_dir, namelen,
@@ -224,7 +230,7 @@ void search_manager(const char *path, int depth, struct list_head *uid_data)
data.depth = depth;
list_add_tail(&data.list, &data_path_list);
for (i = depth; i > 0; i--) {
for (i = depth; i >= 0; i--) {
struct data_path *pos, *n;
list_for_each_entry_safe(pos, n, &data_path_list, list) {

View File

@@ -22,8 +22,8 @@ object Natives {
// when MINIMAL_SUPPORTED_KERNEL > 11640, we can remove this constant.
const val MINIMAL_SUPPORTED_KERNEL_LKM = 11648
// 12402: Support disable sucompat mode
const val MINIMAL_SUPPORTED_SU_COMPAT = 12402
// 12404: Support disable sucompat mode
const val MINIMAL_SUPPORTED_SU_COMPAT = 12404
const val KERNEL_SU_DOMAIN = "u:r:su:s0"
const val ROOT_UID = 0

View File

@@ -55,6 +55,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.dropUnlessResumed
import coil.compose.AsyncImage
import coil.request.ImageRequest
import com.ramcosta.composedestinations.annotation.Destination
@@ -109,7 +110,7 @@ fun AppProfileScreen(
Scaffold(
topBar = {
TopBar(
onBack = { navigator.popBackStack() },
onBack = dropUnlessResumed { navigator.popBackStack() },
scrollBehavior = scrollBehavior
)
},

View File

@@ -18,7 +18,7 @@ import androidx.compose.foundation.layout.safeDrawing
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Undo
import androidx.compose.material.icons.automirrored.filled.*
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider
@@ -55,6 +55,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.core.content.FileProvider
import androidx.lifecycle.compose.dropUnlessResumed
import com.maxkeppeker.sheets.core.models.base.Header
import com.maxkeppeker.sheets.core.models.base.IconSource
import com.maxkeppeker.sheets.core.models.base.rememberUseCaseState
@@ -102,6 +103,9 @@ fun BackupRestoreScreen(navigator: DestinationsNavigator) {
Scaffold(
topBar = {
TopBar(
onBack = dropUnlessResumed {
navigator.popBackStack()
},
scrollBehavior = scrollBehavior
)
},
@@ -281,10 +285,15 @@ fun BackupRestoreScreen(navigator: DestinationsNavigator) {
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun TopBar(
onBack: () -> Unit = {},
scrollBehavior: TopAppBarScrollBehavior? = null
) {
TopAppBar(
title = { Text(stringResource(R.string.backup_restore)) },
title = { Text(stringResource(R.string.backup_restore)) }, navigationIcon = {
IconButton(
onClick = onBack
) { Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = null) }
},
windowInsets = WindowInsets.safeDrawing.only(WindowInsetsSides.Top + WindowInsetsSides.Horizontal),
scrollBehavior = scrollBehavior
)

View File

@@ -39,6 +39,7 @@ import androidx.compose.ui.input.key.key
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.dropUnlessResumed
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@@ -100,7 +101,7 @@ fun ExecuteModuleActionScreen(navigator: DestinationsNavigator, moduleId: String
topBar = {
TopBar(
isActionRunning = isActionRunning,
onBack = {
onBack = dropUnlessResumed {
navigator.popBackStack()
},
onSave = {

View File

@@ -48,6 +48,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.dropUnlessResumed
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@@ -152,7 +153,7 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
topBar = {
TopBar(
flashing,
onBack = {
onBack = dropUnlessResumed {
navigator.popBackStack()
},
onSave = {
@@ -171,8 +172,8 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
)
},
floatingActionButton = {
if (showFloatAction) {
// Reboot button (bottom left)
if (flashIt is FlashIt.FlashModules && (flashing == FlashingStatus.SUCCESS)) {
// Reboot button for modules flashing
ExtendedFloatingActionButton(
onClick = {
scope.launch {
@@ -185,6 +186,28 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
text = { Text(text = stringResource(R.string.reboot)) }
)
}
if (flashIt is FlashIt.FlashModules && (flashing == FlashingStatus.FAILED)) {
// Close button for modules flashing
ExtendedFloatingActionButton(
text = { Text(text = stringResource(R.string.close)) },
icon = { Icon(Icons.Filled.Close, contentDescription = null) },
onClick = {
navigator.popBackStack()
}
)
}
if (flashIt is FlashIt.FlashBoot && (flashing == FlashingStatus.SUCCESS || flashing == FlashingStatus.FAILED)) {
// Close button for LKM flashing
ExtendedFloatingActionButton(
text = { Text(text = stringResource(R.string.close)) },
icon = { Icon(Icons.Filled.Close, contentDescription = null) },
onClick = {
navigator.popBackStack()
}
)
}
},
contentWindowInsets = WindowInsets.safeDrawing,
snackbarHost = { SnackbarHost(hostState = snackBarHost) }

View File

@@ -293,7 +293,7 @@ private fun StatusCard(
val suSFS = getSuSFS()
if (suSFS == "Supported") {
Text(
text = stringResource(R.string.home_susfs, getSuSFS()),
text = "SuSFS: " + stringResource(R.string.susfs_supported),
style = MaterialTheme.typography.bodyMedium
)
}
@@ -446,19 +446,20 @@ private fun InfoCard() {
Spacer(Modifier.height(16.dp))
InfoCardItem(
label = stringResource(R.string.home_module_mount),
content = when {
ksuVersion == null -> stringResource(R.string.unavailable)
useOverlayFs -> stringResource(R.string.home_overlayfs_mount)
else -> stringResource(R.string.home_magic_mount)
},
label = stringResource(R.string.home_mount_system),
content = currentMountSystem().ifEmpty { stringResource(R.string.unavailable) },
icon = Icons.Filled.SettingsSuggest,
)
Spacer(Modifier.height(16.dp))
val isSUS_SU = getSuSFSFeatures() == "CONFIG_KSU_SUSFS_SUS_SU"
val suSFS = getSuSFS()
if (suSFS == "Supported") {
val susSUMode = if (isSUS_SU) "| SuS SU mode: ${susfsSUS_SU_Mode()}" else ""
val isSUS_SU = getSuSFSFeatures() == "CONFIG_KSU_SUSFS_SUS_SU"
val susSUMode = if (isSUS_SU) {
val mode = susfsSUS_SU_Mode()
val modeString = if (mode == "2") stringResource(R.string.enabled) else stringResource(R.string.disabled)
"| SuS SU: $modeString"
} else ""
Spacer(Modifier.height(16.dp))
InfoCardItem(
label = stringResource(R.string.home_susfs_version),
content = "${getSuSFSVersion()} (${getSuSFSVariant()}) $susSUMode",

View File

@@ -47,6 +47,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.dropUnlessResumed
import com.maxkeppeker.sheets.core.models.base.Header
import com.maxkeppeker.sheets.core.models.base.rememberUseCaseState
import com.maxkeppeler.sheets.list.ListDialog
@@ -133,7 +134,7 @@ fun InstallScreen(navigator: DestinationsNavigator) {
Scaffold(
topBar = {
TopBar(
onBack = { navigator.popBackStack() },
onBack = dropUnlessResumed { navigator.popBackStack() },
onLkmUpload = onLkmUpload,
scrollBehavior = scrollBehavior
)

View File

@@ -170,19 +170,21 @@ fun SettingScreen(navigator: DestinationsNavigator) {
}
}
if (Natives.version >= Natives.MINIMAL_SUPPORTED_SU_COMPAT) {
var isSuDisabled by rememberSaveable {
mutableStateOf(!Natives.isSuEnabled())
}
SwitchItem(
icon = Icons.Filled.RemoveModerator,
title = stringResource(id = R.string.settings_disable_su),
summary = stringResource(id = R.string.settings_disable_su_summary),
checked = isSuDisabled
) { checked ->
val shouldEnable = !checked
if (Natives.setSuEnabled(shouldEnable)) {
isSuDisabled = !shouldEnable
if (ksuVersion != null) {
if (Natives.version >= Natives.MINIMAL_SUPPORTED_SU_COMPAT) {
var isSuDisabled by rememberSaveable {
mutableStateOf(!Natives.isSuEnabled())
}
SwitchItem(
icon = Icons.Filled.RemoveModerator,
title = stringResource(id = R.string.settings_disable_su),
summary = stringResource(id = R.string.settings_disable_su_summary),
checked = isSuDisabled
) { checked ->
val shouldEnable = !checked
if (Natives.setSuEnabled(shouldEnable)) {
isSuDisabled = !shouldEnable
}
}
}
}
@@ -218,20 +220,14 @@ fun SettingScreen(navigator: DestinationsNavigator) {
}
}
val hasShownWarning = rememberSaveable { mutableStateOf(prefs.getBoolean("has_shown_warning", false)) }
var useOverlayFs by rememberSaveable {
mutableStateOf(
prefs.getBoolean("use_overlay_fs", false)
)
}
val isManager = Natives.becomeManager(ksuApp.packageName)
var showRebootDialog by remember { mutableStateOf(false) }
var showWarningDialog by remember { mutableStateOf(false) }
if (ksuVersion != null) {
SwitchItem(
icon = Icons.Filled.Build,
@@ -239,41 +235,18 @@ fun SettingScreen(navigator: DestinationsNavigator) {
summary = stringResource(id = R.string.use_overlay_fs_summary),
checked = useOverlayFs
) {
if (!hasShownWarning.value) {
showWarningDialog = true
prefs.edit().putBoolean("use_overlay_fs", it).apply()
useOverlayFs = it
if (useOverlayFs) {
moduleBackup()
} else {
moduleMigration()
}
if (isManager) install()
showRebootDialog = true
}
}
if (showWarningDialog) {
AlertDialog(
onDismissRequest = { showWarningDialog = false },
title = { Text(stringResource(R.string.warning)) },
text = { Text(stringResource(R.string.warning_message)) },
confirmButton = {
TextButton(onClick = {
showWarningDialog = false
prefs.edit().putBoolean("use_overlay_fs", !useOverlayFs).apply()
useOverlayFs = !useOverlayFs
if (useOverlayFs) {
moduleBackup()
} else {
moduleMigration()
}
if (isManager) install()
showRebootDialog = true
}) {
Text(stringResource(R.string.proceed))
}
},
dismissButton = {
TextButton(onClick = { showWarningDialog = false }) {
Text(stringResource(R.string.cancel))
}
}
)
}
if (showRebootDialog) {
AlertDialog(
onDismissRequest = { showRebootDialog = false },
@@ -316,14 +289,17 @@ fun SettingScreen(navigator: DestinationsNavigator) {
prefs.getBoolean("enable_web_debugging", false)
)
}
SwitchItem(
icon = Icons.Filled.Web,
title = stringResource(id = R.string.enable_web_debugging),
summary = stringResource(id = R.string.enable_web_debugging_summary),
checked = enableWebDebugging
) {
prefs.edit().putBoolean("enable_web_debugging", it).apply()
enableWebDebugging = it
if (ksuVersion != null) {
SwitchItem(
icon = Icons.Filled.Web,
title = stringResource(id = R.string.enable_web_debugging),
summary = stringResource(id = R.string.enable_web_debugging_summary),
checked = enableWebDebugging
) {
prefs.edit().putBoolean("enable_web_debugging", it).apply()
enableWebDebugging = it
}
}
var developerOptionsEnabled by rememberSaveable {
@@ -343,6 +319,54 @@ fun SettingScreen(navigator: DestinationsNavigator) {
}
}
if (ksuVersion != null) {
val backupRestore = stringResource(id = R.string.backup_restore)
ListItem(
leadingContent = {
Icon(
Icons.Filled.Backup,
backupRestore
)
},
headlineContent = { Text(backupRestore) },
modifier = Modifier.clickable {
navigator.navigate(BackupRestoreScreenDestination)
}
)
}
if (useOverlayFs) {
val shrink = stringResource(id = R.string.shrink_sparse_image)
val shrinkMessage = stringResource(id = R.string.shrink_sparse_image_message)
ListItem(
leadingContent = {
Icon(
Icons.Filled.Compress,
shrink
)
},
headlineContent = { Text(shrink) },
modifier = Modifier.clickable {
scope.launch {
val result = shrinkDialog.awaitConfirm(title = shrink, content = shrinkMessage)
if (result == ConfirmResult.Confirmed) {
loadingDialog.withLoading {
shrinkModules()
}
}
}
}
)
}
val lkmMode = Natives.version >= Natives.MINIMAL_SUPPORTED_KERNEL_LKM && Natives.isLkmMode
if (lkmMode) {
UninstallItem(navigator) {
loadingDialog.withLoading(it)
}
}
var showBottomsheet by remember { mutableStateOf(false) }
ListItem(
@@ -452,54 +476,6 @@ fun SettingScreen(navigator: DestinationsNavigator) {
)
}
if (ksuVersion != null) {
val backupRestore = stringResource(id = R.string.backup_restore)
ListItem(
leadingContent = {
Icon(
Icons.Filled.Backup,
backupRestore
)
},
headlineContent = { Text(backupRestore) },
modifier = Modifier.clickable {
navigator.navigate(BackupRestoreScreenDestination)
}
)
}
if (useOverlayFs) {
val shrink = stringResource(id = R.string.shrink_sparse_image)
val shrinkMessage = stringResource(id = R.string.shrink_sparse_image_message)
ListItem(
leadingContent = {
Icon(
Icons.Filled.Compress,
shrink
)
},
headlineContent = { Text(shrink) },
modifier = Modifier.clickable {
scope.launch {
val result = shrinkDialog.awaitConfirm(title = shrink, content = shrinkMessage)
if (result == ConfirmResult.Confirmed) {
loadingDialog.withLoading {
shrinkModules()
}
}
}
}
)
}
val lkmMode = Natives.version >= Natives.MINIMAL_SUPPORTED_KERNEL_LKM && Natives.isLkmMode
if (lkmMode) {
UninstallItem(navigator) {
loadingDialog.withLoading(it)
}
}
val about = stringResource(id = R.string.about)
ListItem(
leadingContent = {
@@ -635,4 +611,4 @@ private fun TopBar(
@Composable
private fun SettingsPreview() {
SettingScreen(EmptyDestinationsNavigator)
}
}

View File

@@ -49,6 +49,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.dropUnlessResumed
import androidx.lifecycle.viewmodel.compose.viewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph
@@ -100,7 +101,7 @@ fun AppProfileTemplateScreen(
}
}
TopBar(
onBack = { navigator.popBackStack() },
onBack = dropUnlessResumed { navigator.popBackStack() },
onSync = {
scope.launch { viewModel.fetchTemplates(true) }
},

View File

@@ -44,6 +44,7 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.lifecycle.compose.dropUnlessResumed
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph
import com.ramcosta.composedestinations.result.ResultBackNavigator
@@ -105,7 +106,7 @@ fun TemplateEditorScreen(
},
readOnly = readOnly,
summary = titleSummary,
onBack = { navigator.navigateBack(result = !readOnly) },
onBack = dropUnlessResumed { navigator.navigateBack(result = !readOnly) },
onDelete = {
if (deleteAppProfileTemplate(template.id)) {
navigator.navigateBack(result = true)

View File

@@ -443,7 +443,7 @@ fun getFileName(context: Context, uri: Uri): String {
fun moduleBackupDir(): String? {
val shell = getRootShell()
val baseBackupDir = "/data/adb/modules_bak"
val baseBackupDir = "/data/adb/ksu/modules_bak"
val resultBase = ShellUtils.fastCmd(shell, "mkdir -p $baseBackupDir").trim()
if (resultBase.isNotEmpty()) return null
@@ -485,12 +485,12 @@ fun moduleMigration(): Boolean {
fun moduleRestore(): Boolean {
val shell = getRootShell()
val command = "ls -t /data/adb/modules_bak | head -n 1"
val command = "ls -t /data/adb/ksu/modules_bak | head -n 1"
val latestBackupDir = ShellUtils.fastCmd(shell, command).trim()
if (latestBackupDir.isEmpty()) return false
val sourceDir = "/data/adb/modules_bak/$latestBackupDir"
val sourceDir = "/data/adb/ksu/modules_bak/$latestBackupDir"
val destinationDir = "/data/adb/modules_update"
val createDestDirCommand = "mkdir -p $destinationDir"
@@ -504,7 +504,7 @@ fun moduleRestore(): Boolean {
fun allowlistBackupDir(): String? {
val shell = getRootShell()
val baseBackupDir = "/data/adb/allowlist_bak"
val baseBackupDir = "/data/adb/ksu/allowlist_bak"
val resultBase = ShellUtils.fastCmd(shell, "mkdir -p $baseBackupDir").trim()
if (resultBase.isNotEmpty()) return null
@@ -538,12 +538,12 @@ fun allowlistBackup(): Boolean {
fun allowlistRestore(): Boolean {
val shell = getRootShell()
val command = "ls -t /data/adb/allowlist_bak | head -n 1"
val command = "ls -t /data/adb/ksu/allowlist_bak | head -n 1"
val latestBackupDir = ShellUtils.fastCmd(shell, command).trim()
if (latestBackupDir.isEmpty()) return false
val sourceDir = "/data/adb/allowlist_bak/$latestBackupDir"
val sourceDir = "/data/adb/ksu/allowlist_bak/$latestBackupDir"
val destinationDir = "/data/adb/ksu/"
val createDestDirCommand = "mkdir -p $destinationDir"
@@ -600,6 +600,13 @@ fun susfsSUS_SU_Mode(): String {
return result
}
fun currentMountSystem(): String {
val shell = getRootShell()
val cmd = "module mount"
val result = ShellUtils.fastCmd(shell, "${getKsuDaemonPath()} $cmd").trim()
return result.substringAfter(":").substringAfter(" ").trim()
}
fun setAppProfileTemplate(id: String, template: String): Boolean {
val shell = getRootShell()
val escapedTemplate = template.replace("\"", "\\\"")

View File

@@ -0,0 +1,197 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="issue_report_title">تواجه مشكلة؟</string>
<string name="issue_report_body">حصل خطأ ما او لديك تعليقات؟</string>
<string name="issue_report_body_2">بلغنا بها على الفور!</string>
<string name="issue_report_github">ابلغنا عن طريق Github</string>
<string name="issue_report_telegram">تواصل من خلال التليجرام</string>
<string name="issue_report_github_link">https://github.com/KernelSU-Next/KernelSU-Next/issues</string>
<string name="issue_report_telegram_link">https://t.me/ksunext</string>
<string name="confirm">تأكيد</string>
<string name="app_name" translatable="false">KernelSU Next</string>
<string name="home">الصفحة الرئيسية</string>
<string name="home_not_installed">غير مثبت</string>
<string name="home_click_to_install">انقر للتثبيت</string>
<string name="home_working">يعمل</string>
<string name="home_working_version">الإصدار: %d</string>
<string name="home_superuser_count">عدد التطبيقات ذات صلاحيات الروت: %d</string>
<string name="home_module_count">عدد الإضافات: %d</string>
<string name="home_failure">توقيع KSU Next v2 غير موجود [ !KSU_NEXT || != size/hash ]</string>
<string name="home_failure_tip">اطلب من مطور بتهيئة KSU Next لجهازك</string>
<string name="home_kernel">اصدار Kernel</string>
<string name="enabled">مفعل</string>
<string name="disabled">معطل</string>
<string name="susfs_supported">مدعوم</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">اصدار SuSFS</string>
<string name="home_susfs_sus_su">SuS SU</string>
<string name="home_android">إصدار الأندرويد</string>
<string name="home_manager_version">اصدار مدير الروت</string>
<string name="home_selinux_status">حالة SELinux</string>
<string name="selinux_status_disabled">معطل</string>
<string name="selinux_status_enforcing">مفعل</string>
<string name="selinux_status_permissive">مرن</string>
<string name="selinux_status_unknown">غير معروف</string>
<string name="superuser">مستخدم خارق</string>
<string name="module_failed_to_enable">فشل في تشغيل إضافة: %s</string>
<string name="module_failed_to_disable">فشل في إيقاف إضافة: %s</string>
<string name="module_empty">لا توجد إضافات مثبته</string>
<string name="module">الإضافة</string>
<string name="module_install_prompt_with_name">الإضافة/ات التالية سيتم تثبيتها: %1$s</string>
<string name="module_sort_a_to_z">تصنيف (أ-ي)</string>
<string name="module_sort_z_to_a">تصنيف (ي-أ)</string>
<string name="uninstall">إلغاء التثبيت</string>
<string name="restore">إستعادة</string>
<string name="module_install">تثبيت</string>
<string name="install">تثبيت</string>
<string name="reboot">إعادة تشغيل</string>
<string name="settings">الإعدادات</string>
<string name="reboot_userspace">إعادة تشغيل سريعة</string>
<string name="reboot_recovery">إعادة التشغيل إلى وضع الريكفري</string>
<string name="reboot_bootloader">إعادة التشغيل إلى وضع bootloader</string>
<string name="reboot_download">إعادة التشغيل إلى وضع التحميل</string>
<string name="reboot_edl">إعادة التشغيل إلى وضع EDL</string>
<string name="about">حول</string>
<string name="module_uninstall_confirm">هل انت متأكد من حذف تلك الإضافة %s؟</string>
<string name="module_uninstall_success">%s تم إلغاء تثبيت</string>
<string name="module_uninstall_failed">فشل في إلغاء تثبيت: %s</string>
<string name="module_restore_confirm">هل انت متأكد من استرجاع الإضافة؟ %s؟</string>
<string name="module_restore_success">%s تم استعادة</string>
<string name="module_restore_failed">فشل استعادة: %s</string>
<string name="module_version">الإصدار</string>
<string name="module_author">المطور</string>
<string name="module_id">ID</string>
<string name="module_version_code">كود الإصدار</string>
<string name="module_update_json">UpdateJson</string>
<string name="module_update_json_empty">فارغ</string>
<string name="enable_developer_options">تفعيل خيارات المطور</string>
<string name="enable_developer_options_summary">عرض الإعدادات المخفية ومعلومات التصحيح ذات الصلة فقط للمطورين.</string>
<string name="module_overlay_fs_not_available">الإضافات غير متاحة حيث أن OverlayFS معطلة بواسطة النواة.</string>
<string name="refresh">تحديث</string>
<string name="show_system_apps">عرض تطبيقات النظام</string>
<string name="hide_system_apps">إخفاء تطبيقات النظام</string>
<string name="export_log">تصدير السجلات</string>
<string name="safe_mode">وضع الأمان</string>
<string name="reboot_to_apply">إعادة التشغيل لتطبيق التغييرات</string>
<string name="module_magisk_conflict">الإضافات غير متاحة بسبب تعارض مع Magisk!</string>
<string name="home_mount_system">نظام الإضافات</string>
<string name="home_magic_mount">Mount السحري</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">غير متاح</string>
<string name="use_overlay_fs">استخدام OverlayFS</string>
<string name="use_overlay_fs_summary">التبديل بين استخدام OverlayFS أو Mount السحري لنظام Mount الخاص بـ KernelSU Next.</string>
<string name="reboot_required">إعادة التشغيل مطلوبة</string>
<string name="reboot_message">ستدخل التغييرات حيز التنفيذ بعد إعادة تشغيل النظام. هل تريد إعادة التشغيل الآن؟</string>
<string name="module_restore">استعادة الإضافة</string>
<string name="module_restore_message">استعادة الإضافات من النسخة الاحتياطية الأخيرة.</string>
<string name="backup_restore">نسخ احتياطي واستعادة</string>
<string name="module_backup">نسخ احتياطي للإضافة</string>
<string name="module_backup_message">نسخ احتياطي للإضافات المثبتة حاليًا.</string>
<string name="allowlist_restore">استعادة القائمة المسموح بها</string>
<string name="allowlist_restore_message">استعادة القائمة المسموح بها من النسخة الاحتياطية الأخيرة.</string>
<string name="allowlist_backup">نسخ احتياطي للقائمة المسموح بها</string>
<string name="allowlist_backup_message">نسخ احتياطي للقائمة المسموح بها المكونة حاليًا.</string>
<string name="warning">تحذير</string>
<string name="warning_message">هذه الميزة لا تزال في مرحلة البيتا وتحت التطوير. يرجى التأكد من عمل نسخة احتياطية من الإضافات الخاصة بك قبل المتابعة. استخدم هذه الميزة فقط إذا كنت تفهم المخاطر المحتملة. أكمل بحذر.</string>
<string name="proceed">تابع</string>
<string name="cancel">إلغاء</string>
<string name="later">لاحقًا</string>
<string name="home_next_kernelsu">🔥 الإصدار التالي</string>
<string name="home_next_kernelsu_repo">https://github.com/KernelSU-Next/KernelSU-Next</string>
<string name="home_next_kernelsu_body">فرع تجريبي قادم. تحقق منه على GitHub!</string>
<string name="home_experimental_kernelsu">⚠️ تجريبي!</string>
<string name="home_experimental_kernelsu_repo">127.0.0.1</string>
<string name="home_experimental_kernelsu_body">KernelSU Next هو إصدار غير رسمي دائمًا تحت التطوير التجريبي النشط. يتم تقديمه كما هو، دون ضمانات للاستقرار أو الأداء أو الموثوقية.</string>
<string name="home_experimental_kernelsu_body_point_1"> • استخدم على مسؤوليتك: قد تحدث أعطال أو سلوك غير متوقع أو مشاكل في النظام.</string>
<string name="home_experimental_kernelsu_body_point_2"> • لا ضمان: المطورون غير مسؤولين عن أي فقدان للبيانات أو تلف النظام أو عواقب أخرى ناتجة عن استخدامه.</string>
<string name="home_experimental_kernelsu_body_point_3"> • لأغراض الاختبار فقط: مخصص للمستخدمين الذين يفهمون المخاطر ويشعرون بالراحة في حل المشكلات.</string>
<string name="about_source_code"><![CDATA[عرض الشيفرة المصدرية في %1$s]]></string>
<string name="profile" translatable="false">ملف التطبيق</string>
<string name="profile_default">افتراضي</string>
<string name="profile_template">قالب</string>
<string name="profile_custom">مخصص</string>
<string name="profile_name">اسم الملف الشخصي</string>
<string name="profile_namespace">مساحة التثبيت</string>
<string name="profile_namespace_inherited">موروث</string>
<string name="profile_namespace_global">عالمي</string>
<string name="profile_namespace_individual">فردي</string>
<string name="profile_groups">المجموعات</string>
<string name="profile_capabilities">القدرات</string>
<string name="profile_selinux_context">سياق SELinux</string>
<string name="profile_umount_modules">إلغاء تثبيت الإضافات</string>
<string name="failed_to_update_app_profile">فشل في تحديث ملف التطبيق لـ %s</string>
<string name="require_kernel_version">إصدار KernelSU Next الحالي %1$d منخفض جدًا لكي يعمل المدير بشكل صحيح. يرجى الترقية إلى الإصدار %2$d أو أعلى!</string>
<string name="settings_umount_modules_default">إلغاء تثبيت الإضافات</string>
<string name="settings_umount_modules_default_summary">القيمة الافتراضية العالمية لـ "إلغاء تثبيت الإضافات" في ملف التطبيق. إذا تم تفعيلها، ستقوم بإزالة جميع التعديلات التي أجرتها الإضافات على النظام للتطبيقات التي لا تحتوي على ملف شخصي محدد.</string>
<string name="settings_susfs_toggle">إخفاء خطافات kprobe</string>
<string name="settings_susfs_toggle_summary">تعطيل خطافات kprobe التي أنشأها ksu، وبدلاً من ذلك، تفعيل الخطافات غير الكروب المدمجة، مما ينفذ نفس الوظائف التي ستطبق على نواة غير GKI، والتي لا تدعم kprobe.</string>
<string name="profile_umount_modules_summary">تفعيل هذا الخيار سيسمح لـ KernelSU Next باستعادة أي ملفات معدلة بواسطة الإضافات لهذا التطبيق.</string>
<string name="profile_selinux_domain">النطاق</string>
<string name="profile_selinux_rules">القواعد</string>
<string name="module_update">تحديث</string>
<string name="module_downloading">جارٍ تنزيل الإضافة: %s</string>
<string name="module_start_downloading">بدء التنزيل: %s</string>
<string name="new_version_available">إصدار جديد %s متاح، انقر للتحديث.</string>
<string name="launch_app">تشغيل</string>
<string name="close">إغلاق</string>
<string name="force_stop_app">إيقاف إجباري</string>
<string name="restart_app">إعادة تشغيل</string>
<string name="failed_to_update_sepolicy">فشل في تحديث قواعد SELinux لـ: %s</string>
<string name="su_not_allowed">لا يُسمح بمنح صلاحيات المستخدم الخارق لـ: %s</string>
<string name="module_changelog">سجل التغييرات</string>
<string name="settings_profile_template">قالب ملف التطبيق</string>
<string name="settings_profile_template_summary">إدارة القالب المحلي وعبر الإنترنت لملف التطبيق</string>
<string name="app_profile_template_create">إنشاء قالب</string>
<string name="app_profile_template_edit">تحرير القالب</string>
<string name="app_profile_template_id">ID</string>
<string name="app_profile_template_id_invalid">معرف القالب غير صالح</string>
<string name="app_profile_template_name">الاسم</string>
<string name="app_profile_template_description">الوصف</string>
<string name="app_profile_template_save">حفظ</string>
<string name="app_profile_template_delete">حذف</string>
<string name="app_profile_template_view">عرض القالب</string>
<string name="app_profile_template_readonly">للقراءة فقط</string>
<string name="app_profile_template_id_exist">معرف القالب موجود بالفعل!</string>
<string name="app_profile_import_export">استيراد/تصدير</string>
<string name="app_profile_import_from_clipboard">استيراد من الحافظة</string>
<string name="app_profile_export_to_clipboard">تصدير إلى الحافظة</string>
<string name="app_profile_template_export_empty">لا يمكن العثور على قالب محلي للتصدير!</string>
<string name="app_profile_template_import_success">تم الاستيراد بنجاح</string>
<string name="app_profile_template_sync">مزامنة القوالب عبر الإنترنت</string>
<string name="app_profile_template_save_failed">فشل في حفظ القالب</string>
<string name="app_profile_template_import_empty">الحافظة فارغة!</string>
<string name="module_changelog_failed">فشل في جلب سجل التغييرات: %s</string>
<string name="settings_check_update">التحقق من التحديث</string>
<string name="settings_check_update_summary">التحقق تلقائيًا من التحديثات عند فتح التطبيق.</string>
<string name="grant_root_failed">فشل في منح صلاحيات الجذر!</string>
<string name="action">إجراء</string>
<string name="open">فتح</string>
<string name="enable_web_debugging">تفعيل تصحيح WebView</string>
<string name="enable_web_debugging_summary">يمكن استخدامه لتصحيح WebUI. يرجى التفعيل فقط عند الحاجة.</string>
<string name="direct_install">التثبيت المباشر (موصى به)</string>
<string name="select_file">اختر ملفًا</string>
<string name="install_inactive_slot">التثبيت في الفتحة غير النشطة (بعد OTA)</string>
<string name="install_inactive_slot_warning">سيتم إجبار جهازك على الإقلاع إلى الفتحة غير النشطة الحالية بعد إعادة التشغيل!\nاستخدم هذا الخيار فقط بعد الانتهاء من OTA.\nهل تريد المتابعة؟</string>
<string name="install_next">التالي</string>
<string name="select_file_tip">%1$s Partition موصى به</string>
<string name="select_kmi">اختر KMI</string>
<string name="shrink_sparse_image">تقليل حجم partition المتناثرة</string>
<string name="shrink_sparse_image_message">إعادة حجم partition حيث توجد الإضافة إلى حجمها الفعلي. لاحظ أن هذا قد يتسبب في عمل الإضافة بشكل غير طبيعي، لذا يرجى استخدامه فقط عند الضرورة (مثل النسخ الاحتياطي).</string>
<string name="settings_uninstall">إلغاء التثبيت</string>
<string name="settings_uninstall_temporary">إلغاء التثبيت مؤقتًا</string>
<string name="settings_uninstall_permanent">إلغاء التثبيت نهائيًا</string>
<string name="settings_restore_stock_image">استعادة الصورة الأصلية</string>
<string name="settings_uninstall_temporary_message">إلغاء تثبيت KernelSU Next مؤقتًا، استعادة الحالة الأصلية بعد إعادة التشغيل التالية.</string>
<string name="settings_uninstall_permanent_message">إلغاء تثبيت KernelSU Next (الجذر وجميع الإضافات) بالكامل ودائمًا.</string>
<string name="settings_restore_stock_image_message">استعادة الصورة الأصلية (إذا كانت النسخة الاحتياطية موجودة)، عادة ما تستخدم قبل OTA؛ إذا كنت بحاجة إلى إلغاء تثبيت KernelSU Next، يرجى استخدام "إلغاء التثبيت نهائيًا".</string>
<string name="flashing">تثبيت</string>
<string name="flash_success">نجح التثبيت</string>
<string name="flash_failed">فشل التثبيت</string>
<string name="selected_lkm">LKM المحدد: %s</string>
<string name="save_log">حفظ السجلات</string>
<string name="log_saved">تم حفظ السجلات</string>
<string name="send_log">مشاركة السجلات</string>
<string name="settings_disable_su">تعطيل توافق su</string>
<string name="settings_disable_su_summary">تعطيل مؤقت لقدرة أي تطبيق على الحصول على صلاحيات الجذر عبر أمر su (لن تتأثر العمليات الجذرية الحالية).</string>
<string name="settings_language">اللغة</string>
</resources>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="issue_report_title">Имате проблем?</string>
<string name="issue_report_body">Открихте грешка или имате обратна връзка?</string>
<string name="issue_report_body_2">Докладвайте я възможно най-скоро!</string>
<string name="issue_report_github">Докладвай в GitHub</string>
<string name="issue_report_telegram">Свържете се чрез Telegram</string>
<string name="issue_report_github_link">https://github.com/KernelSU-Next/KernelSU-Next/issues</string>
<string name="issue_report_telegram_link">https://t.me/ksunext</string>
<string name="confirm">Потвърди</string>
<string name="app_name" translatable="false">KernelSU Next</string>
<string name="home">Начало</string>
<string name="home_not_installed">Не е инсталирано</string>
<string name="home_click_to_install">Натиснете за инсталиране</string>
<string name="home_working">Работи</string>
<string name="home_working_version">Версия: %d</string>
<string name="home_superuser_count">Суперпотребители: %d</string>
<string name="home_module_count">Модули: %d</string>
<string name="home_failure">Не е намерен подпис KernelSU Next v2 в ядрото! [ !KSU_NEXT || != размер/хеш ]</string>
<string name="home_failure_tip">Помолете разработчика на вашето ядро да интегрира KernelSU Next!</string>
<string name="home_kernel">Версия на ядрото</string>
<string name="enabled">Активирано</string>
<string name="disabled">Деактивирано</string>
<string name="susfs_supported">Поддържано</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">Версия на SuSFS</string>
<string name="home_susfs_sus_su">SuS SU</string>
<string name="home_android">Версия на Android</string>
<string name="home_manager_version">Версия на мениджъра</string>
<string name="home_selinux_status">Статус на SELinux</string>
<string name="selinux_status_disabled">Деактивиран</string>
<string name="selinux_status_enforcing">Строг режим</string>
<string name="selinux_status_permissive">Разрешителен режим</string>
<string name="selinux_status_unknown">Неизвестно</string>
<string name="superuser">Суперпотребител</string>
<string name="module_failed_to_enable">Неуспешно активиране на модул: %s</string>
<string name="module_failed_to_disable">Неуспешно деактивиране на модул: %s</string>
<string name="module_empty">Няма инсталирани модули</string>
<string name="module">Модул</string>
<string name="module_install_prompt_with_name">Следните модули ще бъдат инсталирани: %1$s</string>
<string name="module_sort_a_to_z">Сортиране (А-Я)</string>
<string name="module_sort_z_to_a">Сортиране (Я-А)</string>
<string name="uninstall">Деинсталиране</string>
<string name="restore">Възстановяване</string>
<string name="module_install">Инсталиране</string>
<string name="install">Инсталирай</string>
<string name="reboot">Рестартиране</string>
<string name="settings">Настройки</string>
<string name="reboot_userspace">Мек рестарт</string>
<string name="reboot_recovery">Рестарт в Recovery</string>
<string name="reboot_bootloader">Рестарт в Bootloader</string>
<string name="reboot_download">Рестарт в Download</string>
<string name="reboot_edl">Рестарт в EDL</string>
<string name="about">Относно</string>
<string name="module_uninstall_confirm">Сигурни ли сте, че искате да деинсталирате модула %s?</string>
<string name="module_uninstall_success">%s деинсталиран</string>
<string name="module_uninstall_failed">Неуспешно деинсталиране: %s</string>
<string name="module_restore_confirm">Сигурни ли сте, че искате да възстановите модула %s?</string>
<string name="module_restore_success">%s възстановен</string>
<string name="module_restore_failed">Неуспешно възстановяване: %s</string>
<string name="module_version">Версия</string>
<string name="module_author">Автор</string>
<string name="module_id">ID</string>
<string name="module_version_code">Код</string>
<string name="module_update_json">Актуализиране JSON</string>
<string name="module_update_json_empty">Празно</string>
<string name="enable_developer_options">Активиране на опции за разработчици</string>
<string name="enable_developer_options_summary">Показване на скрити настройки и дебъг информация, релевантни само за разработчици.</string>
<string name="module_overlay_fs_not_available">Модулите не са налични, тъй като OverlayFS е деактивиран от ядрото.</string>
<string name="refresh">Обновяване</string>
<string name="show_system_apps">Показване на системни приложения</string>
<string name="hide_system_apps">Скриване на системни приложения</string>
<string name="export_log">Експорт на логове</string>
<string name="safe_mode">Безопасен режим</string>
<string name="reboot_to_apply">Рестартирайте, за да влязат в сила</string>
<string name="module_magisk_conflict">Модулите не са налични поради конфликт с Magisk!</string>
<string name="home_mount_system">Модулна система</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Недостъпно</string>
<string name="use_overlay_fs">Използване на OverlayFS</string>
<string name="use_overlay_fs_summary">Превключване между използването на OverlayFS и Magic Mount за KernelSU Next.</string>
<string name="reboot_required">Необходим е рестарт</string>
<string name="reboot_message">Промените ще влязат в сила след рестарт. Искате ли да рестартирате сега?</string>
</resources>

View File

@@ -71,7 +71,7 @@
<string name="safe_mode">Abgesicherter Modus</string>
<string name="reboot_to_apply">Neustart, um wirksam zu werden</string>
<string name="module_magisk_conflict">Die Module sind aufgrund eines Konflikts mit Magisk nicht verfügbar!</string>
<string name="home_module_mount">Modul system</string>
<string name="home_mount_system">Modul system</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Nicht verfügbar</string>

View File

@@ -29,7 +29,7 @@
<string name="selinux_status_enforcing">Appliqué</string>
<string name="selinux_status_permissive">Permissif</string>
<string name="selinux_status_unknown">Inconnu</string>
<string name="superuser">SuperUtilisateur</string>
<string name="superuser">Super Utilisateur</string>
<string name="module_failed_to_enable">Échec de l\'activation du module: %s</string>
<string name="module_failed_to_disable">Échec de la désactivation du module: %s</string>
<string name="module_empty">Aucun module installé</string>
@@ -46,7 +46,7 @@
<string name="reboot_userspace">Redémarrage logiciel</string>
<string name="reboot_recovery">Redémarrer en mode Recovery</string>
<string name="reboot_bootloader">Redémarrer en mode Bootloader</string>
<string name="reboot_download">Redémarrer sur les Téléchargements</string>
<string name="reboot_download">Redémarrer en mode téléchargement</string>
<string name="reboot_edl">Redémarrer en mode EDL</string>
<string name="about">À propos</string>
<string name="module_uninstall_confirm">Êtes-vous sûr de vouloir désinstaller le module %s?</string>
@@ -54,9 +54,11 @@
<string name="module_uninstall_failed">Échec de la désinstallation: %s</string>
<string name="module_restore_confirm">Êtes-vous sûr de vouloir restaurer le module %s?</string>
<string name="module_restore_success">%s a été restauré</string>
<string name="module_restore_failed">Échec de la restauration: %s</string>
<string name="module_restore_failed">Échec de la restoration: %s</string>
<string name="module_version">Version</string>
<string name="module_author">Auteur</string>
<string name="enable_developer_options">Activer les options pour les développeurs</string>
<string name="enable_developer_options_summary">Afficher des paramètres cachés et des information de débogage seulement utiles pour les développeurs.</string>
<string name="module_overlay_fs_not_available">Les modules sont indisponibles car OverlayFS est désactivé par le kernel.</string>
<string name="refresh">Rafraîchir</string>
<string name="show_system_apps">Montrer les apps système</string>
@@ -65,7 +67,7 @@
<string name="safe_mode">Mode sécurisé</string>
<string name="reboot_to_apply">Redémarrer pour appliquer les changements</string>
<string name="module_magisk_conflict">Les modules sont indisponibles en raison d\'un conflit avec Magisk!</string>
<string name="home_module_mount">Système de module</string>
<string name="home_mount_system">Système de module</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Indisponible</string>
@@ -75,8 +77,13 @@
<string name="reboot_message">Les changements ne seront effectifs qu\'après un redémarrage. Voulez-vous redémarrer maintenant?</string>
<string name="module_restore">Restaurer des modules</string>
<string name="module_restore_message">Restaurer des modules depuis une sauvegarde récente</string>
<string name="backup_restore">Sauvegarde et restoration</string>
<string name="module_backup">Sauvegarder les modules</string>
<string name="module_backup_message">Sauvegarder les modules installés</string>
<string name="allowlist_restore">Restorer la liste d\'autorisation</string>
<string name="allowlist_restore_message">Restorer la liste d\'autorisation depuis une sauvegarde récente ?</string>
<string name="allowlist_backup">Sauvegarder la liste d\'autorisation</string>
<string name="allowlist_backup_message">Sauvegarder la liste d\'autorisation actuelle ?</string>
<string name="warning">Avertissement</string>
<string name="warning_message">Cette fonctionnalité est encore en version bêta et en cours de développement. Veuillez sauvegarder vos modules avant de continuer. Utilisez cette fonctionnalité uniquement si vous comprenez les risques potentiels. Procédez avec prudence.</string>
<string name="proceed">Continuer</string>
@@ -91,7 +98,7 @@
<string name="home_experimental_kernelsu_body_point_1"> • Soyez donc en connaissance des risques : vous pourriez faire face à des crashs, des réactions inattendues ou encore des erreurs système.</string>
<string name="home_experimental_kernelsu_body_point_2"> • Aucune garantie : Les développeurs ne seront tenus responsables d\'aucune perte de données, de dégâts au système ou d\'autres conséquences résultant de l\'utilisation de KernelSU Next.</string>
<string name="home_experimental_kernelsu_body_point_3"> • Uniquement à but de tests : KernelSU Next est prévue pour des utilisateurs avertis, qui comprennent les risques et qui sont à l\'aise avec le fait de localiser un problème.</string>
<string name="about_source_code"><![CDATA[View source code at %1$s]]></string>
<string name="about_source_code"><![CDATA[Voir le code source sur %1$s]]></string>
<string name="profile" translatable="false">Profil d\'application</string>
<string name="profile_default">Par défaut</string>
<string name="profile_template">Modèle</string>
@@ -176,4 +183,6 @@
<string name="save_log">Enregistrer les logs</string>
<string name="log_saved">Logs Enregistrés</string>
<string name="send_log">Partager les logs</string>
<string name="settings_disable_su">Désactiver la compatibilité su</string>
<string name="settings_disable_su_summary">Désactive temporairement la possibilité d\'obtenir les permissions root en utilisant la commande su pour toutes les application (les processus root actifs ne seront pas affectés).</string>
</resources>

View File

@@ -21,12 +21,12 @@
<string name="home_kernel">Kernel</string>
<string name="home_susfs_version">Versi SuSFS</string>
<string name="home_android">Versi Android</string>
<string name="home_manager_version">Versi Manager</string>
<string name="home_manager_version">Versi Manajer</string>
<string name="home_selinux_status">Status SELinux</string>
<string name="selinux_status_disabled">Nonaktif</string>
<string name="selinux_status_enforcing">Enforcing</string>
<string name="selinux_status_permissive">Permissive</string>
<string name="selinux_status_unknown">Unknown</string>
<string name="selinux_status_unknown">Tidak diketahui</string>
<string name="superuser">SuperUser</string>
<string name="module_failed_to_enable">Gagal mengaktifkan modul: %s</string>
<string name="module_failed_to_disable">Gagal menonaktifkan modul: %s</string>
@@ -69,7 +69,7 @@
<string name="safe_mode">Mode aman</string>
<string name="reboot_to_apply">Reboot agar berfungsi</string>
<string name="module_magisk_conflict">Konflik dengan Magisk, fungsi modul ditiadakan!</string>
<string name="home_module_mount">Modul Sistem</string>
<string name="home_mount_system">Modul Sistem</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Tidak Tersedia</string>
@@ -114,8 +114,8 @@
<string name="profile_capabilities">Kemampuan</string>
<string name="profile_selinux_context">SELinux</string>
<string name="profile_umount_modules">Umount Modul</string>
<string name="failed_to_update_app_profile">Gagal membarui Profil pada %s</string>
<string name="require_kernel_version">Versi KernelSU-Next %1$d terlalu rendah agar manajer berfungsi normal. Harap membarui ke versi %2$d atau di atasnya!</string>
<string name="failed_to_update_app_profile">Gagal memperbarui Profil pada %s</string>
<string name="require_kernel_version">Versi KernelSU-Next %1$d terlalu rendah agar manajer berfungsi normal. Harap memperbarui ke versi %2$d atau di atasnya!</string>
<string name="settings_umount_modules_default">Melepas Modul secara bawaan</string>
<string name="settings_umount_modules_default_summary">Menggunakan \"Umount Modul\" secara universal pada Profil Aplikasi. Jika diaktifkan, akan menghapus semua modifikasi sistem untuk aplikasi yang tidak memiliki set profil.</string>
<string name="settings_susfs_toggle">Sembunyikan hook kprobe</string>
@@ -123,15 +123,15 @@
<string name="profile_umount_modules_summary">Aktifkan opsi ini agar KernelSU dapat memulihkan kembali berkas termodifikasi oleh modul pada aplikasi ini.</string>
<string name="profile_selinux_domain">Domain</string>
<string name="profile_selinux_rules">Aturan</string>
<string name="module_update">Membarui</string>
<string name="module_update">Memperbarui</string>
<string name="module_downloading">Mengunduh modul: %s</string>
<string name="module_start_downloading">Mulai mengunduh: %s</string>
<string name="new_version_available">Tersedia versi terbaru %s, Klik untuk membarui.</string>
<string name="new_version_available">Tersedia versi terbaru %s, Klik untuk memperbarui.</string>
<string name="launch_app">Jalankan</string>
<string name="close">Menutup</string>
<string name="force_stop_app">Paksa berhenti</string>
<string name="restart_app">Mulai ulang</string>
<string name="failed_to_update_sepolicy">Gagal membarui aturan SELinux pada: %s</string>
<string name="failed_to_update_sepolicy">Gagal memperbarui aturan SELinux pada: %s</string>
<string name="su_not_allowed">Pemberian superuser tidak diizinkan untuk: %s</string>
<string name="module_changelog">Catatan Perubahan</string>
<string name="settings_profile_template">Templat Profil Aplikasi</string>

View File

@@ -0,0 +1,197 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="issue_report_title">Hai problemi?</string>
<string name="issue_report_body">Hai riscontrato un bug o vuoi inviarci un feedback?</string>
<string name="issue_report_body_2">Segnalacelo il prima possibile!</string>
<string name="issue_report_github">Segnala su GitHub</string>
<string name="issue_report_telegram">Contatto tramite Telegram</string>
<string name="issue_report_github_link">https://github.com/KernelSU-Next/KernelSU-Next/issues</string>
<string name="issue_report_telegram_link">https://t.me/ksunext</string>
<string name="confirm">Confermare</string>
<string name="app_name" translatable="false">KernelSU Next</string>
<string name="home">Home</string>
<string name="home_not_installed">Non installato</string>
<string name="home_click_to_install">Clicca per installare</string>
<string name="home_working">In esecuzione</string>
<string name="home_working_version">Versione: %d</string>
<string name="home_superuser_count">Applicazioni con accesso root: %d</string>
<string name="home_module_count">Moduli: %d</string>
<string name="home_failure">Firma KernelSU Next v2 non trovata nel kernel! [ !KSU_NEXT || != size/hash ]</string>
<string name="home_failure_tip">Chiedi allo sviluppatore del kernel di integrare KernelSU Next!</string>
<string name="home_kernel">Versione Kernel</string>
<string name="enabled">Abilitato</string>
<string name="disabled">Disabilitato</string>
<string name="susfs_supported">Supportato</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">Versione SuSFS</string>
<string name="home_susfs_sus_su">SuS SU</string>
<string name="home_android">Versione Android</string>
<string name="home_manager_version">Versione del manager</string>
<string name="home_selinux_status">Stato di SELinux</string>
<string name="selinux_status_disabled">Disabilitato</string>
<string name="selinux_status_enforcing">Enforcing</string>
<string name="selinux_status_permissive">Permissive</string>
<string name="selinux_status_unknown">Sconosciuto</string>
<string name="superuser">Accesso root</string>
<string name="module_failed_to_enable">Impossibile abilitare il modulo: %s</string>
<string name="module_failed_to_disable">Impossibile disabilitare il modulo: %s</string>
<string name="module_empty">Nessun modulo installato</string>
<string name="module">Modulo</string>
<string name="module_install_prompt_with_name">Verranno installati i seguenti moduli: %1$s</string>
<string name="module_sort_a_to_z">Ordinare (A-Z)</string>
<string name="module_sort_z_to_a">Ordinare (Z-A)</string>
<string name="uninstall">Disinstalla</string>
<string name="restore">Ripristina</string>
<string name="module_install">Installa</string>
<string name="install">Installa</string>
<string name="reboot">Riavvia</string>
<string name="settings">Impostazioni</string>
<string name="reboot_userspace">Riavvio rapido</string>
<string name="reboot_recovery">Riavvia in Recovery</string>
<string name="reboot_bootloader">Riavvia in Bootloader</string>
<string name="reboot_download">Riavvia in Download</string>
<string name="reboot_edl">Riavvia in EDL</string>
<string name="about">Informazioni</string>
<string name="module_uninstall_confirm">Sei sicuro di voler disinstallare il modulo %s?</string>
<string name="module_uninstall_success">%s disinstallato</string>
<string name="module_uninstall_failed">Impossibile disinstallare: %s</string>
<string name="module_restore_confirm">Vuoi davvero ripristinare il modulo %s?</string>
<string name="module_restore_success">%s ripristinato</string>
<string name="module_restore_failed">Impossibile ripristinare: %s</string>
<string name="module_version">Versione</string>
<string name="module_author">Autore</string>
<string name="module_id">ID</string>
<string name="module_version_code">Codice</string>
<string name="module_update_json">UpdateJson</string>
<string name="module_update_json_empty">Vuoto</string>
<string name="enable_developer_options">Abilita le opzioni sviluppatore</string>
<string name="enable_developer_options_summary">Mostra le impostazioni nascoste e le informazioni di debug rilevanti solo per gli sviluppatori.</string>
<string name="module_overlay_fs_not_available">I moduli non sono disponibili in quanto overlayFS è disabilitato dal kernel.</string>
<string name="refresh">Ricarica</string>
<string name="show_system_apps">Mostra app di sistema</string>
<string name="hide_system_apps">Nascondi app di sistema</string>
<string name="export_log">Esportare i registri</string>
<string name="safe_mode">Modalità provvisoria</string>
<string name="reboot_to_apply">Riavvia per applicare la modifica</string>
<string name="module_magisk_conflict">I moduli sono disabilitati perché in conflitto con Magisk!</string>
<string name="home_mount_system">Modulo system</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Non disponibile</string>
<string name="use_overlay_fs">Usa OverlayFS</string>
<string name="use_overlay_fs_summary">Alterna l\'utilizzo di OverlayFS su Magic Mount per il sistema di montaggio di KernelSU Next.</string>
<string name="reboot_required">Riavvio richiesto</string>
<string name="reboot_message">Le modifiche avranno effetto dopo il riavvio del sistema. Vuoi riavviare ora?</string>
<string name="module_restore">Ripristina modulo</string>
<string name="module_restore_message">Ripristina i moduli dal backup recente.</string>
<string name="backup_restore">Backup &amp; Ripristino</string>
<string name="module_backup">Backup modulo</string>
<string name="module_backup_message">Esegui il backup dei moduli attualmente installati.</string>
<string name="allowlist_restore">Ripristina la lista consentita</string>
<string name="allowlist_restore_message">Ripristina la lista consentita dal backup recente.</string>
<string name="allowlist_backup">Backup lista consentita</string>
<string name="allowlist_backup_message">Backup della lista consentita attualmente configurata.</string>
<string name="warning">Avvertimento</string>
<string name="warning_message">Questa funzionalità è ancora in versione beta e in fase di sviluppo. Assicurati di effettuare il backup dei tuoi moduli prima di procedere. Utilizza questa funzionalità solo se ne comprendi i potenziali rischi. Procedi con cautela.</string>
<string name="proceed">Procedere</string>
<string name="cancel">Cancellare</string>
<string name="later">Dopo</string>
<string name="home_next_kernelsu">🔥 Next build</string>
<string name="home_next_kernelsu_repo">https://github.com/KernelSU-Next/KernelSU-Next</string>
<string name="home_next_kernelsu_body">Branch sperimentale di Next. Dai un\'occhiata su GitHub!</string>
<string name="home_experimental_kernelsu">⚠️ Sviluppo sperimentale, attenzione!</string>
<string name="home_experimental_kernelsu_repo">127.0.0.1</string>
<string name="home_experimental_kernelsu_body">KernelSU Next è una versione non ufficiale che è sempre in fase di sviluppo sperimentale attivo. Viene fornita così com\'è, senza garanzie di stabilità, prestazioni o affidabilità.</string>
<string name="home_experimental_kernelsu_body_point_1"> • Usalo a tuo rischio e pericolo: potrebbero verificarsi crash, comportamenti imprevisti o problemi di sistema.</string>
<string name="home_experimental_kernelsu_body_point_2"> • Nessuna garanzia: gli sviluppatori non sono responsabili per eventuali perdite di dati, danni al sistema o altre conseguenze derivanti dal suo utilizzo.</string>
<string name="home_experimental_kernelsu_body_point_3"> • Solo a scopo di test: destinato agli utenti che comprendono i rischi e hanno dimestichezza con la risoluzione dei problemi.</string>
<string name="about_source_code"><![CDATA[Visualizza il codice sorgente su %1$s]]></string>
<string name="profile" translatable="false">Profilo dell\'App</string>
<string name="profile_default">Predefinito</string>
<string name="profile_template">Modello</string>
<string name="profile_custom">Personalizzato</string>
<string name="profile_name">Nome profilo</string>
<string name="profile_namespace">Spazio dei nomi del mount</string>
<string name="profile_namespace_inherited">Ereditato</string>
<string name="profile_namespace_global">Globale</string>
<string name="profile_namespace_individual">Individuale</string>
<string name="profile_groups">Gruppi</string>
<string name="profile_capabilities">Capacità</string>
<string name="profile_selinux_context">Contesto SELinux</string>
<string name="profile_umount_modules">Scollega moduli</string>
<string name="failed_to_update_app_profile">Aggiornamento App Profile per %s fallito</string>
<string name="require_kernel_version">La versione attualmente installata di KernelSU Next %1$d è troppo vecchia ed il gestore non può funzionare correttamente. Si prega di aggiornare alla versione %2$d o successiva!</string>
<string name="settings_umount_modules_default">Scollega moduli</string>
<string name="settings_umount_modules_default_summary">Il valore predefinito per \"Scollega moduli\" in App Profile. Se attivato, rimuoverà tutte le modifiche al sistema da parte dei moduli per le applicazioni che non hanno un profilo impostato.</string>
<string name="settings_susfs_toggle">Nascondi kprobe hooks</string>
<string name="settings_susfs_toggle_summary">Questa opzione disabilita gli hook kprobe creati da ksu e, al loro posto, attiva gli hook non-kprobe incorporati, implementando la stessa funzionalità che verrebbe applicata a un kernel non-GKI, che non supporta kprobe.</string>
<string name="profile_umount_modules_summary">Attivando questa opzione permetterai a KernelSU Next di ripristinare ogni file modificato dai moduli per questa app.</string>
<string name="profile_selinux_domain">Dominio</string>
<string name="profile_selinux_rules">Regole</string>
<string name="module_update">Aggiorna</string>
<string name="module_downloading">Sto scaricando il modulo: %s</string>
<string name="module_start_downloading">Inizia a scaricare: %s</string>
<string name="new_version_available">Nuova versione: %s disponibile, tocca per aggiornare.</string>
<string name="launch_app">Apri</string>
<string name="close">Chiudi</string>
<string name="force_stop_app">Arresto forzato</string>
<string name="restart_app">Riavvia</string>
<string name="failed_to_update_sepolicy">Aggiornamento regole SELinux per %s fallito</string>
<string name="su_not_allowed">Non è consentito concedere i privilegi di superutente per: %s</string>
<string name="module_changelog">Registro aggiornamenti</string>
<string name="settings_profile_template">Modello App Profile</string>
<string name="settings_profile_template_summary">Gestisci il modello locale e online di App Profile</string>
<string name="app_profile_template_create">Crea modello</string>
<string name="app_profile_template_edit">Modifica modello</string>
<string name="app_profile_template_id">ID</string>
<string name="app_profile_template_id_invalid">Modello ID non valido</string>
<string name="app_profile_template_name">Nome</string>
<string name="app_profile_template_description">Descrizione</string>
<string name="app_profile_template_save">Salva</string>
<string name="app_profile_template_delete">Elimina</string>
<string name="app_profile_template_view">Visualizza modello</string>
<string name="app_profile_template_readonly">Sola lettura</string>
<string name="app_profile_template_id_exist">L\'ID del modello è già in uso!</string>
<string name="app_profile_import_export">Importa/Esporta</string>
<string name="app_profile_import_from_clipboard">Importa dagli appunti</string>
<string name="app_profile_export_to_clipboard">Esporta negli appunti</string>
<string name="app_profile_template_export_empty">Impossibile trovare un modello locale da esportare!</string>
<string name="app_profile_template_import_success">Importato con successo</string>
<string name="app_profile_template_sync">Sincronizza modelli online</string>
<string name="app_profile_template_save_failed">Impossibile salvare il modello</string>
<string name="app_profile_template_import_empty">Gli appunti sono vuoti!</string>
<string name="module_changelog_failed">Impossibile reperire il changelog: %s</string>
<string name="settings_check_update">Controlla aggiornamenti</string>
<string name="settings_check_update_summary">Controlla automaticamente gli aggiornamenti all\'apertura dell\'applicazione.</string>
<string name="grant_root_failed">Impossibile ottenere l\'accesso root!</string>
<string name="action">Azione</string>
<string name="open">Apri</string>
<string name="enable_web_debugging">Abilita il debug di WebView</string>
<string name="enable_web_debugging_summary">Può essere usato per il debug di WebUI, è consigliato attivarlo solo quando necessario.</string>
<string name="direct_install">Installazione diretta (Raccomandata)</string>
<string name="select_file">Scegli un file</string>
<string name="install_inactive_slot">Installa nello slot inattivo (dopo OTA)</string>
<string name="install_inactive_slot_warning">Il tuo dispositivo sarà **FORZATO** ad avviarsi nello slot inattivo dopo il riavvio!\nUsa questa opzione solo quando l\'applicazione dell\'aggiornamento OTA è terminata.\nProcedere?</string>
<string name="install_next">Avanti</string>
<string name="select_file_tip">Si consiglia l\'immagine della partizione %1$s</string>
<string name="select_kmi">Scegli il KMI</string>
<string name="shrink_sparse_image">Riduci al minimo l\'immagine sparse</string>
<string name="shrink_sparse_image_message">Ridimensiona l\'immagine sparse dei moduli alla sua reale dimensione. Nota che questo potrebbe causare malfunzionamenti dei moduli, quindi utilizzala solo quando necessario (Come per il backup)).</string>
<string name="settings_uninstall">Disinstalla</string>
<string name="settings_uninstall_temporary">Disinstalla temporaneamente</string>
<string name="settings_uninstall_permanent">Disinstalla permanentemente</string>
<string name="settings_restore_stock_image">Ripristina immagine originale</string>
<string name="settings_uninstall_temporary_message">Disinstalla temporaneamente KernelSU Next, ripristina lo stato originale dopo il prossimo riavvio.</string>
<string name="settings_uninstall_permanent_message">Disinstalla KernelSU Next (root e tutti i moduli) completamente e permanentemente.</string>
<string name="settings_restore_stock_image_message">Ripristina l\'immagine di fabbrica originale (se il backup è presente), solitamente usato prima di applicare l\'OTA; se devi disinstallare KernelSU Next, utilizza invece \"Disinstalla permanentemente\".</string>
<string name="flashing">Installazione</string>
<string name="flash_success">Installazione completata</string>
<string name="flash_failed">Installazione fallita</string>
<string name="selected_lkm">LKM selezionato: %s</string>
<string name="save_log">Salva registri</string>
<string name="log_saved">Registri salvati</string>
<string name="send_log">Invia log</string>
<string name="settings_disable_su">Disabilita la compatibilità su</string>
<string name="settings_disable_su_summary">Disattiva temporaneamente la possibilità per qualsiasi app di ottenere privilegi di root tramite il comando su (i processi di root esistenti non saranno interessati).</string>
<string name="settings_language">Lingua</string>
</resources>

View File

@@ -65,7 +65,7 @@
<string name="safe_mode">セーフモード</string>
<string name="reboot_to_apply">再起動して適用</string>
<string name="module_magisk_conflict">Magiskとの競合により、モジュールは使用できません。</string>
<string name="home_module_mount">モジュールシステム</string>
<string name="home_mount_system">モジュールシステム</string>
<string name="home_magic_mount">Magicマウント</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">利用不可</string>
@@ -176,4 +176,5 @@
<string name="save_log">ログを保存</string>
<string name="log_saved">ログが保存されました</string>
<string name="send_log">ログを共有</string>
<string name="settings_language">言語</string>
</resources>

View File

@@ -19,6 +19,9 @@
<string name="home_failure">KernelSU Next v2 서명이 커널에서 발견되지 않았습니다! [ !KSU_NEXT || != size/hash ]</string>
<string name="home_failure_tip">커널 개발자에게 KernelSU Next 지원을 문의해주십시오!</string>
<string name="home_kernel">커널 버전</string>
<string name="enabled">활성화됨</string>
<string name="disabled">비활성화됨</string>
<string name="susfs_supported">지원됨</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">SuSFS 버전</string>
<string name="home_susfs_sus_su">SuS SU</string>
@@ -71,11 +74,11 @@
<string name="safe_mode">안전 모드</string>
<string name="reboot_to_apply">다시 시작하여 변경 사항 적용</string>
<string name="module_magisk_conflict">Magisk와의 충돌로 모듈을 사용할 수 없습니다.!</string>
<string name="home_module_mount">모듈 마운트 시스템</string>
<string name="home_mount_system">모듈 마운트 시스템</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">이용할 수 없음</string>
<string name="use_overlay_fs">OverlayFS 사용하기 (베타)</string>
<string name="use_overlay_fs">OverlayFS 사용하기</string>
<string name="use_overlay_fs_summary">토글 하여 KernelSU Next의 모듈 마운트 시스템을 Magic Mount와 OverlayFS 간에 전환합니다.</string>
<string name="reboot_required">다시 시작 필요</string>
<string name="reboot_message">시스템을 다시 시작한 후에 변경 사항들이 적용됩니다. 지금 다시 시작하시겠습니까?</string>
@@ -190,4 +193,5 @@
<string name="send_log">로그 보내기</string>
<string name="settings_disable_su">su 호환성 비활성화</string>
<string name="settings_disable_su_summary">su 명령어를 통한 투르 권한 획득을 일시적으로 비활성화 (이미 존재하는 루트 프로세스는 영향을 받지 않음)</string>
<string name="settings_language">언어</string>
</resources>

View File

@@ -1,96 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="issue_report_title">Napotkałeś problem?</string>
<string name="issue_report_body">Znalazłeś błąd lub chcesz zostawić opinię?</string>
<string name="issue_report_body_2">Zgłoś to najszybciej jak to możliwe!</string>
<string name="issue_report_github">Zgłoś na GitHubie</string>
<string name="issue_report_telegram">Skontaktuj się na Telegramie</string>
<string name="issue_report_title">Napotkałeś(-aś) problem?</string>
<string name="issue_report_body">Odnalazłeś(-aś) błąd lub chcesz podzielić się swoją opinią?</string>
<string name="issue_report_body_2">Zgłoś to jak najszybciej!</string>
<string name="issue_report_github">Zgłoś na GitHub</string>
<string name="issue_report_telegram">Skontaktuj się przez Telegram</string>
<string name="issue_report_github_link">https://github.com/KernelSU-Next/KernelSU-Next/issues</string>
<string name="issue_report_telegram_link">https://t.me/ksunext</string>
<string name="confirm">Potwierdź</string>
<string name="app_name" translatable="false">KernelSU Next</string>
<string name="home">Strona główna</string>
<string name="home_not_installed">Nie zainstalowano</string>
<string name="home_not_installed">Niezainstalowany</string>
<string name="home_click_to_install">Kliknij, aby zainstalować</string>
<string name="home_working">Działa</string>
<string name="home_working">Uruchomiony</string>
<string name="home_working_version">Wersja: %d</string>
<string name="home_superuser_count">Superużytkownicy: %d</string>
<string name="home_module_count">Moduły: %d</string>
<string name="home_superuser_count">Superuserów: %d</string>
<string name="home_module_count">Modułów: %d</string>
<string name="home_failure">Nie znaleziono sygnatury KernelSU Next v2 w jądrze! [ !KSU_NEXT || != size/hash ]</string>
<string name="home_failure_tip">Zapytaj swojego dewelopera o integrację z KernelSU Next!</string>
<string name="home_failure_tip">Poproś swojego programistę jądra o integrację KernelSU Next!</string>
<string name="home_kernel">Wersja jądra</string>
<string name="enabled">Aktywny</string>
<string name="disabled">Nieaktywny</string>
<string name="susfs_supported">Obsługiwany</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">Wersja SuSFS</string>
<string name="home_susfs_sus_su">SuS SU</string>
<string name="home_android">Wersja Androida</string>
<string name="home_manager_version">Wersja Managera</string>
<string name="home_manager_version">Wersja managera</string>
<string name="home_selinux_status">Status SELinux</string>
<string name="selinux_status_disabled">Wyłączony</string>
<string name="selinux_status_enforcing">Wymuszony</string>
<string name="selinux_status_permissive">Dozwolony</string>
<string name="selinux_status_enforcing">Enforcing</string>
<string name="selinux_status_permissive">Permissive</string>
<string name="selinux_status_unknown">Nieznany</string>
<string name="superuser">Superużytkownik</string>
<string name="superuser">Superuser</string>
<string name="module_failed_to_enable">Nie udało się włączyć modułu: %s</string>
<string name="module_failed_to_disable">Nie udało się wyłączyć modułu: %s</string>
<string name="module_empty">Nie zainstalowano żadnych modułów</string>
<string name="module_empty">Brak zainstalowanych modułów</string>
<string name="module">Moduły</string>
<string name="module_install_prompt_with_name">Zainstalować moduł %1$s?</string>
<string name="module_install_prompt_with_name">Następujące moduły zostaną zainstalowane: %1$s</string>
<string name="module_sort_a_to_z">Sortuj (A-Z)</string>
<string name="module_sort_z_to_a">Sortuj (Z-A)</string>
<string name="uninstall">Odinstaluj</string>
<string name="restore">Przywróć</string>
<string name="module_install">Zainstaluj</string>
<string name="install">Zainstaluj</string>
<string name="reboot">Uruchom ponownie</string>
<string name="reboot">Reboot (uruchom ponownie)</string>
<string name="settings">Ustawienia</string>
<string name="reboot_userspace">Miękki restart</string>
<string name="reboot_recovery">Restart do trybu Recovery</string>
<string name="reboot_bootloader">Restart do trybu Bootloadera</string>
<string name="reboot_download">Restart do trybu Download</string>
<string name="reboot_edl">Restart do trybu EDL</string>
<string name="about">Autor</string>
<string name="module_uninstall_confirm">Odinstalować moduł %s?</string>
<string name="module_uninstall_success">%s odstalowano</string>
<string name="reboot_userspace">Miękki reboot</string>
<string name="reboot_recovery">Reboot do trybu Recovery</string>
<string name="reboot_bootloader">Reboot do trybu Bootloader</string>
<string name="reboot_download">Reboot do trybu Download</string>
<string name="reboot_edl">Reboot do trybu EDL</string>
<string name="about">O autorze</string>
<string name="module_uninstall_confirm">Czy na pewno chcesz odinstalować moduł %s?</string>
<string name="module_uninstall_success">%s został odinstalowany</string>
<string name="module_uninstall_failed">Nie można odinstalować: %s</string>
<string name="module_restore_confirm">Przywrócić moduł %s?</string>
<string name="module_restore_success">%s przywrócono</string>
<string name="module_restore_confirm">Czy na pewno chcesz przywrócić moduł %s?</string>
<string name="module_restore_success">%s został przywrócony</string>
<string name="module_restore_failed">Nie można przywrócić: %s</string>
<string name="module_version">Wersja</string>
<string name="module_author">Autor</string>
<string name="module_id">ID</string>
<string name="module_version_code">Kod</string>
<string name="module_update_json">UpdateJson</string>
<string name="module_update_json_empty">Brak</string>
<string name="enable_developer_options">Włącz opcje programistyczne</string>
<string name="enable_developer_options_summary">Pokaż ukryte ustawienia i informacje debugowe istotne tylko dla programistów.</string>
<string name="module_overlay_fs_not_available">Moduły są niedostępne, ponieważ OverlayFS jest wyłączony przez jądro.</string>
<string name="refresh">Odśwież</string>
<string name="show_system_apps">Pokaż aplikacje systemowe</string>
<string name="hide_system_apps">Ukryj aplikacje systemowe</string>
<string name="export_log">Eksport logów</string>
<string name="safe_mode">Tryb bezpieczny</string>
<string name="reboot_to_apply">Zrestartuj, aby zastosować zmiany</string>
<string name="module_magisk_conflict">Moduły są niedostępne z powodu konfliku z Magiskiem!</string>
<string name="home_module_mount">Moduł montowania</string>
<string name="export_log">Eksportowanie logów</string>
<string name="safe_mode">Tryb awaryjny</string>
<string name="reboot_to_apply">Uruchom ponownie, aby zastosować zmiany</string>
<string name="module_magisk_conflict">Moduły są niedostępne z powodu konfliku z Magisk!</string>
<string name="home_mount_system">System montowania</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Niedostępne</string>
<string name="use_overlay_fs">Użyj OverlayFS</string>
<string name="use_overlay_fs_summary">Przełącz pomiędzy OverlayFS, a Magic Mount dla modułu montowania.</string>
<string name="reboot_required">Wymagany restart</string>
<string name="reboot_message">Zmiany zostaną zastosowane po restarcie. Uruchomić ponownie?</string>
<string name="module_restore">Przywróć moduły</string>
<string name="module_restore_message">Przywróć moduły z kopii zapasowej.</string>
<string name="module_backup">Kopia zapasowa modułów</string>
<string name="module_backup_message">Kopia zapasowa obecnie zainstalowanych modułów.</string>
<string name="unavailable">Niedostępny</string>
<string name="use_overlay_fs">Używaj OverlayFS</string>
<string name="use_overlay_fs_summary">Przełącz pomiędzy używaniem OverlayFS a Magic Mount jako system montowania KernelSU Next.</string>
<string name="reboot_required">Wymagany reboot</string>
<string name="reboot_message">Zmiany zaczną obowiązywać po restarcie systemu. Czy chcesz teraz uruchomić ponownie system?</string>
<string name="module_restore">Przywróć moduły z kopii zapasowej</string>
<string name="module_restore_message">Przywróć moduły z ostatniej kopii zapasowej.</string>
<string name="backup_restore">Tworzenie / przywracanie kopii zapasowej</string>
<string name="module_backup">Utwórz kopię zapasową modułów</string>
<string name="module_backup_message">Utwórz kopię zapasową obecnie zainstalowanych modułów.</string>
<string name="allowlist_restore">Przywróć listę zgód z kopii zapasowej</string>
<string name="allowlist_restore_message">Przywróć listę zgód z ostatniej kopii zapasowej.</string>
<string name="allowlist_backup">Utwórz kopię zapasową listy zgód</string>
<string name="allowlist_backup_message">Utwórz kopię zapasową obecnie skonfigurowanej listy zgód.</string>
<string name="warning">Uwaga</string>
<string name="warning_message">Ta funkcja jest dalej rozwijana. Upewnij się, że utworzyłeś kopię zapasową. Używaj tej opcji tylko, gdy rozumiesz ryzyko. Zachowaj ostrożność.</string>
<string name="warning_message">Ta funkcja jest nadal w fazie beta i w trakcie rozwoju. Upewnij się, że wykonałeś(-aś) kopię zapasową przed kontynuowaniem. Używaj tej opcji tylko wtedy, gdy rozumiesz potencjalne ryzyko. Zachowaj ostrożność.</string>
<string name="proceed">Dalej</string>
<string name="cancel">Anuluj</string>
<string name="later">Później</string>
<string name="home_next_kernelsu">🔥 Nowa wersja</string>
<string name="home_next_kernelsu">🔥 Kompilacja Next</string>
<string name="home_next_kernelsu_repo">https://github.com/KernelSU-Next/KernelSU-Next</string>
<string name="home_next_kernelsu_body">Nowa wersja eksperymentalna. Sprawdź na GitHubie!</string>
<string name="home_experimental_kernelsu">⚠️ Uwaga to wersja eksperymentalna!</string>
<string name="home_next_kernelsu_body">Eksperymentalna gałąź Next. Sprawdź na GitHub!</string>
<string name="home_experimental_kernelsu">⚠️ Ostrzeżenie dotyczące rozwoju eksperymentalnego!</string>
<string name="home_experimental_kernelsu_repo">127.0.0.1</string>
<string name="home_experimental_kernelsu_body">KernelSU Next to wersja nieoficjalna, która jest w fazie rozwoju. Nie gwarantujemy stabiności, wydajności, czy niezawodności.</string>
<string name="home_experimental_kernelsu_body_point_1"> • Używasz na własne ryzyko: mogą wystąpić problemy.</string>
<string name="home_experimental_kernelsu_body_point_2"> • Brak gwarancji: deweloperzy nie biorą odpowiedzialności za utratę danych i inne niespodziewane skutki.</string>
<string name="home_experimental_kernelsu_body_point_3"> • Tylko dla testerów: przeznaczone dla użytkowników, którzy rozumieją ryzyko i wiedzą co robią.</string>
<string name="home_experimental_kernelsu_body">KernelSU Next to nieoficjalna wersja oprogramowania, które jest stale w fazie eksperymentalnego rozwoju. Jest ono dostarczane w stanie "takim, jak jest", bez gwarancji stabilności, wydajności i niezawodności.</string>
<string name="home_experimental_kernelsu_body_point_1"> • Używasz wyłącznie na własne ryzyko: mogą wystąpić awarie, nieoczekiwane zachowania lub problemy z systemem.</string>
<string name="home_experimental_kernelsu_body_point_2"> • Brak gwarancji: deweloperzy nie ponoszą odpowiedzialności za utratę danych, uszkodzenie systemu ani inne konsekwencje wynikające z jego użytkowania.</string>
<string name="home_experimental_kernelsu_body_point_3"> • Tylko dla celów testowych: przeznaczone dla użytkowników, którzy rozumieją ryzyko i mają doświadczenie w rozwiązywaniu problemów.</string>
<string name="about_source_code"><![CDATA[Zobacz kod źródłowy na %1$s]]></string>
<string name="profile" translatable="false">Profil aplikacji</string>
<string name="profile_default">Domyślny</string>
@@ -98,35 +112,36 @@
<string name="profile_custom">Własny</string>
<string name="profile_name">Nazwa profilu</string>
<string name="profile_namespace">Przestrzeń nazw montowania</string>
<string name="profile_namespace_inherited">Odziedziczona</string>
<string name="profile_namespace_inherited">Dziedziczona</string>
<string name="profile_namespace_global">Globalna</string>
<string name="profile_namespace_individual">Indywidualna</string>
<string name="profile_groups">Grupy</string>
<string name="profile_capabilities">Uprawnienia</string>
<string name="profile_capabilities">Przywileje</string>
<string name="profile_selinux_context">Kontekst SELinux</string>
<string name="profile_umount_modules">Odmontuj moduły</string>
<string name="failed_to_update_app_profile">Nie udało się zaktualizować profilu aplikacji dla %s</string>
<string name="require_kernel_version">Obecna wersja KernelSU Next %1$d jest za niska, aby manager działał prawidłowo. Zaktualizuj do wersji %2$d lub wyższej!</string>
<string name="settings_umount_modules_default">Domyślnie odmontuj moduły</string>
<string name="settings_umount_modules_default_summary">Globalna wartość domyślna opcji \"Odmontuj moduły\" w profilu aplikacji. Jeśli jest włączona, wycofuje wszystkie modyfikacje dokonane przez moduły dla aplikacji, które nie mają ustawionego profilu.</string>
<string name="settings_susfs_toggle">Ukryj kprobe hooks</string>
<string name="settings_susfs_toggle_summary">Wyłącza kprobe hooks tworzone przez ksu i zastępuje je non-kprobe hooks, implementując tę samą funkcjonalność, która byłaby zastosowana w jądrze non-GKI, które nie obsługuje kprobe.</string>
<string name="profile_umount_modules_summary">>Włączenie tej opcji umożliwi KernelSU przywrócenie wszelkich zmodyfikowanych plików przez moduły dla tej aplikacji.</string>
<string name="require_kernel_version">Obecna wersja KernelSU Next %1$d jest zbyt niska, aby manager działał prawidłowo. Zaktualizuj do wersji %2$d lub wyższej!</string>
<string name="settings_umount_modules_default">Odmontuj moduły</string>
<string name="settings_umount_modules_default_summary">Globalna wartość domyślna opcji \"Odmontuj moduły\" w profilu aplikacji. Jeśli jest włączona, usunięte zostaną wszystkie modyfikacje systemowe dokonane przez moduły dla aplikacji, które nie mają ustawionego profilu.</string>
<string name="settings_susfs_toggle">Ukryj hooki kprobe</string>
<string name="settings_susfs_toggle_summary">Ta opcja wyłącza hooki kprobe stworzone przez ksu i zamiast tego aktywuje wbudowane hooki non-kprobe, implementując tę samą funkcjonalność, która byłaby zastosowana w jądrze non-GKI, które nie obsługuje kprobe.</string>
<string name="profile_umount_modules_summary">Włączenie tej opcji umożliwi KernelSU Next przywrócenie wszelkich plików zmodyfikowanych przez moduły dla tej aplikacji.</string>
<string name="profile_selinux_domain">Domena</string>
<string name="profile_selinux_rules">Reguły</string>
<string name="module_update">Zaktualizuj</string>
<string name="module_downloading">Pobieranie modułu: %s</string>
<string name="module_start_downloading">Rozpocznij pobieranie: %s</string>
<string name="new_version_available">Nowa wersja %s jest dostępna. Kliknij, aby zaktualizować.</string>
<string name="new_version_available">Nowa wersja %s jest dostępna, kliknij, aby zaktualizować.</string>
<string name="launch_app">Uruchom</string>
<string name="close">Zamknij</string>
<string name="force_stop_app">Wymuś zatrzymanie</string>
<string name="restart_app">Restartuj</string>
<string name="restart_app">Uruchom ponownie</string>
<string name="failed_to_update_sepolicy">Nie udało się zaktualizować reguł SELinux dla: %s</string>
<string name="module_changelog">Lista zmian</string>
<string name="su_not_allowed">Przyznanie uprawnień superusera nie jest dozwolone dla: %s</string>
<string name="module_changelog">Dziennik zmian</string>
<string name="settings_profile_template">Szablon profilu aplikacji</string>
<string name="settings_profile_template_summary">Zarządzaj lokalnym i internetowym szablonem profilu aplikacji</string>
<string name="app_profile_template_create">Stwórz szablon</string>
<string name="app_profile_template_create">Utwórz szablon</string>
<string name="app_profile_template_edit">Edytuj szablon</string>
<string name="app_profile_template_id">Identyfikator</string>
<string name="app_profile_template_id_invalid">Błędny identyfikator szablonu</string>
@@ -140,35 +155,35 @@
<string name="app_profile_import_export">Importuj/Eksportuj</string>
<string name="app_profile_import_from_clipboard">Importuj ze schowka</string>
<string name="app_profile_export_to_clipboard">Eksportuj do schowka</string>
<string name="app_profile_template_export_empty">Nie można znaleźć lokalnego szablonu do eksportu!</string>
<string name="app_profile_template_export_empty">Nie można znaleźć lokalnego szablonu do wyeksportowania!</string>
<string name="app_profile_template_import_success">Zaimportowano pomyślnie</string>
<string name="app_profile_template_sync">Synchronizuj internetowe szablony</string>
<string name="app_profile_template_save_failed">Nie udało się zapisać szablonu</string>
<string name="app_profile_template_import_empty">Schowek jest pusty!</string>
<string name="module_changelog_failed">Pobranie dziennika zmian nie powiodło się: %s</string>
<string name="settings_check_update">Wyszukaj aktualizacje</string>
<string name="settings_check_update_summary">Wyszukuj aktualizacje automatycznie przy otwieraniu aplikacji</string>
<string name="grant_root_failed">Nie udało się przyznać roota!</string>
<string name="settings_check_update">Sprawdź dostępność aktualizacji</string>
<string name="settings_check_update_summary">Automatycznie sprawdzaj dostępność aktualizacji przy otwieraniu aplikacji.</string>
<string name="grant_root_failed">Nie udało się przyznać uprawnień roota!</string>
<string name="action">Akcja</string>
<string name="open">Otwórz</string>
<string name="enable_web_debugging">Włącz debugowanie WebView</string>
<string name="enable_web_debugging_summary">Może być użyte do debugowania WebUI. Włącz tylko w razie potrzeby.</string>
<string name="direct_install">Instalacja bezpośrednia (zalecane)</string>
<string name="enable_web_debugging_summary">Możesz użyć tej opcji w celu debugowania WebUI. Włącz tylko wtedy, gdy jest to potrzebne.</string>
<string name="direct_install">Zainstaluj bezpośrednio (zalecane)</string>
<string name="select_file">Wybierz plik</string>
<string name="install_inactive_slot">Zainstaluj do nieaktywnego slotu (po aktualizcji OTA)</string>
<string name="install_inactive_slot_warning">Po ponownym uruchomieniu Twoje urządzenie zostanie **ZMUSZONE** do uruchomia się z obecnie nieaktywnego slotu!\nUżyj tej opcji dopiero po zakończeniu aktualizacji OTA.\nCzy chcesz kontynuować?</string>
<string name="install_inactive_slot_warning">Po ponownym uruchomieniu twoje urządzenie zostanie **ZMUSZONE** do rozruchu z aktualnie nieaktywnego slotu!\nUżywaj tej opcji dopiero po ukończeniu aktualizacji OTA.\nCzy chcesz kontynuować?</string>
<string name="install_next">Dalej</string>
<string name="select_file_tip">Obraz partycji %1$s jest zalecany</string>
<string name="select_file_tip">Zalecany jest obraz partycji %1$s</string>
<string name="select_kmi">Wybierz KMI</string>
<string name="shrink_sparse_image">Minimalizuj rozrzedzony (sparse) obraz</string>
<string name="shrink_sparse_image_message">Zmienia rozmiar obrazu rozrzedzonego(sparse), w którym znajduje się moduł, do jego rzeczywistego rozmiaru. Należy pamiętać, że może to spowodować nieprawidłowe działanie modułu, więc należy go używać tylko wtedy, gdy jest to konieczne (np. do tworzenia kopii zapasowych).</string>
<string name="settings_uninstall">Odinstaluj</string>
<string name="shrink_sparse_image">Pomniejsz rozrzedzony obraz (sparse image)</string>
<string name="shrink_sparse_image_message">Zmień rozmiar rozrzedzonego obrazu (sparse image), w którym znajduje się moduł, na jego rzeczywisty rozmiar. Zwróć uwagę, że może to spowodować nieprawidłowe działanie modułu, dlatego używaj tej opcji tylko, gdy jest to konieczne (np. do tworzenia kopii zapasowej).</string>
<string name="settings_uninstall">Odinstalowywanie</string>
<string name="settings_uninstall_temporary">Odinstaluj tymczasowo</string>
<string name="settings_uninstall_permanent">Odinstaluj zupełnie</string>
<string name="settings_uninstall_permanent">Odinstaluj trwale</string>
<string name="settings_restore_stock_image">Przywróć obraz fabryczny</string>
<string name="settings_uninstall_temporary_message">Tymczasowo odinstaluj KernelSU, przywróć do oryginalnego stanu po następnym ponownym uruchomieniu.</string>
<string name="settings_uninstall_permanent_message">Całkowite i trwałe odinstalowanie KernelSU (Root i wszystkich modułów).</string>
<string name="settings_restore_stock_image_message">Przywróć obraz fabryczny (jeśli istnieje kopia zapasowa), zwykle używany przed OTA; jeśli chcesz odinstalować KernelSU, użyj opcji \"Odinstaluj całkowicie\".</string>
<string name="settings_uninstall_temporary_message">Tymczasowe odinstalowanie KernelSU Next, przywraca stan oryginalny po następnym ponownym uruchomieniu.</string>
<string name="settings_uninstall_permanent_message">Całkowite i trwałe odinstalowanie KernelSU Next (Roota oraz wszystkich modułów).</string>
<string name="settings_restore_stock_image_message">Przywracanie obrazu fabrycznego (jeśli kopia zapasowa istnieje), używane zwykle przed aktualizacją OTA; jeśli chcesz odinstalować KernelSU Next, użyj opcji \"Odinstaluj trwale\".</string>
<string name="flashing">Flashowanie</string>
<string name="flash_success">Flashowanie ukończone pomyślnie</string>
<string name="flash_failed">Flashowanie nieudane</string>
@@ -176,4 +191,7 @@
<string name="save_log">Zapisz logi</string>
<string name="log_saved">Logi zapisane</string>
<string name="send_log">Udostępnij logi</string>
<string name="settings_disable_su">Wyłącz funkcjonalność su</string>
<string name="settings_disable_su_summary">Tymczasowo wyłącz możliwość uzyskania uprawnień roota przez dowolną aplikację za pomocą polecenia su (nie będzie to miało wpływu na istniejące procesy roota).</string>
<string name="settings_language">Język</string>
</resources>

View File

@@ -19,6 +19,9 @@
<string name="home_failure">Assinatura KernelSU Next v2 não encontrada no kernel! [ !KSU_NEXT || != size/hash ]</string>
<string name="home_failure_tip">Peça ao seu desenvolvedor de kernel para integrar o KernelSU Next!</string>
<string name="home_kernel">Versão do kernel</string>
<string name="enabled">Ativado</string>
<string name="disabled">Desativado</string>
<string name="susfs_supported">Suportado</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">Versão do SuSFS</string>
<string name="home_susfs_sus_su">SuS SU</string>
@@ -71,7 +74,7 @@
<string name="safe_mode">Modo de segurança</string>
<string name="reboot_to_apply">Reinicie para entrar em vigor</string>
<string name="module_magisk_conflict">Os módulos estão indisponíveis devido a um conflito com Magisk!</string>
<string name="home_module_mount">Sistema de módulos</string>
<string name="home_mount_system">Sistema de montagem</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Indisponível</string>
@@ -190,4 +193,5 @@
<string name="send_log">Compartilhar registros</string>
<string name="settings_disable_su">Desativar compatibilidade su</string>
<string name="settings_disable_su_summary">Desative temporariamente a capacidade de qualquer app obter privilégios root por meio do comando su (processos root existentes não serão afetados).</string>
<string name="settings_language">Idioma</string>
</resources>

View File

@@ -19,6 +19,9 @@
<string name="home_failure">Подпись KernelSU Next v2 не найдена в ядре! [!KSU_NEXT || != size/hash]</string>
<string name="home_failure_tip">Попросите вашего разработчика ядра интегрировать KernelSU Next!</string>
<string name="home_kernel">Версия ядра</string>
<string name="disabled">Отключено</string>
<string name="enabled">Включено</string>
<string name="susfs_supported">Поддерживается</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">Версия SuSFS</string>
<string name="home_susfs_sus_su">SuS SU</string>
@@ -27,14 +30,14 @@
<string name="home_selinux_status">Статус SELinux</string>
<string name="selinux_status_disabled">Отключен</string>
<string name="selinux_status_enforcing">Принудительный</string>
<string name="selinux_status_permissive">Разрешен</string>
<string name="selinux_status_permissive">Разрешающий</string>
<string name="selinux_status_unknown">Неизвестно</string>
<string name="superuser">Superuser</string>
<string name="superuser">SuperUser</string>
<string name="module_failed_to_enable">Не удалось включить модуль: %s</string>
<string name="module_failed_to_disable">Не удалось отключить модуль: %s</string>
<string name="module_empty">Нет установленных модулей</string>
<string name="module">Модули</string>
<string name="module_install_prompt_with_name">Вы хотите продолжить установку модуля %1$s?</string>
<string name="module_install_prompt_with_name">Следующие модуль(и) будут установлены: %1$s</string>
<string name="module_sort_a_to_z">Сортировать (А-Я)</string>
<string name="module_sort_z_to_a">Сортировать (Я-А)</string>
<string name="uninstall">Удалить</string>
@@ -57,6 +60,12 @@
<string name="module_restore_failed">Не удалось восстановить: %s</string>
<string name="module_version">Версия</string>
<string name="module_author">Автор</string>
<string name="module_id">Идентификатор</string>
<string name="module_version_code">Код версии</string>
<string name="module_update_json">UpdateJson</string>
<string name="module_update_json_empty">Пусто</string>
<string name="enable_developer_options">Включить настройки разработчика</string>
<string name="enable_developer_options_summary">Показывать скрытые настройки и отладочную информацию, актуальную только для разработчиков.</string>
<string name="module_overlay_fs_not_available">Модули недоступны, так как OverlayFS отключен ядром.</string>
<string name="refresh">Обновить</string>
<string name="show_system_apps">Показать системные приложения</string>
@@ -65,7 +74,7 @@
<string name="safe_mode">Безопасный режим</string>
<string name="reboot_to_apply">Перезагрузите для применения</string>
<string name="module_magisk_conflict">Модули недоступны из-за конфликта с Magisk!</string>
<string name="home_module_mount">Система модулей</string>
<string name="home_mount_system">Система монтирования модулей</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Недоступно</string>
@@ -75,8 +84,13 @@
<string name="reboot_message">Изменения вступят в силу после перезагрузки системы. Перезагрузить сейчас?</string>
<string name="module_restore">Восстановить модуль</string>
<string name="module_restore_message">Восстановление модулей из последней резервной копии.</string>
<string name="backup_restore">Резервное копирование и восстановление</string>
<string name="module_backup">Резервное копирование модуля</string>
<string name="module_backup_message">Резервное копирование текущих установленных модулей.</string>
<string name="allowlist_restore">Восстановить список разрешений</string>
<string name="allowlist_restore_message">Восстановить список разрешений из последнего резервного копирования.</string>
<string name="allowlist_backup">Создать резервную копию списка разрешений</string>
<string name="allowlist_backup_message">Создать резервную копию текущего списка разрешений.</string>
<string name="warning">Предупреждение</string>
<string name="warning_message">Эта функция всё ещё находится в стадии бета-тестирования. Пожалуйста, убедитесь, что вы создали резервные копии модулей перед использованием. Используйте это только если понимаете возможные риски. Будьте осторожны.</string>
<string name="proceed">Продолжить</string>
@@ -89,7 +103,7 @@
<string name="home_experimental_kernelsu_repo">127.0.0.1</string>
<string name="home_experimental_kernelsu_body">KernelSU Next — это неофициальная версия, которая всегда находится в стадии активной экспериментальной разработки. Она предоставляется как есть, без гарантий стабильности, производительности или надёжности.</string>
<string name="home_experimental_kernelsu_body_point_1"> • Используйте на свой страх и риск: могут возникнуть сбои, непредвиденное поведение или проблемы с системой.</string>
<string name="home_experimental_kernelsu_body_point_2">Нет гарантии: разработчики не несут ответственности за потерю данных, повреждение системы или другие последствия, вызванные использованием.</string>
<string name="home_experimental_kernelsu_body_point_2">Предупреждение: разработчики не несут ответственности за потерю данных, повреждение системы или другие последствия, вызванные использованием.</string>
<string name="home_experimental_kernelsu_body_point_3"> • Только для тестирования: предназначено для пользователей, которые понимают риски и готовы решать возникающие проблемы.</string>
<string name="about_source_code"><![CDATA[Посмотреть исходный код на %1$s]]></string>
<string name="profile" translatable="false">Профиль приложения</string>
@@ -105,12 +119,12 @@
<string name="profile_capabilities">Возможности</string>
<string name="profile_selinux_context">Контекст SELinux</string>
<string name="profile_umount_modules">Отключить модули</string>
<string name="failed_to_update_app_profile">Не удалось обновить Профиль Приложения для %s</string>
<string name="failed_to_update_app_profile">Не удалось обновить профиль приложения для %s</string>
<string name="require_kernel_version">Текущая версия KernelSU Next %1$d слишком низкая для корректной работы менеджера. Пожалуйста, обновитесь до версии %2$d или выше!</string>
<string name="settings_umount_modules_default">Отключать модули по умолчанию</string>
<string name="settings_umount_modules_default">Отмонтировать модули</string>
<string name="settings_umount_modules_default_summary">Глобальное значение по умолчанию для \"Отключить модули\" в профиле приложения. Если включено, это удалит все модификации системы модулями для приложений без установленного профиля.</string>
<string name="settings_susfs_toggle">Скрыть хуки kprobe</string>
<string name="settings_susfs_toggle_summary">Отключает хуки kprobe, созданные ksu, и вместо этого активирует встроенные некрючковые функции, реализующие ту же функциональность для неконечных ядер, которые не поддерживают kprobe.</string>
<string name="settings_susfs_toggle_summary">Отключает хуки kprobe, созданные ksu, и вместо этого активирует встроенные функции, реализующие ту же функциональность для ядер, которые не поддерживают kprobe.</string>
<string name="profile_umount_modules_summary">Включение этой опции позволит KernelSU Next восстанавливать любые изменённые модулями файлы для этого приложения.</string>
<string name="profile_selinux_domain">Домен</string>
<string name="profile_selinux_rules">Правила</string>
@@ -123,8 +137,9 @@
<string name="force_stop_app">Принудительно остановить</string>
<string name="restart_app">Перезапустить</string>
<string name="failed_to_update_sepolicy">Не удалось обновить правила SELinux для: %s</string>
<string name="su_not_allowed">Предоставление прав суперпользователя запрещено для: %s</string>
<string name="module_changelog">Журнал изменений</string>
<string name="settings_profile_template">Шаблон Профиля Приложения</string>
<string name="settings_profile_template">Шаблон профиля приложений</string>
<string name="settings_profile_template_summary">Управление локальными и онлайн-шаблонами профилей приложений</string>
<string name="app_profile_template_create">Создать шаблон</string>
<string name="app_profile_template_edit">Редактировать шаблон</string>
@@ -176,4 +191,6 @@
<string name="save_log">Сохранить логи</string>
<string name="log_saved">Логи сохранены</string>
<string name="send_log">Поделиться логами</string>
<string name="settings_disable_su">Отключить совместимость с su</string>
<string name="settings_disable_su_summary">Временно отключить возможность приложениям получать права root через команду su (существующие сеансы с правами root не будут затронуты).</string>
</resources>

View File

@@ -65,7 +65,7 @@
<string name="safe_mode">โหมดปลอดภัย</string>
<string name="reboot_to_apply">รีบูตเพื่อให้มีผล</string>
<string name="module_magisk_conflict">โมดูลไม่สามารถใช้งานได้ เนื่องจากขัดแย้งกับ Magisk!</string>
<string name="home_module_mount">โมดูลระบบ</string>
<string name="home_mount_system">โมดูลระบบ</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">ไม่สามารถใช้งานได้</string>

View File

@@ -10,15 +10,18 @@
<string name="confirm">Onayla</string>
<string name="app_name" translatable="false">KernelSU Next</string>
<string name="home">Ana Sayfa</string>
<string name="home_not_installed">Yüklenmedi</string>
<string name="home_not_installed">Yüklü değil</string>
<string name="home_click_to_install">Yüklemek için tıklayın</string>
<string name="home_working">Çalışıyor</string>
<string name="home_working_version">Sürüm: %d</string>
<string name="home_superuser_count">Süper kullanıcılar: %d</string>
<string name="home_module_count">Modüller: %d</string>
<string name="home_failure">KernelSU Next v2 imzası çekirdek içinde bulunamadı! [ !KSU_NEXT || != boyut/hash ]</string>
<string name="home_failure_tip">Çekirdek geliştiricinizden KernelSU Next\'i entegre etmesini isteyin!</string>
<string name="home_kernel">Çekirdek sürümü</string>
<string name="home_failure">Kernel\'de KernelSU Next v2 imzası bulunamadı! [ !KSU_NEXT || != boyut/hash ]</string>
<string name="home_failure_tip">Kernel geliştiricinizden KernelSU Next\'i entegre etmesini isteyin!</string>
<string name="home_kernel">Kernel sürümü</string>
<string name="enabled">Etkin</string>
<string name="disabled">Devre dışı</string>
<string name="susfs_supported">Destekleniyor</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">SuSFS sürümü</string>
<string name="home_susfs_sus_su">SuS SU</string>
@@ -26,8 +29,8 @@
<string name="home_manager_version">Yönetici sürümü</string>
<string name="home_selinux_status">SELinux durumu</string>
<string name="selinux_status_disabled">Devre dışı</string>
<string name="selinux_status_enforcing">Zorlanıyor (Enforcing)</string>
<string name="selinux_status_permissive">Serbest (Permissive)</string>
<string name="selinux_status_enforcing">Etkin (Enforcing)</string>
<string name="selinux_status_permissive">Etkin (Permissive)</string>
<string name="selinux_status_unknown">Bilinmiyor</string>
<string name="superuser">SüperKullanıcı</string>
<string name="module_failed_to_enable">Modül etkinleştirilemedi: %s</string>
@@ -44,93 +47,105 @@
<string name="reboot">Yeniden Başlat</string>
<string name="settings">Ayarlar</string>
<string name="reboot_userspace">Yumuşak Yeniden Başlat</string>
<string name="reboot_recovery">Kurtarma Modunda Yeniden Başlat</string>
<string name="reboot_bootloader">Bootloader\'da Yeniden Başlat</string>
<string name="reboot_download">Download Modunda Yeniden Başlat</string>
<string name="reboot_edl">EDL Modunda Yeniden Başlat</string>
<string name="reboot_recovery">Kurtarma Moduna Yeniden Başlat</string>
<string name="reboot_bootloader">Bootloader Moduna Yeniden Başlat</string>
<string name="reboot_download">Download Moduna Yeniden Başlat</string>
<string name="reboot_edl">EDL Moduna Yeniden Başlat</string>
<string name="about">Hakkında</string>
<string name="module_uninstall_confirm">%s modülünü kaldırmak istediğinizden emin misiniz?</string>
<string name="module_uninstall_success">%s kaldırıldı</string>
<string name="module_uninstall_failed">Kaldırma başarısız: %s</string>
<string name="module_uninstall_failed">Kaldırılamadı: %s</string>
<string name="module_restore_confirm">%s modülünü geri yüklemek istediğinizden emin misiniz?</string>
<string name="module_restore_success">%s geri yüklendi</string>
<string name="module_restore_failed">Geri yükleme başarısız: %s</string>
<string name="module_restore_failed">Geri yüklenemedi: %s</string>
<string name="module_version">Sürüm</string>
<string name="module_author">Yazar</string>
<string name="module_overlay_fs_not_available">Modüller kullanılamıyor çünkü OverlayFS çekirdek tarafından devre dışı bırakılmış.</string>
<string name="module_id">ID</string>
<string name="module_version_code">Kod</string>
<string name="module_update_json">GüncellemeJson</string>
<string name="module_update_json_empty">Boş</string>
<string name="enable_developer_options">Geliştirici seçeneklerini etkinleştir</string>
<string name="enable_developer_options_summary">Yalnızca geliştiriciler için geçerli olan gizli ayarları ve hata ayıklama bilgilerini göster.</string>
<string name="module_overlay_fs_not_available">OverlayFS kernel tarafından devre dışı bırakıldığı için modüller kullanılamaz.</string>
<string name="refresh">Yenile</string>
<string name="show_system_apps">Sistem uygulamalarını göster</string>
<string name="hide_system_apps">Sistem uygulamalarını gizle</string>
<string name="export_log">Günlükleri dışa aktar</string>
<string name="export_log">Logları dışa aktar</string>
<string name="safe_mode">Güvenli Mod</string>
<string name="reboot_to_apply">Değişikliklerin etkili olması için yeniden başlatın</string>
<string name="module_magisk_conflict">Modüller Magisk ile çakışma nedeniyle kullanılamıyor!</string>
<string name="home_module_mount">Modül Sistemi</string>
<string name="module_magisk_conflict">Magisk ile çakışma nedeniyle modüller kullanılamıyor!</string>
<string name="home_mount_system">Modül Sistemi</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Kullanılamaz</string>
<string name="use_overlay_fs">OverlayFS Kullan</string>
<string name="use_overlay_fs_summary">KernelSU Next\'in Mount sistemi için OverlayFS ile Magic Mount arasında geçiş yapın.</string>
<string name="reboot_required">Yeniden Başlatma Gerekiyor</string>
<string name="reboot_message">Değişiklikler sistem yeniden başlatıldıktan sonra etkili olacaktır. Şimdi yeniden başlatmak istiyor musunuz?</string>
<string name="use_overlay_fs_summary">KernelSU Next\'in Mount sistemi için OverlayFS ve Magic Mount arasında geçiş yapın.</string>
<string name="reboot_required">Yeniden Başlatmak Gerekiyor</string>
<string name="reboot_message">Değişiklikler, sistemin yeniden başlatılmasından sonra etkili olacak. Şimdi yeniden başlatmak ister misiniz?</string>
<string name="module_restore">Modülleri Geri Yükle</string>
<string name="module_restore_message">Modülleri son yedekten geri yükler.</string>
<string name="backup_restore">Yedekle &amp; Geri Yükle</string>
<string name="module_backup">Modülleri Yedekle</string>
<string name="module_backup_message">Şu anda yüklü olan modülleri yedekler.</string>
<string name="allowlist_restore">İzin verilenleri geri yükle</string>
<string name="allowlist_restore_message">İzin verilenler listesini son yedekten geri yükle.</string>
<string name="allowlist_backup">İzin verilenleri yedekle</string>
<string name="allowlist_backup_message">Mevcut yapılandırılmış izin verilen listesini yedekle.</string>
<string name="warning">Uyarı</string>
<string name="warning_message">Bu özellik hâlâ beta aşamasında ve geliştirilme sürecinde. Lütfen devam etmeden önce modüllerinizi yedeklediğinizden emin olun. Yalnızca bu özelliğin potansiyel risklerini anlıyorsanız kullanın. Dikkatli olun.</string>
<string name="warning_message">Bu özellik hala beta aşamasında ve geliştirme sürecindedir. Lütfen devam etmeden önce modüllerinizi yedekleyin. Bu özelliği yalnızca potansiyel riskleri anladığınızda kullanın. Dikkatli olun.</string>
<string name="proceed">Devam Et</string>
<string name="cancel">İptal</string>
<string name="later">Sonra</string>
<string name="later">Daha Sonra</string>
<string name="home_next_kernelsu">🔥 Yeni Sürüm</string>
<string name="home_next_kernelsu_repo">https://github.com/KernelSU-Next/KernelSU-Next</string>
<string name="home_next_kernelsu_body">Son deneysel dal. GitHub\'da kontrol edin!</string>
<string name="home_experimental_kernelsu">⚠️ Deneysel Geliştirme Uyarısı!</string>
<string name="home_experimental_kernelsu_repo">127.0.0.1</string>
<string name="home_experimental_kernelsu_body">KernelSU Next resmi olmayan bir sürümdür ve her zaman aktif deneysel geliştirme altındadır. Stabilite, performans veya güvenilirlik garantisi verilmez.</string>
<string name="home_experimental_kernelsu_body_point_1"> • Risk aldığınızı bilerek kullanın: Çökme, beklenmeyen davranış veya sistem sorunları olabilir.</string>
<string name="home_experimental_kernelsu_body_point_2"> • Garanti verilmez: geliştiriciler, bunun kullanımı sonucu oluşabilecek veri kaybı, sistem hasarı veya diğer sonuçlardan sorumlu değildir.</string>
<string name="home_experimental_kernelsu_body_point_3">Test amaçlıdır: yalnızca riskleri anlayan ve sorun giderme konusunda rahat olan kullanıcılar için tasarlanmıştır.</string>
<string name="about_source_code"><![CDATA[Kaynak kodu şu adreste görüntüleyin: %1$s]]></string>
<string name="home_experimental_kernelsu_body">KernelSU Next, her zaman aktif deneysel geliştirme aşamasında olan resmi olmayan bir sürümdür. Olduğu gibi sunulur, kararlılık, performans veya güvenilirlik garantisi yoktur.</string>
<string name="home_experimental_kernelsu_body_point_1"> • Risk aldığınızı bilerek kullanın: çökmeler, beklenmeyen davranışlar veya sistem sorunları olabilir.</string>
<string name="home_experimental_kernelsu_body_point_2"> • Garanti verilmez: geliştiriciler, kullanımından kaynaklanan herhangi bir veri kaybı, sistem hasarı veya diğer sonuçlardan sorumlu değildir.</string>
<string name="home_experimental_kernelsu_body_point_3">Yalnızca test amaçlıdır: riskleri anlayan ve sorunları giderebilen kullanıcılar için tasarlanmıştır.</string>
<string name="about_source_code"><![CDATA[Kaynak kodunu şu adreste görüntüleyin: %1$s]]></string>
<string name="profile" translatable="false">Uygulama Profili</string>
<string name="profile_default">Varsayılan</string>
<string name="profile_template">Şablon</string>
<string name="profile_custom">Özel</string>
<string name="profile_name">Profil Adı</string>
<string name="profile_namespace">Ad Alanını Bağla</string>
<string name="profile_namespace_inherited">Kalıtsal</string>
<string name="profile_namespace_global">Küresel</string>
<string name="profile_namespace_inherited">Miras alınan</string>
<string name="profile_namespace_global">Genel</string>
<string name="profile_namespace_individual">Bireysel</string>
<string name="profile_groups">Gruplar</string>
<string name="profile_capabilities">Yetkinlikler</string>
<string name="profile_selinux_context">SELinux Bağlamı</string>
<string name="profile_umount_modules">Modüllerin Bağlantısını kes</string>
<string name="failed_to_update_app_profile">%s için uygulama profili güncellenemedi.</string>
<string name="require_kernel_version">Mevcut KernelSU Next sürümü %1$d, yöneticinin düzgün çalışması için çok düşük. Lütfen sürümü %2$d veya daha yüksek bir sürüme yükseltin!</string>
<string name="failed_to_update_app_profile">%s için Uygulama Profili güncellenemedi</string>
<string name="require_kernel_version">KernelSU Next\'in mevcut sürümü %d, yönetici için yeterli değil. Lütfen sürüm %d veya üstünü yükseltin!</string>
<string name="settings_umount_modules_default">Varsayılan olarak modüllerin bağlantısını kes</string>
<string name="settings_umount_modules_default_summary">Uygulama profilindeki \"Modüllerin bağlantısını kes\" seçeneği için varsayılan değer. Etkinleştirilirse, profil ayarı yapılmamış uygulamalar için modüllerin sistemde yaptığı tüm değişiklikler kaldırılacaktır.</string>
<string name="settings_susfs_toggle">Kprobe kancalarını gizle</string>
<string name="settings_susfs_toggle_summary">Kprobe kancalarını devre dışı bırakır ve bunun yerine gömülü olmayan kancaları etkinleştirir. Bu, kprobe\'yi desteklemeyen bir çekirdek için uygulanacak aynı işlevselliği sağlar.</string>
<string name="profile_umount_modules_summary">Bu seçeneği etkinleştirmek, KernelSU Next\'in bu uygulama için modüller tarafından değiştirilmiş herhangi bir dosyayı geri yüklemesini sağlar.</string>
<string name="profile_selinux_domain">İsim Alanı</string>
<string name="settings_umount_modules_default_summary">Uygulama Profili\'nde \"Modülleri kaldır\" için genel varsayılan değer. Etkinleştirilirse, profil ayarlı olmayan uygulamalar için sistemden tüm modül değişikliklerini kaldırır.</string>
<string name="settings_susfs_toggle">kprobe kancalarını gizle</string>
<string name="settings_susfs_toggle_summary">ksu tarafından oluşturulan kprobe kancalarını devre dışı bırakır ve bunun yerine, GKI olmayan bir çekirdek için uygulanacak aynı işlevselliği sağlayan gömülü kprobe olmayan kancaları etkinleştirir.</string>
<string name="profile_umount_modules_summary">Bu seçeneği etkinleştirmek, KernelSU Next\'in bu uygulama için modüller tarafından değiştirilen herhangi bir dosyayı geri yüklemesine izin verir.</string>
<string name="profile_selinux_domain">Etki Alanı</string>
<string name="profile_selinux_rules">Kurallar</string>
<string name="module_update">Güncelle</string>
<string name="module_downloading">Modül indiriliyor: %s</string>
<string name="module_start_downloading">İndirme başlatılıyor: %s</string>
<string name="new_version_available">Yeni sürüm %s mevcut, güncellemek için tıklayın.</string>
<string name="launch_app">Uygulamayı başlat</string>
<string name="module_start_downloading">İndirmeye başla: %s</string>
<string name="new_version_available">%s sürümü mevcut, yükseltmek için tıklayın.</string>
<string name="launch_app">Başlat</string>
<string name="close">Kapat</string>
<string name="force_stop_app">Uygulamayı durmaya zorla</string>
<string name="restart_app">Uygulamayı yeniden başlat</string>
<string name="force_stop_app">Zorla durdur</string>
<string name="restart_app">Yeniden Başlat</string>
<string name="failed_to_update_sepolicy">%s için SELinux kuralları güncellenemedi.</string>
<string name="su_not_allowed">SüperKullanıcı yetkisi verilemez: %s</string>
<string name="module_changelog">Değişiklik Günlüğü</string>
<string name="settings_profile_template">Uygulama Profili Şablonu</string>
<string name="settings_profile_template_summary">Yerel ve çevrimiçi Uygulama Profili şablonlarını yönetin</string>
<string name="settings_profile_template_summary">Yerel ve çevrimiçi Uygulama Profili Şablonlarını yönetin</string>
<string name="app_profile_template_create">Şablon oluştur</string>
<string name="app_profile_template_edit">Şablonu düzenle</string>
<string name="app_profile_template_id">ID</string>
<string name="app_profile_template_id_invalid">Geçersiz şablon ID\'si</string>
<string name="app_profile_template_name">İsim</string>
<string name="app_profile_template_id_invalid">Geçersiz şablon ID</string>
<string name="app_profile_template_name">Ad</string>
<string name="app_profile_template_description">ıklama</string>
<string name="app_profile_template_save">Kaydet</string>
<string name="app_profile_template_delete">Sil</string>
@@ -139,41 +154,44 @@
<string name="app_profile_template_id_exist">Şablon ID\'si zaten mevcut!</string>
<string name="app_profile_import_export">İçe/Dışa Aktar</string>
<string name="app_profile_import_from_clipboard">Panodan içe aktar</string>
<string name="app_profile_export_to_clipboard">Panoya dışa aktar</string>
<string name="app_profile_export_to_clipboard">Pano\'ya dışa aktar</string>
<string name="app_profile_template_export_empty">Dışa aktarılacak yerel şablon bulunamadı!</string>
<string name="app_profile_template_import_success">Başarıyla içe aktarıldı</string>
<string name="app_profile_template_sync">Çevrimiçi şablonları senkronize et</string>
<string name="app_profile_template_save_failed">Şablon kaydedilemedi</string>
<string name="app_profile_template_import_empty">Pano boş!</string>
<string name="module_changelog_failed">%s için değişiklik günlüğü alınamadı.</string>
<string name="settings_check_update">Güncellemeleri kontrol et</string>
<string name="settings_check_update_summary">Başlangıçta otomatik olarak güncellemeleri kontrol et.</string>
<string name="app_profile_template_import_empty">Panoda hiçbir şey yok!</string>
<string name="module_changelog_failed">Değişiklik günlüğü alınamadı: %s</string>
<string name="settings_check_update">Güncellemeyi kontrol et</string>
<string name="settings_check_update_summary">Uygulama açıldığında otomatik olarak güncellemeleri kontrol et.</string>
<string name="grant_root_failed">Root yetkisi verilemedi!</string>
<string name="action">Eylem</string>
<string name="open"></string>
<string name="enable_web_debugging">WebView hata ayıklamayı etkinleştir</string>
<string name="enable_web_debugging_summary">WebUI\'da hata ayıklamak için kullanılabilir. Lütfen yalnızca gerektiğinde etkinleştirin.</string>
<string name="direct_install">Doğrudan yükleme (Önerilen)</string>
<string name="select_file">Bir dosya seç</string>
<string name="install_inactive_slot">Pasif bölüme yükle (OTA sonrası)</string>
<string name="install_inactive_slot_warning">Cihazınız bir sonraki yeniden başlatmada **ZORUNLU** olarak mevcut pasif bölüme önyükleme yapacaktır!\nBu seçeneği yalnızca OTA işlemi tamamlandıktan sonra kullanın.\nDevam edilsin mi?</string>
<string name="install_next">İleri</string>
<string name="enable_web_debugging">WebView hata ayıklamasını etkinleştir</string>
<string name="enable_web_debugging_summary">WebUI hata ayıklaması için kullanılabilir. Lütfen yalnızca gerekli olduğunda etkinleştirin.</string>
<string name="direct_install">Doğrudan yükle (Önerilen)</string>
<string name="select_file">Bir dosya seçin</string>
<string name="install_inactive_slot">Etkin olmayan yuvaya yükle (OTA sonrası)</string>
<string name="install_inactive_slot_warning">Cihazınız, yeniden başlatma sonrasında **ZORLANACAK** şu anda etkin olmayan yuvaya başlatılacak!\nLütfen bu seçeneği yalnızca OTA tamamlandıktan sonra kullanın.\nDevam edilsin mi?</string>
<string name="install_next">Sonraki</string>
<string name="select_file_tip">%1$s bölüm görüntüsü önerilir</string>
<string name="select_kmi">KMI s</string>
<string name="shrink_sparse_image">Sparse imajını küçült</string>
<string name="shrink_sparse_image_message">Modüllerin bulunduğu sparse imajını gerçek boyutuna yeniden boyutlandırın. Bunun modüllerin anormal çalışmasına neden olabileceğini unutmayın, bu yüzden yalnızca gerektiğinde kullanın (Örneğin yedekleme için).</string>
<string name="select_kmi">KMI S</string>
<string name="shrink_sparse_image">Seyrek görüntüyü küçült</string>
<string name="shrink_sparse_image_message">Modülün bulunduğu seyrek görüntüyü gerçek boyutuna yeniden boyutlandırın. Bu, modülün anormal çalışmasına neden olabilir, bu nedenle lütfen yalnızca gerekli olduğunda kullanın (örneğin, yedekleme için).</string>
<string name="settings_uninstall">Kaldır</string>
<string name="settings_uninstall_temporary">Geçici olarak kaldır</string>
<string name="settings_uninstall_permanent">Kalıcı olarak kaldır</string>
<string name="settings_restore_stock_image">Stok görüntüyü geri yükle</string>
<string name="settings_uninstall_temporary_message">KernelSU Next\'i geçici olarak kaldırın, bir sonraki yeniden başlatmadan sonra orijinal duruma geri döner.</string>
<string name="settings_uninstall_permanent_message">KernelSU Next\'i (Root ve tüm modüller) tamamen ve kalıcı olarak kaldır.</string>
<string name="settings_restore_stock_image_message">Stok fabrika görüntüsünü geri yükle (Eğer bir yedek varsa), genellikle OTA\'dan önce kullanılır; KernelSU Next\'i kaldırmanız gerekiyorsa lütfen \"Kalıcı olarak kaldır\" seçeneğini kullanın.</string>
<string name="settings_restore_stock_image">Fabrika görüntüsünü geri yükle</string>
<string name="settings_uninstall_temporary_message">KernelSU Next\'i geçici olarak kaldırın, sonraki yeniden başlatmadan sonra orijinal duruma dönsün.</string>
<string name="settings_uninstall_permanent_message">KernelSU Next\'i (Root ve tüm modüller) tamamen ve kalıcı olarak kaldırın.</string>
<string name="settings_restore_stock_image_message">Fabrika görüntüsünü geri yükle (bir yedek varsa), genellikle OTA öncesi kullanılır; KernelSU Next\'i kaldırmak istiyorsanız, lütfen \"Kalıcı olarak kaldır\" kullanın.</string>
<string name="flashing">Yükleniyor</string>
<string name="flash_success">Yükleme başarılı</string>
<string name="flash_failed">Yükleme başarısız</string>
<string name="selected_lkm">Seçilen LKM: %s</string>
<string name="save_log">Günlükleri kaydet</string>
<string name="log_saved">Günlükler kaydedildi</string>
<string name="send_log">Günlükleri paylaş</string>
<string name="save_log">Logları kaydet</string>
<string name="log_saved">Loglar kaydedildi</string>
<string name="send_log">Logları paylaş</string>
<string name="settings_disable_su">Su uyumluluğunu devre dışı bırak</string>
<string name="settings_disable_su_summary">Geçici olarak herhangi bir uygulamanın su komutu aracılığıyla kök ayrıcalıkları elde etme yeteneğini devre dışı bırakır (mevcut kök süreçleri etkilenmez).</string>
<string name="settings_language">Dil</string>
</resources>

View File

@@ -10,7 +10,7 @@
<string name="confirm">Xác nhận</string>
<string name="app_name" translatable="false">KernelSU Next</string>
<string name="home">Màn hình chính</string>
<string name="home_not_installed">Chưa cài đặt</string>
<string name="home_not_installed">Hỗ trợ nhưng chưa cài đặt</string>
<string name="home_click_to_install">Bấm để cái đặt</string>
<string name="home_working">Đã cài đặt và hoạt động</string>
<string name="home_working_version">Phiên bản: %d</string>
@@ -19,6 +19,9 @@
<string name="home_failure">Chữ kí KernelSU Next v2 Không dược tìm thấy (chưa cài đặt,nhúng sai cách hoặc nhầm trình quản lý?) [ !KSU_NEXT || != size/hash ]</string>
<string name="home_failure_tip">Hỏi hoặc tự nhúng nhân KernelSU Next vào Kernel của bạn!</string>
<string name="home_kernel">Phiên bản kernel</string>
<string name="enabled">Kích hoạt</string>
<string name="disabled">Vô hiệu hoá</string>
<string name="susfs_supported">hỗ trợ</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">Phiên bản SuSFS</string>
<string name="home_susfs_sus_su">SuS SU</string>
@@ -71,7 +74,7 @@
<string name="safe_mode">CHẾ ĐỘ AN TOÀN!?!?</string>
<string name="reboot_to_apply">Khởi động lại để có hiệu lực</string>
<string name="module_magisk_conflict">Vui lòng gỡ magisk để sử dụng module</string>
<string name="home_module_mount">Module hệ thống</string>
<string name="home_mount_system">Cơ chế mount</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Không có sẵn</string>
@@ -99,8 +102,8 @@
<string name="home_experimental_kernelsu">⚠️ Cảnh báo nhánh thử nghiệm cho nhà phát triển!</string>
<string name="home_experimental_kernelsu_repo">127.0.0.1</string>
<string name="home_experimental_kernelsu_body">KernelSU Next là 1 nhánh của KernelSU luôn có những nhánh thử nghiệm và cập nhật hàng ngày, nó có thể không ổn định</string>
<string name="home_experimental_kernelsu_body_point_1"> • Tự chịu trách nghiệm: crashes, những thứ kì lạ, không vào được 1 vài ứng dụng,... có thể diễn ra.</string>
<string name="home_experimental_kernelsu_body_point_2"> • Không bảo hành: Những nhà phát triển trong KernelSU (Next) và bên ngoài sẽ không chịu trách nghiệm khi hardbrick,bootloop,mất dữ liệu,... .</string>
<string name="home_experimental_kernelsu_body_point_1"> • Tự chịu trách nghiệm: crashes, những thứ kì lạ, không vào được 1 vài ứng dụng(ngân hàng),... có thể diễn ra.</string>
<string name="home_experimental_kernelsu_body_point_2"> • Không bảo hành: Những nhà phát triển trong KernelSU (Next) và bên thứ 3 sẽ không chịu trách nghiệm khi hardbrick,bootloop,mất dữ liệu,... .</string>
<string name="home_experimental_kernelsu_body_point_3"> • Đùng để thử nghiệm là chính: Chỉ dành cho những người có kĩ năng, kinh nghiệm, trải nghiệm .</string>
<string name="about_source_code"><![CDATA[Xem mã nguồn tại %1$s]]></string>
<string name="profile" translatable="false">Hồ sơ ứng dụng</string>
@@ -124,16 +127,17 @@
<string name="settings_susfs_toggle_summary">Tính năng này sẽ vô hiệu hoá những kprobe hooks đã tạo bởi kernelsu và sẽ kích hoạt và nhúng những non-kprobe hooks,đảm bảo những kernel non-GKI(EOL) hoạt động ổn định.</string>
<string name="profile_umount_modules_summary">Kích hoạt tính năng này sẽ tách các ứng dụng chưa cấp hồ sơ riêng và root.</string>
<string name="profile_selinux_domain">Tên miền</string>
<string name="profile_selinux_rules">Luật</string>
<string name="profile_selinux_rules">Quyền</string>
<string name="module_update">Có cập nhật!</string>
<string name="module_downloading">Tải xuống module: %s</string>
<string name="module_start_downloading">Đang tải xuống module: %s</string>
<string name="new_version_available">Phiên bản %s đã ra mắt, bấm để cập nhật.</string>
<string name="launch_app">Mở</string>
<string name="close">Đóng</string>
<string name="force_stop_app">Buc tắt</string>
<string name="force_stop_app">Buc tắt</string>
<string name="restart_app">Khởi động lại</string>
<string name="failed_to_update_sepolicy">Cập nht luật SELinux thất bại cho: %s</string>
<string name="failed_to_update_sepolicy">Cập nht phân quyền SELinux thất bại cho: %s</string>
<string name="su_not_allowed">Cấp quyền SU không được phép cho: %s</string>
<string name="module_changelog">Nhật kí thay đổi</string>
<string name="settings_profile_template">Mẫu hồ sơ ứng dụng</string>
<string name="settings_profile_template_summary">Quản lý/Tải xuống trực tuyến hồ sơ ứng dụng</string>
@@ -187,4 +191,7 @@
<string name="save_log">Lưu logs</string>
<string name="log_saved">Logs đã được lưu</string>
<string name="send_log">Chia sẻ logs</string>
<string name="settings_disable_su">Vô hiệu hoá khả năng của lệnh SU</string>
<string name="settings_disable_su_summary">Vô hiệu hoá khả năng thực thi lệnh SU để lấy quyền root (những app đã cấp trước đó không bị ảnh hưởng).</string>
<string name="settings_language">Ngôn ngữ</string>
</resources>

View File

@@ -71,7 +71,7 @@
<string name="safe_mode">安全模式</string>
<string name="reboot_to_apply">重启生效</string>
<string name="module_magisk_conflict">由于与 Magisk 冲突,模块不可用。</string>
<string name="home_module_mount">模块系统</string>
<string name="home_mount_system">模块系统</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">不可用</string>
@@ -134,6 +134,7 @@
<string name="force_stop_app">强制停止</string>
<string name="restart_app">重新启动</string>
<string name="failed_to_update_sepolicy">为 %s 更新 SELinux 规则失败</string>
<string name="su_not_allowed">拒绝授予%s超级用户权限</string>
<string name="module_changelog">更新日志</string>
<string name="settings_profile_template">App Profile 模板</string>
<string name="settings_profile_template_summary">管理本地和在线的 App Profile 模版</string>
@@ -187,6 +188,7 @@
<string name="save_log">保存日志</string>
<string name="log_saved">日志已保存</string>
<string name="send_log">分享日志</string>
<string name="settings_disable_su">关闭 su 兼容</string>
<string name="settings_disable_su">禁用超级用户指令</string>
<string name="settings_disable_su_summary">临时禁止任何应用通过 su 命令获取 root 权限(已运行的 root 进程不受影响)</string>
<string name="settings_language">语言</string>
</resources>

View File

@@ -19,6 +19,9 @@
<string name="home_failure">內核中未找到 KernelSU Next v2 簽名! [ !KSU_NEXT || != size/hash ]</string>
<string name="home_failure_tip">請讓你的內核開發人員整合 KernelSU Next</string>
<string name="home_kernel">內核版本</string>
<string name="home_susfs">SuSFS%s</string>
<string name="home_susfs_version">SuSFS 版本</string>
<string name="home_susfs_sus_su">SuS SU</string>
<string name="home_android">Android 版本</string>
<string name="home_manager_version">管理器版本</string>
<string name="home_selinux_status">SELinux 狀態</string>
@@ -54,6 +57,12 @@
<string name="module_restore_failed">恢復失敗: %s</string>
<string name="module_version">版本</string>
<string name="module_author">作者</string>
<string name="module_id">模組標識</string>
<string name="module_version_code">模組版本</string>
<string name="module_update_json">更新配置</string>
<string name="module_update_json_empty">無更新配置</string>
<string name="enable_developer_options">啟用開發人員模式</string>
<string name="enable_developer_options_summary">顯示隱藏的開發人員專用設置和調試信息</string>
<string name="module_overlay_fs_not_available">OverlayFS 被內核禁用,模組不可用。</string>
<string name="refresh">刷新</string>
<string name="show_system_apps">顯示系統應用</string>
@@ -62,7 +71,7 @@
<string name="safe_mode">安全模式</string>
<string name="reboot_to_apply">重啟生效</string>
<string name="module_magisk_conflict">由於與 Magisk 有衝突,所有模組不可用!</string>
<string name="home_module_mount">模組系統</string>
<string name="home_mount_system">模組系統</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">不可用</string>
@@ -72,6 +81,11 @@
<string name="reboot_message">更改將在重啟系統後生效。您想現在重啟嗎?</string>
<string name="module_restore">恢復模組</string>
<string name="module_restore_message">從備份中恢復模組。</string>
<string name="backup_restore">備份 &amp; 恢復</string>
<string name="allowlist_restore">恢復超級使用者列表</string>
<string name="allowlist_restore_message">從最近的備份中恢復超級使用者列表</string>
<string name="allowlist_backup">備份超級使用者列表</string>
<string name="allowlist_backup_message">備份當前的超級使用者列表</string>
<string name="module_backup">備份模組</string>
<string name="module_backup_message">備份當前已安裝的模組。</string>
<string name="warning">警告</string>
@@ -106,8 +120,8 @@
<string name="require_kernel_version">當前 KernelSU-Next 版本 %1$d 過低,管理器無法正常工作,請升級內核 KernelSU-Next 版本至 %2$d 或以上!</string>
<string name="settings_umount_modules_default">預設卸載模組</string>
<string name="settings_umount_modules_default_summary">App Profile 中"卸載模組"的全域預設值,如果啟用,將會為沒有設定 Profile 的應用移除所有模組針對系統的修改。</string>
<string name="settings_susfs_toggle">隱藏kprobe鉤子</string>
<string name="settings_susfs_toggle_summary">它禁用由ksu所建立的kprobe鉤子並啟用非kprobe內聯鉤子就如同無法支援kprobenon-gki核心的實現方式。</string>
<string name="settings_susfs_toggle">隱藏 Kprobe 鉤子</string>
<string name="settings_susfs_toggle_summary">它禁用由 KSU 所建立的 kprobe 鉤子,並啟用非 kprobe 內聯鉤子,就如同無法支援 kprobenon-gki 核心的實現方式。</string>
<string name="profile_umount_modules_summary">啟用後將允許 KernelSU-Next 為本應用還原被模組修改過的檔案。</string>
<string name="profile_selinux_domain"></string>
<string name="profile_selinux_rules">規則</string>
@@ -120,6 +134,7 @@
<string name="force_stop_app">強制停止</string>
<string name="restart_app">重新啟動</string>
<string name="failed_to_update_sepolicy">為:%s 更新 SELinux 規則失敗</string>
<string name="su_not_allowed">拒絕授予%s超級使用者權限</string>
<string name="module_changelog">更新日誌</string>
<string name="settings_profile_template">App Profile 模板</string>
<string name="settings_profile_template_summary">管理本地和線上的 App Profile 模板</string>
@@ -173,4 +188,7 @@
<string name="save_log">保存日誌</string>
<string name="log_saved">日誌已保存</string>
<string name="send_log">發送日誌</string>
<string name="settings_disable_su">關閉 SU 相容</string>
<string name="settings_disable_su_summary">暫時禁止任何應用通過 su 命令獲取 root 權限(已運行的 root 進程不受影響)</string>
<string name="settings_language">語言</string>
</resources>

View File

@@ -19,6 +19,9 @@
<string name="home_failure">KernelSU Next v2 signature not found in kernel! [ !KSU_NEXT || != size/hash ]</string>
<string name="home_failure_tip">Ask your kernel developer to integrate KernelSU Next!</string>
<string name="home_kernel">Kernel version</string>
<string name="enabled">Enabled</string>
<string name="disabled">Disabled</string>
<string name="susfs_supported">Supported</string>
<string name="home_susfs">SuSFS: %s</string>
<string name="home_susfs_version">SuSFS version</string>
<string name="home_susfs_sus_su">SuS SU</string>
@@ -71,7 +74,7 @@
<string name="safe_mode">Safe mode</string>
<string name="reboot_to_apply">Reboot to take effect</string>
<string name="module_magisk_conflict">Modules are unavailable due to a conflict with Magisk!</string>
<string name="home_module_mount">Module system</string>
<string name="home_mount_system">Mount system</string>
<string name="home_magic_mount">Magic Mount</string>
<string name="home_overlayfs_mount">OverlayFS</string>
<string name="unavailable">Unavailable</string>
@@ -190,4 +193,5 @@
<string name="send_log">Share logs</string>
<string name="settings_disable_su">Disable su compatibility</string>
<string name="settings_disable_su_summary">Temporarily disable the ability of any app to gain root privileges via the su command (existing root processes won\'t be affected).</string>
<string name="settings_language">Language</string>
</resources>

View File

@@ -1,17 +1,17 @@
[versions]
agp = "8.8.1"
kotlin = "2.1.10"
ksp = "2.1.10-1.0.30"
compose-bom = "2025.02.00"
agp = "8.9.1"
kotlin = "2.1.20"
ksp = "2.1.20-1.0.32"
compose-bom = "2025.03.01"
lifecycle = "2.8.7"
navigation = "2.8.7"
activity-compose = "1.10.0"
navigation = "2.8.9"
activity-compose = "1.10.1"
kotlinx-coroutines = "1.10.1"
coil-compose = "2.7.0"
compose-destination = "2.1.0-beta16"
compose-destination = "2.1.0"
sheets-compose-dialogs = "1.3.0"
markdown = "4.6.2"
webkit = "1.12.1"
webkit = "1.13.0"
appiconloader-coil = "1.5.0"
parcelablelist = "2.0.1"
libsu = "6.0.0"

View File

@@ -55,15 +55,15 @@ checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_log-sys"
version = "0.3.1"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937"
checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d"
[[package]]
name = "android_logger"
version = "0.14.1"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05b07e8e73d720a1f2e4b6014766e6039fd2e96a4fa44e2a78d0e1fa2ff49826"
checksum = "f6f39be698127218cca460cb624878c9aa4e2b47dba3b277963d2bf00bad263b"
dependencies = [
"android_log-sys",
"env_filter",
@@ -131,9 +131,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.96"
version = "1.0.97"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4"
checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
[[package]]
name = "arbitrary"
@@ -146,9 +146,9 @@ dependencies = [
[[package]]
name = "async-trait"
version = "0.1.86"
version = "0.1.88"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d"
checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
dependencies = [
"proc-macro2",
"quote",
@@ -211,15 +211,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
version = "1.10.0"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9"
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
[[package]]
name = "cc"
version = "1.2.15"
version = "1.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af"
checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
dependencies = [
"shlex",
]
@@ -232,23 +232,23 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.39"
version = "0.4.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825"
checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"wasm-bindgen",
"windows-targets",
"windows-link",
]
[[package]]
name = "clap"
version = "4.5.30"
version = "4.5.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d"
checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944"
dependencies = [
"clap_builder",
"clap_derive",
@@ -256,9 +256,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.30"
version = "4.5.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c"
checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9"
dependencies = [
"anstream",
"anstyle",
@@ -268,9 +268,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "4.5.28"
version = "4.5.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed"
checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
dependencies = [
"heck",
"proc-macro2",
@@ -438,9 +438,9 @@ checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b"
[[package]]
name = "deranged"
version = "0.3.11"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
checksum = "28cfac68e08048ae1883171632c2aef3ebc555621ae56fbccce1cbf22dd7f058"
dependencies = [
"powerfmt",
]
@@ -477,22 +477,11 @@ dependencies = [
"crypto-common",
]
[[package]]
name = "displaydoc"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "either"
version = "1.14.0"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "encoding_rs"
@@ -520,9 +509,9 @@ checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe"
[[package]]
name = "env_logger"
version = "0.11.6"
version = "0.11.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0"
checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f"
dependencies = [
"env_filter",
"log",
@@ -584,9 +573,9 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "flate2"
version = "1.1.0"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc"
checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece"
dependencies = [
"crc32fast",
"miniz_oxide",
@@ -613,14 +602,14 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.3.1"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
dependencies = [
"cfg-if",
"libc",
"r-efi",
"wasi",
"windows-targets",
]
[[package]]
@@ -668,14 +657,15 @@ dependencies = [
[[package]]
name = "iana-time-zone"
version = "0.1.61"
version = "0.1.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"log",
"wasm-bindgen",
"windows-core",
]
@@ -714,9 +704,9 @@ dependencies = [
[[package]]
name = "indexmap"
version = "2.7.1"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
dependencies = [
"equivalent",
"hashbrown 0.15.2",
@@ -739,9 +729,9 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]]
name = "itoa"
version = "1.0.14"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "java-properties"
@@ -817,9 +807,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
version = "0.2.170"
version = "0.2.171"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
[[package]]
name = "libflate"
@@ -857,6 +847,12 @@ version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "linux-raw-sys"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
[[package]]
name = "lockfree-object-pool"
version = "0.1.6"
@@ -865,9 +861,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e"
[[package]]
name = "log"
version = "0.4.26"
version = "0.4.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
[[package]]
name = "loopdev"
@@ -888,6 +884,17 @@ dependencies = [
"crc",
]
[[package]]
name = "lzma-sys"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
dependencies = [
"cc",
"libc",
"pkg-config",
]
[[package]]
name = "memchr"
version = "2.7.4"
@@ -938,9 +945,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.20.3"
version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "pin-project-lite"
@@ -948,6 +955,12 @@ version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
[[package]]
name = "pkg-config"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "powerfmt"
version = "0.2.0"
@@ -956,9 +969,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "proc-macro2"
version = "1.0.93"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
dependencies = [
"unicode-ident",
]
@@ -990,13 +1003,19 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.38"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
[[package]]
name = "r-efi"
version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
[[package]]
name = "rayon"
version = "1.10.0"
@@ -1031,9 +1050,9 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
[[package]]
name = "rust-embed"
version = "8.5.0"
version = "8.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa66af4a4fdd5e7ebc276f115e895611a34739a9c1c01028383d612d550953c0"
checksum = "0b3aba5104622db5c9fc61098de54708feb732e7763d7faa2fa625899f00bf6f"
dependencies = [
"include-flate",
"rust-embed-impl",
@@ -1043,9 +1062,9 @@ dependencies = [
[[package]]
name = "rust-embed-impl"
version = "8.5.0"
version = "8.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6125dbc8867951125eec87294137f4e9c2c96566e61bf72c45095a7c77761478"
checksum = "1f198c73be048d2c5aa8e12f7960ad08443e56fd39cc26336719fdb4ea0ebaae"
dependencies = [
"proc-macro2",
"quote",
@@ -1056,9 +1075,9 @@ dependencies = [
[[package]]
name = "rust-embed-utils"
version = "8.5.0"
version = "8.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e5347777e9aacb56039b0e1f28785929a8a3b709e87482e7442c72e7c12529d"
checksum = "5a2fcdc9f40c8dc2922842ca9add611ad19f332227fc651d015881ad1552bd9a"
dependencies = [
"sha2",
"walkdir",
@@ -1079,7 +1098,7 @@ dependencies = [
"errno 0.3.10",
"itoa",
"libc",
"linux-raw-sys",
"linux-raw-sys 0.4.15",
"once_cell",
"windows-sys 0.52.0",
]
@@ -1093,21 +1112,34 @@ dependencies = [
"bitflags 2.8.0",
"errno 0.3.10",
"libc",
"linux-raw-sys",
"linux-raw-sys 0.4.15",
"windows-sys 0.59.0",
]
[[package]]
name = "rustix"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
dependencies = [
"bitflags 2.8.0",
"errno 0.3.10",
"libc",
"linux-raw-sys 0.9.3",
"windows-sys 0.59.0",
]
[[package]]
name = "rustversion"
version = "1.0.19"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
[[package]]
name = "ryu"
version = "1.0.19"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "same-file"
@@ -1120,18 +1152,18 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.218"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.218"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [
"proc-macro2",
"quote",
@@ -1140,9 +1172,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.139"
version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6"
checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
dependencies = [
"itoa",
"memchr",
@@ -1174,9 +1206,9 @@ dependencies = [
[[package]]
name = "sha256"
version = "1.5.0"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18278f6a914fa3070aa316493f7d2ddfb9ac86ebc06fa3b83bffda487e9065b0"
checksum = "f880fc8562bdeb709793f00eb42a2ad0e672c4f883bbe59122b926eca935c8f6"
dependencies = [
"async-trait",
"bytes",
@@ -1205,9 +1237,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
version = "2.0.98"
version = "2.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
dependencies = [
"proc-macro2",
"quote",
@@ -1216,43 +1248,22 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.17.1"
version = "3.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230"
checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
dependencies = [
"cfg-if",
"fastrand",
"getrandom",
"once_cell",
"rustix 0.38.44",
"rustix 1.0.5",
"windows-sys 0.59.0",
]
[[package]]
name = "thiserror"
version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "time"
version = "0.3.37"
version = "0.3.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
dependencies = [
"deranged",
"num-conv",
@@ -1263,15 +1274,15 @@ dependencies = [
[[package]]
name = "time-core"
version = "0.1.2"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
[[package]]
name = "tokio"
version = "1.43.0"
version = "1.44.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e"
checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a"
dependencies = [
"backtrace",
"bytes",
@@ -1286,9 +1297,9 @@ checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
[[package]]
name = "unicode-ident"
version = "1.0.17"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
[[package]]
name = "unicode-width"
@@ -1326,9 +1337,9 @@ dependencies = [
[[package]]
name = "wasi"
version = "0.13.3+wasi-0.2.2"
version = "0.14.2+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
dependencies = [
"wit-bindgen-rt",
]
@@ -1436,11 +1447,61 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-core"
version = "0.52.0"
version = "0.61.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980"
dependencies = [
"windows-targets",
"windows-implement",
"windows-interface",
"windows-link",
"windows-result",
"windows-strings",
]
[[package]]
name = "windows-implement"
version = "0.60.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-interface"
version = "0.59.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-link"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
[[package]]
name = "windows-result"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
dependencies = [
"windows-link",
]
[[package]]
@@ -1533,13 +1594,22 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
[[package]]
name = "wit-bindgen-rt"
version = "0.33.0"
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
"bitflags 2.8.0",
]
[[package]]
name = "xz2"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
dependencies = [
"lzma-sys",
]
[[package]]
name = "zerocopy"
version = "0.7.35"
@@ -1562,21 +1632,20 @@ dependencies = [
[[package]]
name = "zip"
version = "2.2.2"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45"
checksum = "27c03817464f64e23f6f37574b4fdc8cf65925b5bfd2b0f2aedf959791941f88"
dependencies = [
"arbitrary",
"crc32fast",
"crossbeam-utils",
"deflate64",
"displaydoc",
"flate2",
"indexmap",
"lzma-rs",
"memchr",
"thiserror",
"time",
"xz2",
"zopfli",
]

View File

@@ -51,7 +51,7 @@ procfs = "0.17"
loopdev = { git = "https://github.com/Kernel-SU/loopdev" }
[target.'cfg(target_os = "android")'.dependencies]
android_logger = { version = "0.14", default-features = false }
android_logger = { version = "0.15", default-features = false }
[profile.release]
strip = true

View File

@@ -228,6 +228,9 @@ enum Module {
id: String,
},
/// current mount system
Mount,
/// list all modules
List,
}
@@ -313,6 +316,7 @@ pub fn run() -> Result<()> {
Module::Enable { id } => module::enable_module(&id),
Module::Disable { id } => module::disable_module(&id),
Module::Action { id } => module::run_action(&id),
Module::Mount => module::mount_system(),
Module::List => module::list_modules(),
}
}

View File

@@ -42,3 +42,5 @@ pub const BACKUP_FILENAME: &str = "stock_image.sha1";
pub const NO_TMPFS_PATH: &str = concatcp!(WORKING_DIR, ".notmpfs");
pub const NO_MOUNT_PATH: &str = concatcp!(WORKING_DIR, ".nomount");
pub const MOUNT_SYSTEM: &str = "Magic_Mount";

View File

@@ -3,7 +3,7 @@ use crate::module::{handle_updated_modules, prune_modules};
use crate::{assets, defs, ksucalls, restorecon, utils};
use anyhow::{Context, Result};
use log::{info, warn};
use rustix::fs::{mount, MountFlags};
use rustix::fs::{MountFlags, mount};
use std::path::Path;
pub fn on_post_data_fs() -> Result<()> {

View File

@@ -7,17 +7,17 @@ use crate::utils::ensure_dir_exists;
use anyhow::{Context, Result, bail};
use extattr::lgetxattr;
use rustix::fs::{
bind_mount, chmod, chown, mount, move_mount, unmount, Gid, MetadataExt, Mode, MountFlags,
MountPropagationFlags, Uid, UnmountFlags,
Gid, MetadataExt, Mode, MountFlags, MountPropagationFlags, Uid, UnmountFlags, bind_mount,
chmod, chown, mount, move_mount, unmount,
};
use rustix::mount::mount_change;
use rustix::path::Arg;
use std::cmp::PartialEq;
use std::collections::hash_map::Entry;
use std::collections::HashMap;
use std::collections::hash_map::Entry;
use std::fs;
use std::fs::{create_dir, create_dir_all, read_dir, read_link, DirEntry, FileType};
use std::os::unix::fs::{symlink, FileTypeExt};
use std::fs::{DirEntry, FileType, create_dir, create_dir_all, read_dir, read_link};
use std::os::unix::fs::{FileTypeExt, symlink};
use std::path::{Path, PathBuf};
const REPLACE_DIR_XATTR: &str = "trusted.overlay.opaque";

View File

@@ -493,6 +493,12 @@ fn _list_modules(path: &str) -> Vec<HashMap<String, String>> {
modules
}
pub fn mount_system() -> Result<()> {
println!("Current mount system: {}", defs::MOUNT_SYSTEM);
Ok(())
}
pub fn list_modules() -> Result<()> {
let modules = _list_modules(defs::MODULE_DIR);
println!("{}", serde_json::to_string_pretty(&modules)?);

View File

@@ -1,11 +1,11 @@
use anyhow::{bail, Result};
use anyhow::{Result, bail};
use derive_new::new;
use nom::{
AsChar, IResult, Parser,
branch::alt,
bytes::complete::{tag, take_while, take_while1, take_while_m_n},
bytes::complete::{tag, take_while, take_while_m_n, take_while1},
character::complete::{space0, space1},
combinator::map,
AsChar, IResult, Parser,
};
use std::{ffi, path::Path, vec};

View File

@@ -1,6 +1,6 @@
use anyhow::{Context, Error, Ok, Result, bail};
use std::{
fs::{create_dir_all, remove_file, write, File, OpenOptions},
fs::{File, OpenOptions, create_dir_all, remove_file, write},
io::{
ErrorKind::{AlreadyExists, NotFound},
Write,

View File

@@ -55,15 +55,15 @@ checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_log-sys"
version = "0.3.1"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937"
checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d"
[[package]]
name = "android_logger"
version = "0.14.1"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05b07e8e73d720a1f2e4b6014766e6039fd2e96a4fa44e2a78d0e1fa2ff49826"
checksum = "f6f39be698127218cca460cb624878c9aa4e2b47dba3b277963d2bf00bad263b"
dependencies = [
"android_log-sys",
"env_filter",
@@ -131,9 +131,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.96"
version = "1.0.97"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4"
checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
[[package]]
name = "arbitrary"
@@ -146,9 +146,9 @@ dependencies = [
[[package]]
name = "async-trait"
version = "0.1.86"
version = "0.1.88"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d"
checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
dependencies = [
"proc-macro2",
"quote",
@@ -211,15 +211,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
version = "1.10.0"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9"
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
[[package]]
name = "cc"
version = "1.2.15"
version = "1.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af"
checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
dependencies = [
"shlex",
]
@@ -238,23 +238,23 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.39"
version = "0.4.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825"
checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"wasm-bindgen",
"windows-targets",
"windows-link",
]
[[package]]
name = "clap"
version = "4.5.31"
version = "4.5.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767"
checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944"
dependencies = [
"clap_builder",
"clap_derive",
@@ -262,9 +262,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.31"
version = "4.5.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863"
checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9"
dependencies = [
"anstream",
"anstyle",
@@ -274,9 +274,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "4.5.28"
version = "4.5.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed"
checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
dependencies = [
"heck",
"proc-macro2",
@@ -444,9 +444,9 @@ checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b"
[[package]]
name = "deranged"
version = "0.3.11"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
checksum = "28cfac68e08048ae1883171632c2aef3ebc555621ae56fbccce1cbf22dd7f058"
dependencies = [
"powerfmt",
]
@@ -483,22 +483,11 @@ dependencies = [
"crypto-common",
]
[[package]]
name = "displaydoc"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "either"
version = "1.14.0"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "encoding_rs"
@@ -526,9 +515,9 @@ checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe"
[[package]]
name = "env_logger"
version = "0.11.6"
version = "0.11.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0"
checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f"
dependencies = [
"env_filter",
"log",
@@ -590,24 +579,14 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "flate2"
version = "1.1.0"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc"
checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]]
name = "fs4"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be058769cf1633370c3d0dac6bb9b223b8f18900cf808abadf7843192e706238"
dependencies = [
"rustix 0.38.44",
"windows-sys 0.59.0",
]
[[package]]
name = "generic-array"
version = "0.14.7"
@@ -629,14 +608,14 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.3.1"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
dependencies = [
"cfg-if 1.0.0",
"libc",
"r-efi",
"wasi",
"windows-targets",
]
[[package]]
@@ -682,7 +661,7 @@ dependencies = [
"errno 0.2.8",
"libc",
"memmap",
"thiserror 1.0.69",
"thiserror",
"winapi",
]
@@ -697,14 +676,15 @@ dependencies = [
[[package]]
name = "iana-time-zone"
version = "0.1.61"
version = "0.1.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"log",
"wasm-bindgen",
"windows-core",
]
@@ -743,9 +723,9 @@ dependencies = [
[[package]]
name = "indexmap"
version = "2.7.1"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
dependencies = [
"equivalent",
"hashbrown 0.15.2",
@@ -768,9 +748,9 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]]
name = "itoa"
version = "1.0.14"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "java-properties"
@@ -816,7 +796,6 @@ dependencies = [
"encoding_rs",
"env_logger",
"extattr",
"fs4",
"getopts",
"hole-punch",
"humansize",
@@ -848,9 +827,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
version = "0.2.170"
version = "0.2.171"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
[[package]]
name = "libflate"
@@ -888,6 +867,12 @@ version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "linux-raw-sys"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
[[package]]
name = "lockfree-object-pool"
version = "0.1.6"
@@ -896,9 +881,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e"
[[package]]
name = "log"
version = "0.4.26"
version = "0.4.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
[[package]]
name = "loopdev"
@@ -919,6 +904,17 @@ dependencies = [
"crc",
]
[[package]]
name = "lzma-sys"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
dependencies = [
"cc",
"libc",
"pkg-config",
]
[[package]]
name = "memchr"
version = "2.7.4"
@@ -979,9 +975,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.20.3"
version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "pin-project-lite"
@@ -989,6 +985,12 @@ version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
[[package]]
name = "pkg-config"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "powerfmt"
version = "0.2.0"
@@ -997,9 +999,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "proc-macro2"
version = "1.0.93"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
dependencies = [
"unicode-ident",
]
@@ -1031,13 +1033,19 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.38"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
[[package]]
name = "r-efi"
version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
[[package]]
name = "rayon"
version = "1.10.0"
@@ -1072,9 +1080,9 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
[[package]]
name = "rust-embed"
version = "8.5.0"
version = "8.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa66af4a4fdd5e7ebc276f115e895611a34739a9c1c01028383d612d550953c0"
checksum = "0b3aba5104622db5c9fc61098de54708feb732e7763d7faa2fa625899f00bf6f"
dependencies = [
"include-flate",
"rust-embed-impl",
@@ -1084,9 +1092,9 @@ dependencies = [
[[package]]
name = "rust-embed-impl"
version = "8.5.0"
version = "8.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6125dbc8867951125eec87294137f4e9c2c96566e61bf72c45095a7c77761478"
checksum = "1f198c73be048d2c5aa8e12f7960ad08443e56fd39cc26336719fdb4ea0ebaae"
dependencies = [
"proc-macro2",
"quote",
@@ -1097,9 +1105,9 @@ dependencies = [
[[package]]
name = "rust-embed-utils"
version = "8.5.0"
version = "8.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e5347777e9aacb56039b0e1f28785929a8a3b709e87482e7442c72e7c12529d"
checksum = "5a2fcdc9f40c8dc2922842ca9add611ad19f332227fc651d015881ad1552bd9a"
dependencies = [
"sha2",
"walkdir",
@@ -1120,7 +1128,7 @@ dependencies = [
"errno 0.3.10",
"itoa",
"libc",
"linux-raw-sys",
"linux-raw-sys 0.4.15",
"once_cell",
"windows-sys 0.52.0",
]
@@ -1134,21 +1142,34 @@ dependencies = [
"bitflags 2.8.0",
"errno 0.3.10",
"libc",
"linux-raw-sys",
"linux-raw-sys 0.4.15",
"windows-sys 0.59.0",
]
[[package]]
name = "rustix"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
dependencies = [
"bitflags 2.8.0",
"errno 0.3.10",
"libc",
"linux-raw-sys 0.9.3",
"windows-sys 0.59.0",
]
[[package]]
name = "rustversion"
version = "1.0.19"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
[[package]]
name = "ryu"
version = "1.0.19"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "same-file"
@@ -1161,18 +1182,18 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.218"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.218"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [
"proc-macro2",
"quote",
@@ -1181,9 +1202,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.139"
version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6"
checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
dependencies = [
"itoa",
"memchr",
@@ -1215,9 +1236,9 @@ dependencies = [
[[package]]
name = "sha256"
version = "1.5.0"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18278f6a914fa3070aa316493f7d2ddfb9ac86ebc06fa3b83bffda487e9065b0"
checksum = "f880fc8562bdeb709793f00eb42a2ad0e672c4f883bbe59122b926eca935c8f6"
dependencies = [
"async-trait",
"bytes",
@@ -1246,9 +1267,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
version = "2.0.98"
version = "2.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
dependencies = [
"proc-macro2",
"quote",
@@ -1257,15 +1278,14 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.17.1"
version = "3.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230"
checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
dependencies = [
"cfg-if 1.0.0",
"fastrand",
"getrandom",
"once_cell",
"rustix 0.38.44",
"rustix 1.0.5",
"windows-sys 0.59.0",
]
@@ -1275,16 +1295,7 @@ version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl 1.0.69",
]
[[package]]
name = "thiserror"
version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
dependencies = [
"thiserror-impl 2.0.11",
"thiserror-impl",
]
[[package]]
@@ -1298,22 +1309,11 @@ dependencies = [
"syn",
]
[[package]]
name = "thiserror-impl"
version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "time"
version = "0.3.37"
version = "0.3.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
dependencies = [
"deranged",
"num-conv",
@@ -1324,15 +1324,15 @@ dependencies = [
[[package]]
name = "time-core"
version = "0.1.2"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
[[package]]
name = "tokio"
version = "1.43.0"
version = "1.44.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e"
checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a"
dependencies = [
"backtrace",
"bytes",
@@ -1347,9 +1347,9 @@ checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
[[package]]
name = "unicode-ident"
version = "1.0.17"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
[[package]]
name = "unicode-width"
@@ -1387,9 +1387,9 @@ dependencies = [
[[package]]
name = "wasi"
version = "0.13.3+wasi-0.2.2"
version = "0.14.2+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
dependencies = [
"wit-bindgen-rt",
]
@@ -1497,11 +1497,61 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-core"
version = "0.52.0"
version = "0.61.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980"
dependencies = [
"windows-targets",
"windows-implement",
"windows-interface",
"windows-link",
"windows-result",
"windows-strings",
]
[[package]]
name = "windows-implement"
version = "0.60.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-interface"
version = "0.59.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-link"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
[[package]]
name = "windows-result"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
dependencies = [
"windows-link",
]
[[package]]
@@ -1594,13 +1644,22 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
[[package]]
name = "wit-bindgen-rt"
version = "0.33.0"
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
"bitflags 2.8.0",
]
[[package]]
name = "xz2"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
dependencies = [
"lzma-sys",
]
[[package]]
name = "zerocopy"
version = "0.7.35"
@@ -1623,21 +1682,20 @@ dependencies = [
[[package]]
name = "zip"
version = "2.2.2"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45"
checksum = "27c03817464f64e23f6f37574b4fdc8cf65925b5bfd2b0f2aedf959791941f88"
dependencies = [
"arbitrary",
"crc32fast",
"crossbeam-utils",
"deflate64",
"displaydoc",
"flate2",
"indexmap",
"lzma-rs",
"memchr",
"thiserror 2.0.11",
"time",
"xz2",
"zopfli",
]

View File

@@ -41,7 +41,6 @@ tempfile = "3"
chrono = "0.4"
hole-punch = { git = "https://github.com/tiann/hole-punch" }
regex-lite = "0.1"
fs4 = "0.13"
[target.'cfg(any(target_os = "android", target_os = "linux"))'.dependencies]
rustix = { git = "https://github.com/Kernel-SU/rustix.git", branch = "main", features = [
@@ -53,7 +52,7 @@ procfs = "0.17"
loopdev = { git = "https://github.com/Kernel-SU/loopdev" }
[target.'cfg(target_os = "android")'.dependencies]
android_logger = { version = "0.14", default-features = false }
android_logger = { version = "0.15", default-features = false }
[profile.release]
strip = true

View File

@@ -235,6 +235,9 @@ enum Module {
id: String,
},
/// current mount system
Mount,
/// list all modules
List,
@@ -319,6 +322,7 @@ pub fn run() -> Result<()> {
Module::Enable { id } => module::enable_module(&id),
Module::Disable { id } => module::disable_module(&id),
Module::Action { id } => module::run_action(&id),
Module::Mount => module::mount_system(),
Module::List => module::list_modules(),
Module::Shrink => module::shrink_ksu_images(),
}

View File

@@ -44,3 +44,5 @@ pub const VERSION_NAME: &str = include_str!(concat!(env!("OUT_DIR"), "/VERSION_N
pub const KSU_BACKUP_DIR: &str = WORKING_DIR;
pub const KSU_BACKUP_FILE_PREFIX: &str = "ksu_backup_";
pub const BACKUP_FILENAME: &str = "stock_image.sha1";
pub const MOUNT_SYSTEM: &str = "OverlayFS";

View File

@@ -12,7 +12,9 @@ use is_executable::is_executable;
use java_properties::PropertiesIter;
use log::{info, warn};
use std::fs;
use std::fs::OpenOptions;
use std::io;
use std::{
collections::HashMap,
env::var as env_var,
@@ -59,6 +61,7 @@ fn exec_install_script(module_file: &str) -> Result<()> {
.env("KSU_VER_CODE", defs::VERSION_CODE)
.env("OUTFD", "1")
.env("ZIPFILE", realpath)
.env("KSU_OVERLAYFS", "true")
.status()?;
ensure!(result.success(), "Failed to install module script");
Ok(())
@@ -183,6 +186,7 @@ fn exec_script<T: AsRef<Path>>(path: T, wait: bool) -> Result<()> {
.env("KSU_KERNEL_VER_CODE", ksucalls::get_version().to_string())
.env("KSU_VER_CODE", defs::VERSION_CODE)
.env("KSU_VER", defs::VERSION_NAME)
.env("KSU_OVERLAYFS", "true")
.env(
"PATH",
format!(
@@ -376,8 +380,38 @@ fn _install_module(zip: &str) -> Result<()> {
humansize::format_size(zip_uncompressed_size, humansize::DECIMAL)
);
let data_vfs = fs4::statvfs("/data").with_context(|| "Failed to stat /data".to_string())?;
let sparse_image_size = data_vfs.total_space();
fn parse_size(size_str: &str) -> io::Result<u64> {
let size_str = size_str.trim();
if size_str.is_empty() {
return Err(io::Error::new(
io::ErrorKind::InvalidData,
"Empty size string",
));
}
let (num, unit) = size_str.split_at(size_str.len().saturating_sub(1));
let num = u64::from_str(num.trim())
.map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid number"))?;
let multiplier = match unit.to_ascii_uppercase().as_str() {
"G" => 1 << 30,
"M" => 1 << 20,
"K" => 1 << 10,
_ => 1, // Default to bytes if no unit is specified
};
Ok(num * multiplier)
}
fn get_sparse_image_size() -> u64 {
let default_size = 6 << 30; // 6GB
let custom_size_file = "/data/adb/ksu/custom_sparse_size.txt";
match fs::read_to_string(custom_size_file) {
Ok(contents) => match parse_size(&contents) {
Ok(size) => size,
Err(_) => default_size, // Fallback on error
},
Err(_) => default_size, // Fallback if file is missing
}
}
let sparse_image_size = get_sparse_image_size();
if !modules_img_exist && !modules_update_img_exist {
// if no modules and modules_update, it is brand new installation, we should create a new img
// create a tmp module img and mount it to modules_update
@@ -757,6 +791,12 @@ fn _list_modules(path: &str) -> Vec<HashMap<String, String>> {
modules
}
pub fn mount_system() -> Result<()> {
println!("Current mount system: {}", defs::MOUNT_SYSTEM);
Ok(())
}
pub fn list_modules() -> Result<()> {
let modules = _list_modules(defs::MODULE_DIR);
println!("{}", serde_json::to_string_pretty(&modules)?);

View File

@@ -104,10 +104,11 @@ pub fn root_shell() -> Result<()> {
"preserve-environment",
"preserve the entire environment",
);
opts.optflag(
opts.optopt(
"s",
"shell",
"use SHELL instead of the default /system/bin/sh",
"SHELL",
);
opts.optflag("v", "version", "display version number and exit");
opts.optflag("V", "", "display version code and exit");