Android集成AWS Amplify时出现NoSuchMethodError问题求助
问题重现
初始化Amplify的代码如下:
try { Amplify.addPlugin(AWSCognitoAuthPlugin()) Amplify.addPlugin(AWSPredictionsPlugin()) Amplify.configure(applicationContext) Log.i("MyAmplifyApp", "Initialized Amplify") } catch (error: AmplifyException) { Log.e("MyAmplifyApp", "Could not initialize Amplify", error) }
运行时抛出错误:
java.lang.NoSuchMethodError: No static method AuthOption-Jh0Pmzk$default(Ljava/lang/String;Laws/smithy/kotlin/runtime/util/Attributes;ILjava/lang/Object;)Laws/smithy/kotlin/runtime/auth/AuthOption; in class Laws/smithy/kotlin/runtime/auth/AuthOptionKt; or its super classes (declaration of 'aws.smithy.kotlin.runtime.auth.AuthOptionKt' appears in /data/app/~~rDNGSxK_wBHLaFeI6UIjdw==/com.singhealth.enhance-_AVqqONMQSfk2M5hb3fAdQ==/base.apk!classes10.dex)
解决方案
这个错误本质是依赖版本冲突,尤其是Smithy Kotlin Runtime库与Amplify插件版本不匹配导致的,可按以下步骤解决:
统一所有Amplify插件版本
确保项目中Amplify核心库、Auth插件、Predictions插件使用完全一致的版本,避免混合不同版本的依赖。示例Gradle配置:dependencies { implementation 'com.amplifyframework:core:2.17.0' implementation 'com.amplifyframework:aws-auth-cognito:2.17.0' implementation 'com.amplifyframework:aws-predictions:2.17.0' }注意:替换为当前最新的稳定版本,所有插件版本号必须完全相同。
强制统一Smithy Runtime依赖版本
执行./gradlew app:dependencies查看依赖树,找出aws.smithy.kotlin:smithy-kotlin-runtime的所有版本,然后在Gradle中强制使用Amplify插件依赖的对应版本:configurations.all { resolutionStrategy.force 'aws.smithy.kotlin:smithy-kotlin-runtime:0.27.0' }彻底清理构建缓存
- 执行终端命令:
./gradlew clean - 打开Android Studio,选择
File -> Invalidate Caches...,点击Invalidate and Restart - 重新同步Gradle并构建项目
- 执行终端命令:
检查Kotlin版本兼容性
确认项目使用的Kotlin版本与Amplify要求兼容,Amplify通常需要Kotlin 1.8.x及以上版本。在项目级build.gradle中检查:plugins { id 'com.android.application' version '7.4.2' apply false id 'org.jetbrains.kotlin.android' version '1.8.22' apply false }
内容的提问来源于stack exchange,提问作者JRockiller1

