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

如何测试从原生Android应用迁移至Flutter应用的升级流程?

解决Android升级Flutter应用时启动旧版的问题
  • 检查启动Activity配置
    确认Flutter项目AndroidManifest.xml中的主Activity(默认是io.flutter.embedding.android.FlutterActivity)已配置正确的<intent-filter>:

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    

    用aapt dump xmltree app-debug.apk AndroidManifest.xml命令导出并对比新旧APK的Manifest,确保Flutter的主入口没有被旧版配置覆盖,且优先级正确。

  • 验证版本信息正确性
    确认Flutter项目的版本配置满足升级要求:

    • 检查pubspec.yaml中的version字段(如version: 1.0.1+2,+后的数字是versionCode),确保其数值大于旧版应用的versionCode;
    • 同步app/build.gradle中的versionCode和versionName,确保与pubspec.yaml一致。
  • 手动调试启动行为
    不要依赖Flutter IDE的Run按钮启动,改为:

    1. 手动点击设备上的应用图标,观察启动的是否为新版;
    2. 用adb命令强制启动Flutter主Activity:
      adb shell am start -n [你的application id]/io.flutter.embedding.android.FlutterActivity
      
      若能正常启动新版,说明问题出在IDE的调试启动逻辑上。
  • 确认签名一致性
    新旧应用必须使用相同签名才能覆盖安装:

    • Debug版本确认均使用默认的debug keystore;
    • Release版本需配置相同的签名文件和密码;
    • 用keytool -printcert -jarfile [APK路径]查看签名信息,对比新旧APK的签名是否一致。
  • 查看系统安装与启动日志

    • 安装新版时,用adb logcat -s PackageManager查看包管理器日志,确认是否成功覆盖旧版,是否有错误提示;
    • 启动应用时,用adb logcat -s ActivityManager查看系统启动Activity的日志,定位系统选择旧版Activity的原因。
  • 检查Multidex配置
    虽然控制台显示启用Multidex,但仍需确认配置无冲突:

    • 确保app/build.gradle中已开启multiDexEnabled true;
    • 确认依赖implementation 'androidx.multidex:multidex:2.0.1',且旧版的Multidex配置不会干扰新版启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:20:15