Pure-Kotlin parsers over the captures the battery already makes, tested against the real archived dumps from both devices - including the Lenovo's 1000000015 route tables (table ids stay strings), the OnePlus's stray uid=2000 prefix and mid-line hoplimit, and an ip_monitor that only ever said EXEC_TIMEOUT. ShizukuProbe now returns three tests; a failed capture is SKIPPED with its reason so no test type silently vanishes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
40 lines
1.3 KiB
Kotlin
40 lines
1.3 KiB
Kotlin
// SPDX-FileCopyrightText: 2026 Echolot contributors
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
plugins {
|
|
// AGP 9 built-in Kotlin (no kotlin.android — see core-probe note).
|
|
alias(libs.plugins.android.library)
|
|
}
|
|
|
|
// The Shizuku (shell-tier) executor + probe. Ported from the validated
|
|
// echolot-prober with the build-4 dual-path fix: bind the UserService when it
|
|
// works (OnePlus), fall back to the legacy newProcess API when it doesn't
|
|
// (Lenovo). Emits a core-measurement Test.
|
|
android {
|
|
namespace = "app.echo_lot.shizuku"
|
|
compileSdk = 36
|
|
|
|
defaultConfig {
|
|
minSdk = 26
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
buildFeatures {
|
|
aidl = true // IUserService
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation(project(":core-measurement"))
|
|
implementation(libs.shizuku.api)
|
|
implementation(libs.shizuku.provider)
|
|
implementation(libs.kotlinx.coroutines.android)
|
|
implementation(libs.kotlinx.serialization.json)
|
|
// JVM unit tests for the pure dump parsers (DumpParsers.kt) against the archived
|
|
// vendor fixtures — no device, no Android runtime.
|
|
testImplementation(libs.kotlin.test.junit)
|
|
testImplementation(libs.junit4)
|
|
}
|