Debug APK中第三方SDK的Jetpack Compose方法抛出NoSuchMethodError,Android Studio运行正常的原因及解决咨询
Debug APK中第三方SDK的Jetpack Compose方法抛出NoSuchMethodError,Android Studio运行正常的原因及解决咨询
问题描述
我正在使用一个内部依赖Jetpack Compose的第三方SDK,我的应用大部分是基于XML开发的,但会打开SDK提供的一个底层使用Compose的Fragment。
✅ 正常场景:从Android Studio直接运行应用时,一切加载正常,包括SDK的Compose界面
❌ 崩溃场景:通过./gradlew assembleDebug生成Debug APK,手动安装到物理设备后,导航到SDK界面时立即崩溃,报错核心内容:
java.lang.NoSuchMethodError: No static method slideIntoContainer(...) in class androidx.compose.animation.AnimatedContentTransitionScope
完整崩溃栈:
java.lang.NoSuchMethodError: No static method slideIntoContainer-mOhB8PU$default(Landroidx/compose/animation/AnimatedContentTransitionScope;ILandroidx/compose/animation/core/FiniteAnimationSpec;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/animation/EnterTransition; in class Landroidx/compose/animation/AnimatedContentTransitionScope; or its super classes (declaration of 'androidx.compose.animation.AnimatedContentTransitionScope' appears in /data/app/~~C_3WlAlgwm9YZwORtKZbXw==/com.example.myapp-yTJqM29rwjJU1_yQwSswqA==/base.apk) at com.SDK_CLASS.main.presentation.navigation.NavigationKt$ChatNavHost$4.invoke(Navigation.kt:96) at com.SDK_CLASS.main.presentation.navigation.NavigationKt$ChatNavHost$4.invoke(Navigation.kt:92) at androidx.navigation.compose.NavHostKt$NavHost$finalEnter$1$1.invoke(NavHost.kt:254) at androidx.navigation.compose.NavHostKt$NavHost$finalEnter$1$1.invoke(NavHost.kt:244) at androidx.navigation.compose.NavHostKt$NavHost$12.invoke(NavHost.kt:288) at androidx.navigation.compose.NavHostKt$NavHost$12.invoke(NavHost.kt:273) at androidx.compose.animation.AnimatedContentKt.AnimatedContent(AnimatedContent.kt:809) at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:273) at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:128) at com.SDK_CLASS.main.presentation.navigation.NavigationKt.ChatNavHost(Navigation.kt:92) at com.SDK_CLASS.main.presentation.SDK_FRAGMENT$onCreateView$1$1$1$1.invoke(SDKCLASSFRAGMENT.kt:120) at com.SDK_CLASS.main.presentation.SDK_FRAGMENT$onCreateView$1$1$1$1.invoke(SDKCLASSFRAGMENT.kt:119) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at com.SDK_CLASS.main.theme.SdkClassThemeKt$SdkClassTheme$1.invoke(SdkClassTheme.kt:20) at com.SDK_CLASS.main.theme.SdkClassThemeKt$SdkClassTheme$1.invoke(SdkClassTheme.kt:19) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:380) at com.SDK_CLASS.main.theme.SdkClassThemeKt.SdkClassTheme(SdkClassTheme.kt:16) at com.SDK_CLASS.main.presentation.SDK_FRAGMENT$onCreateView$1$1$1.invoke(SDKCLASSFRAGMENT.kt:117) at com.SDK_CLASS.main.presentation.SDK_FRAGMENT$onCreateView$1$1$1.invoke(SDKCLASSFRAGMENT.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:401) at com.SDK_CLASS.main.presentation.SDK_FRAGMENT$onCreateView$1$1.invoke(SDKCLASSFRAGMENT.kt:116) at com.SDK_CLASS.main.presentation.SDK_FRAGMENT$onCreateView$1$1.invoke(SDKCLASSFRAGMENT.kt:110) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
已排查的配置与操作
- Debug构建变种中
minifyEnabled设置为false - 项目
build.gradle已开启buildFeatures.compose = true - Kotlin编译器扩展版本
1.5.11(后续尝试过1.5.13)与Compose BOM2024.08.00版本兼容 - 已显式在应用依赖中添加
androidx.compose.animation:animation - 已多次执行Clean Project和Rebuild Project操作
- 我的Compose相关依赖版本:
compose = [ "runTime", "compose_liveData", "ui", "uiTooling", "uiToolingPreview", "foundation", "foundationLayout", "compose_material", "themeAdapter", "material3", "compose_navigation", "hiltNavigation", "composeAnimation", "composeActivity" ] composeCompiler = "1.5.13", compose = "1.5.3", composeActivity = "1.9.1", composeNav = "2.7.7"
疑问
为什么这个Compose相关的方法崩溃(NoSuchMethodError)只在使用APK时发生,明明所有Compose库都已包含?要确保第三方SDK的Compose方法在APK中被保留,有没有什么特殊配置需要做?
我的猜测
我怀疑Compose的类或方法在构建过程中被剥离或解析异常,但搞不清原因——尤其是在Debug APK中出现这个问题,实在让人困惑。
内容来源于stack exchange
相关产品推荐
相关产品推荐

