halkyon/apps/train/halkyon_train_flutter/android/app/build.gradle.kts

72 lines
3 KiB
Kotlin
Raw Normal View History

plugins {
id("com.android.application")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id("dev.flutter.flutter-gradle-plugin")
}
android {
namespace = "app.halkyon.train"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "app.halkyon.train"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
// Android 8: Health Connect's client needs it (ADR 0030, D31).
minSdk = 26
targetSdk = flutter.targetSdkVersion
// Uses the version code from pubspec.yaml. When using split APKs, 1000 * ABI_VERSION
// is added automatically by Flutter. (https://developer.android.com/studio/build/configure-apk-splits#configure-APK-versions)
// You can force using the value of versionCode by specifying the `-P force-version-code-ignoring-abi=true`
// flag during build.
versionCode = flutter.versionCode
versionName = flutter.versionName
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.getByName("debug")
}
}
}
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}
flutter {
source = "../.."
}
dependencies {
// NotificationCompat and ServiceCompat for the recording's foreground service,
// the version Learn's build uses.
implementation("androidx.core:core:1.18.0")
// Health Connect (ADR 0030, D30, D31): AndroidX's client, no Play services.
implementation("androidx.health.connect:connect-client:1.1.0")
// The Polar Loop (ADR 0030, D32, D34): Polar's BLE SDK, under Polar's licence.
implementation("com.github.polarofficial:polar-ble-sdk:8.3.0")
// The protobuf runtime the SDK brings at run time, at its version, to read
// the training sessions it gives as Polar's messages (ADR 0030, D39).
compileOnly("com.google.protobuf:protobuf-javalite:3.20.0")
testImplementation("com.google.protobuf:protobuf-javalite:3.20.0")
// The Loop read every few hours while Train is closed (ADR 0030, D37).
implementation("androidx.work:work-runtime-ktx:2.10.1")
feat(train): music by cadence in a recording, or the metronome (ADR 0030, D48) A workout keeps its cadence as a series of its own (steps a minute, every 10 s while moving). The Record sheet offers Music, Metronome or Off on foot, remembered; Music once a kept track has a tempo. The recorder measures the cadence over the last 30 s and plays a fitting track (its tempo, half or double, within 6 %) through Media3's ExoPlayer, retuning the track playing where it still fits, else crossfading over 3 s; a plan's new step picks anew. A run starts at the cadence learnt from the person's runs, which also gives a plan's steps their cadence. Media3 1.10.1, pinned by Gradle's checksums (trusted on first download from Google's Maven, 29 Oct 2026), for review: media3-common aar 39686f54ff6baf8cbc841199afd55619533eaef2ab6cd0efc32b8a3c55dd88c3 module a81b2f0ebc256fe0e09f05d93c5259ade5bf44707748b9295343bee67575d9c2 media3-container aar a198b62c577fa434941282fbfa31eb66ff0ff308a6573edf0b5dd01f4e38445d module e2a1c62c7e5d1013b906bc6ff5056db3e797cda4505e2d7d229524b24ca67a0e media3-database aar 520e6f814e42a7d428db187ac073b453c0fcba0f4f5f4edd1cf33fafd2cfb740 module c380fea161e80d8074215a20e86e3dc2c2d825de964ca87aee66c8331f5ae252 media3-datasource aar e22f9f779047ce951152c793af094593e7cbb52475a82d56fa4f869fd319e700 module 9d32d2ec6a983ee9f418bcc05777aa23eee4db37bf794f44fb66a05d6f22e963 media3-decoder aar a9fb2b8fa1d54b4a8d6bda98a1c655b04d59c74b3ace7e2503e9e39830f13aee module 388d5226366edd1facf8eec42cb5420871a46032d545286e90eaea8454789580 media3-exoplayer aar 19090f829afbbb595d67618f59c212f72b433ac01dc72b47594cf42552c8ed61 module ba0b9ef325fa114baa0f2fbdb4caf54029606924be1999f4af02bed5f079756b media3-extractor aar 3c823279356b64f4215a8c6cb1e6bfa60c533351a651786ad6fa69ad001ef1b1 module b3eb755d7373e4fd199ff80814005f3b303693dfb8ace16b5b9482655d49d493 Not tried on a phone yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-29 13:31:41 +01:00
// Music by cadence in the recording service (ADR 0030, D47, D48): Media3's
// ExoPlayer, its speed changed with the pitch kept; pinned by its checksums
// in gradle/verification-metadata.xml.
implementation("androidx.media3:media3-exoplayer:1.10.1")
// The recorder's pure Kotlin parts (auto-pause) tested on the JVM.
testImplementation("junit:junit:4.13.2")
}