Flutter应用仅在索尼Xperia 10 III崩溃 如何在Android Studio模拟该设备
问题概述
- 已通过Firebase Test Lab多设备覆盖测试、自有及亲友真机测试验证应用兼容性,仅索尼Xperia 10 III出现运行异常,其余设备运行均正常
- 故障设备参数如下:
- Android版本:12
- 基带版本:bitra.gen-00411-25,bitra.gen-00411-25
- 内核版本:4.19.157-perf+#1 Fri Apr 22 19:25:04 JST 2022
- 构建版本号:62.1.A.0.587 release-keys
- 诉求:在Android Studio中模拟该设备复现崩溃问题
- 提交的AndroidManifest配置代码如下:
<application android:label="XXXX" android:icon="@mipmap/ic_launcher"> android:requestLegacyExternalStorage="true" <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-2985316085233177~9082095901"/> <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> <!-- This keeps the window background of the activity showing until Flutter renders its first frame. It can be removed if there is no splash screen (such as the default splash screen defined in @style/LaunchTheme). --> <meta-data android:name="io.flutter.app.android.SplashScreenUntilFirstFrame" android:value="true" /> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <meta-data android:name="flutterEmbedding" android:value="2" /> </application>
复现方案
Android Studio自带的通用模拟器无法100%复刻索尼Xperia系列的定制系统底层修改,不需要追求全参数完全匹配,按以下步骤操作即可覆盖绝大多数该机型该固件版本的专属崩溃场景:
- 第一步:创建匹配基础参数的模拟器
打开Device Manager新建虚拟设备,优先选择官方预置的Sony Xperia 10 III硬件配置;如果列表无预置配置,手动选择对应硬件参数:6英寸21:9 1080*2520分辨率屏幕、449dpi、6G运行内存,系统镜像选择Android 12(API 31)x86_64带Google服务框架版本,下载完成后直接创建启动即可。 - 第二步:针对性模拟该机型专属兼容缺陷
你给出的62.1.A.0.587版本固件存在几个已知的兼容问题,不需要刷入第三方定制镜像,直接在模拟器上模拟对应场景即可触发:- 首先修正Manifest语法错误:你贴出的配置中
android:requestLegacyExternalStorage="true"这行写在了<application>标签的闭合外部,索尼固件的包解析器对Manifest语法校验比原生AOSP严格,这个语法错误本身就可能导致应用安装后启动崩溃,修正后再做后续测试。 - 模拟存储权限校验逻辑:该版本索尼固件对Android 12的存储权限做了额外强制拦截,
requestLegacyExternalStorage配置在该固件上对targetSdk 31+的应用完全失效,在模拟器上手动拒绝应用的所有存储权限,冷启动应用测试启动流程。 - 模拟显示渲染兼容问题:该版本固件对21:9比例带鱼屏的硬件加速渲染做了定制裁剪,加上你集成了AdMob广告组件(广告加载默认依赖硬件加速),在模拟器开发者选项中强制屏幕比例为21:9,冷启动应用测试广告加载、首页渲染流程。
- 模拟内核内存缺陷:你给出的4.19.157-perf+内核存在已知的内存对齐bug,将模拟器运行内存调整为3G,冷启动应用触发大内存申请逻辑测试。
- 首先修正Manifest语法错误:你贴出的配置中
- 第三步:本地模拟器无法复现的兜底方案
如果以上操作都未复现崩溃,直接在Firebase Test Lab的设备列表中选择索尼Xperia 10 III、对应62.1.A.0.587固件版本的真机跑自动化测试,开启全量崩溃日志采集,不需要本地搭建模拟环境即可直接拿到对应设备的完整崩溃堆栈。
内容的提问来源于stack exchange,提问作者Nitneuq
相关产品推荐
相关产品推荐

