如何测试从原生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按钮启动,改为:- 手动点击设备上的应用图标,观察启动的是否为新版;
- 用adb命令强制启动Flutter主Activity:
若能正常启动新版,说明问题出在IDE的调试启动逻辑上。adb shell am start -n [你的application id]/io.flutter.embedding.android.FlutterActivity
确认签名一致性
新旧应用必须使用相同签名才能覆盖安装:- 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
相关产品推荐
相关产品推荐

