You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter升级compileSdkVersion33后在Android 12L模拟器因方法缺失崩溃

Flutter升级compileSdkVersion至33后模拟器崩溃的解决思路

将Flutter项目的compileSdkVersion升级至33后,应用在模拟器中崩溃,但新建同版本的Flutter项目无异常,且对比两个项目的gradle.build和AndroidManifest.xml未发现差异,求解决思路。

Flutter版本信息

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.3.5, on macOS 12.6 21G115 darwin-arm, locale de-DE)
[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.3)
[✓] IntelliJ IDEA Ultimate Edition (version 2022.2.2)
[✓] VS Code (version 1.72.2)
[✓] Connected device (3 available)
[✓] HTTP Host Availability

崩溃错误日志

D/FlutterLocationService(13862): Binding to location service.
E/AndroidRuntime(13862): FATAL EXCEPTION: main
E/AndroidRuntime(13862): Process: de.roegmbh.checkit, PID: 13862
E/AndroidRuntime(13862): java.lang.NoSuchMethodError: No interface method addWindowLayoutInfoListener(Landroid/app/Activity;Lj$/util/function/Consumer;)V in class Landroidx/window/extensions/layout/WindowLayoutComponent; or its super classes (declaration of 'androidx.window.extensions.layout.WindowLayoutComponent' appears in /system_ext/framework/androidx.window.extensions.jar)
E/AndroidRuntime(13862):    at androidx.window.layout.ExtensionWindowLayoutInfoBackend.registerLayoutChangeCallback(ExtensionWindowLayoutInfoBackend.kt:68)
E/AndroidRuntime(13862):    at androidx.window.layout.WindowInfoTrackerImpl$windowLayoutInfo$1.invokeSuspend(WindowInfoTrackerImpl.kt:52)
E/AndroidRuntime(13862):    at androidx.window.layout.WindowInfoTrackerImpl$windowLayoutInfo$1.invoke(Unknown Source:8)
E/AndroidRuntime(13862):    at androidx.window.layout.WindowInfoTrackerImpl$windowLayoutInfo$1.invoke(Unknown Source:4)
E/AndroidRuntime(13862):    at kotlinx.coroutines.flow.SafeFlow.collectSafely(Builders.kt:61)
E/AndroidRuntime(13862):    at kotlinx.coroutines.flow.AbstractFlow.collect(Flow.kt:212)
E/AndroidRuntime(13862):    at androidx.window.java.layout.WindowInfoTrackerCallbackAdapter$addListener$1$1.invokeSuspend(WindowInfoTrackerCallbackAdapter.kt:96)
E/AndroidRuntime(13862):    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
E/AndroidRuntime(13862):    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
E/AndroidRuntime(13862):    at android.os.Handler.handleCallback(Handler.java:942)
E/AndroidRuntime(13862):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(13862):    at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime(13862):    at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime(13862):    at android.app.ActivityThread.main(ActivityThread.java:7898)
E/AndroidRuntime(13862):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(13862):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/AndroidRuntime(13862):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

解决思路

从错误日志看,崩溃根源是androidx.window库的方法找不到,属于依赖版本不兼容问题,可按以下步骤排查:

  • 统一androidx.window依赖版本:在项目根目录的android/build.gradle中,通过allprojects的resolutionStrategy强制指定androidx.window系列库的版本,比如适配compileSdk33的稳定版:
    allprojects {
        repositories {
            // ... 其他仓库配置
        }
        configurations.all {
            resolutionStrategy {
                force 'androidx.window:window:1.1.0'
                force 'androidx.window:window-java:1.1.0'
                force 'androidx.window:window-extensions:1.1.0'
            }
        }
    }
    
  • 对比依赖树差异:分别在旧项目和新项目中执行flutter pub deps,或者用Android Studio的File > Project Structure > Dependencies查看依赖树,找出两个项目中androidx.window及相关依赖的版本差异,将旧项目的依赖版本对齐新项目。
  • 升级Flutter插件:检查项目中用到的插件(比如日志里的FlutterLocationService对应的location插件),旧版插件可能未适配compileSdk33,导致依赖的androidx库版本过低,更新插件到最新兼容版本。
  • 清理构建缓存:执行flutter clean,再进入android目录执行./gradlew clean,删除缓存的旧构建文件后重新编译项目。
  • 检查Gradle配置一致性:对比新项目和旧项目的gradle-wrapper.properties中的Gradle版本、android/build.gradle中的Android Gradle Plugin版本,确保compileSdk33使用对应的兼容版本(比如AGP 7.4+适配compileSdk33)。

内容的提问来源于stack exchange,提问作者KlausSzilvas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:55:23