First assembling build of the production app. Android toolchain mirrors the prober (AGP 9 built-in Kotlin; applying kotlin.android too double-registers the kotlin extension — the one gotcha). core-probe (Android lib): Probe→core-measurement Test abstraction; NetworkInventory (LinkProperties→networks[]), LinkSnapshotProbe, per-network IcmpProbe (ported from the prober's validated logic). app (Compose): RunViewModel orchestrates probes into a MeasurementDocument with a §7.3 summary + first-pass findings; UI renders traffic lights, networks, tests, findings; JSON export. Rotation-safe (ViewModel). App-tier only; server-facing (core-engine) + Shizuku are additive follow-ups. Debug APK 9.5 MB, assembles clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
32 lines
989 B
Kotlin
32 lines
989 B
Kotlin
// SPDX-FileCopyrightText: 2026 Echolot contributors
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
plugins {
|
|
// AGP 9 has built-in Kotlin — do NOT also apply kotlin.android (double-registers
|
|
// the `kotlin` extension). Only the serialization compiler plugin is added.
|
|
alias(libs.plugins.android.library)
|
|
alias(libs.plugins.kotlin.serialization)
|
|
}
|
|
|
|
// Device-tier probes (Android platform APIs), emitting core-measurement Test
|
|
// objects. Ported/adapted from the validated echolot-prober. minSdk 26 to
|
|
// match the prober and the feasibility findings.
|
|
android {
|
|
namespace = "app.echo_lot.probe"
|
|
compileSdk = 36
|
|
|
|
defaultConfig {
|
|
minSdk = 26
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation(project(":core-measurement"))
|
|
implementation(libs.kotlinx.serialization.json)
|
|
implementation(libs.kotlinx.coroutines.android)
|
|
}
|