You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

荣耀200升级Magic OS 9(Android 15)后Flutter应用卡在‘Waiting for VM Service port to be available...’无法运行

荣耀200升级Magic OS 9(Android 15)后Flutter应用卡在‘Waiting for VM Service port to be available...’无法运行

我太懂这种卡在启动环节的憋屈了——本来流畅的开发节奏突然被打断,还是只针对某一台设备的专属bug,排查起来简直挠头。结合你说的「其他设备正常运行、已试过常规方案无效」的情况,我整理了几个针对荣耀Magic OS 9(Android 15)的专属排查和解决步骤,你可以挨个试试:


1. 先把荣耀Magic OS的调试权限拉满(重点!国产ROM的权限拦截是重灾区)

很多时候不是Flutter的问题,是国产ROM加的额外权限限制堵死了调试端口:

  • 打开手机「设置」→「系统和更新」→「开发者选项」
    • 务必确认**「USB调试」「USB安装」「USB调试(安全设置)」**这三个选项全部打开,尤其是「USB调试(安全设置)」——这个选项是允许调试器连接到应用的关键,很多人会忽略
    • 找到「选择调试应用」,手动选中你的Flutter应用包名(比如com.example.myformdemo),并设置为「等待调试器」
    • 检查是否有「纯净模式」「应用启动管理」这类开关:暂时关闭纯净模式,或者把你的应用设为「手动管理」,并允许自启动/后台活动
  • 再去「隐私保护」→「权限管理」里找到你的应用,把「后台弹出界面」「悬浮窗」权限全部打开——Flutter的调试进程有时候需要这些权限来建立连接

2. 强制禁用DDS+重置调试端口(针对Flutter调试组件的适配)

你之前试过加--no-dds,但可以配合更彻底的进程清理试试:

  • 先彻底杀掉手机上的应用进程:
    adb shell am force-stop com.example.myformdemo
    
  • 然后在电脑上结束所有和Flutter/Dart相关的进程(Windows开任务管理器,找到dart.exeflutter.exe全部杀掉)
  • 最后用更激进的启动命令试试(去掉--start-paused,有些ROM对暂停启动的应用会额外拦截):
    flutter run --no-dds --disable-service-auth-codes --device-user 0 --no-start-paused
    

3. 临时降级Flutter版本到3.22.x稳定版

Flutter 3.24.x是较新的稳定版,可能和Magic OS 9定制的Android 15存在适配小问题。你可以切换到3.22的稳定版试试:

flutter downgrade 3.22.3
flutter clean
flutter pub get

完成后再尝试运行应用,看是否能正常触发调试连接。

4. 调整ADB版本兼容性

你当前用的Android SDK Platform Tools是35.0.0,和Magic OS 9的Android 15可能存在兼容性问题:

  • 打开Android Studio的「SDK Manager」,找到「SDK Tools」标签
    • 要么把「Android SDK Platform-Tools」更新到最新版,要么回退到34.0.4版本(有些时候旧版ADB和国产ROM的兼容性反而更好)
  • 更新/回退后,重启ADB服务:
    adb kill-server && adb start-server
    

5. 给Debug应用手动配置签名(最后一招)

部分国产ROM对未签名的Debug应用会限制调试连接,你可以给Debug包配置一个默认签名:

  • 在你的Flutter项目的android/app/build.gradle文件里,找到android{...}代码块,添加以下配置:
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
    }
    
  • 然后执行flutter clean && flutter run,看是否能正常启动调试。

如果以上方法都试过还是不行,你可以去荣耀的官方社区搜搜有没有其他开发者遇到同款问题——毕竟是ROM专属bug,官方论坛可能会有针对性的补丁或者临时解决方案。另外,也可以过滤一下Flutter的日志,用flutter run -v 2>&1 | findstr "VM Service"(Windows)提取和VM Service相关的日志,说不定能找到更具体的拦截提示。

火山引擎 最新活动