I'm trying to make a wearOS app with scrollable content, and the documentation suggests using ScreenScaffold
to show the scroll bar on the right side. But my app keeps crashing when this composable is called with the following error:
java.lang.NoSuchMethodError: No static method OnFocusChange(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V in class Landroidx/wear/compose/foundation/HierarchicalFocusCoordinatorKt; or its super classes (declaration of 'androidx.wear.compose.foundation.HierarchicalFocusCoordinatorKt' appears in /data/app/~~sBQFH3NmHEUFy7RI239d0w==/com.*APP_NAME*==/base.apk!classes10.dex)
All other composables work fine, but this one doesn't. I've looked into including the missing function in the proguard-rules.pro
file, but that didn't do the trick.
(Edit)
Here is my build.gradle.kts
file:
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
android {
namespace = "*NAMESPACE*"
compileSdk = 36
defaultConfig {
applicationId = "*APP_PACKAGE*"
minSdk = 30
targetSdk = 36
versionCode = 1
versionName = "1.0"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlin {
jvmToolchain(11)
}
useLibrary("wear-sdk")
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.1"
}
}
dependencies {
// JSON
implementation(libs.gson)
// Charts
implementation(libs.mpandroidchart)
// Material Design
implementation(libs.material3)
implementation(libs.kotlinx.coroutines.android)
implementation(libs.play.services.wearable)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.compose.material)
implementation(libs.androidx.compose.foundation)
implementation(libs.androidx.wear.tooling.preview)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.core.splashscreen)
implementation(libs.animation.graphics.android)
implementation(libs.androidx.compose.material3)
implementation(libs.horologist.composables)
implementation(libs.horologist.compose.layout)
implementation(libs.horologist.media.ui)
implementation(libs.horologist.tiles)
implementation(libs.androidx.wear.phone.interactions)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
}
Any help would be greatly appreciated!
OnFocusChange in HierarchicalFocusCoordinator was removed in Wear Compose 1.5.0-alpha14.
Horologist is currently using 1.5.0-beta06 which contains those changes.
I guess you are using a version of Material3 that does not have OnFocusChange and an old version of Horologist that uses OnFocusChange.
Please update Horologist to the latest version.