适配小米“中”折屏,非得买一台吗

各位 Android 爱好者们,大家好。

Android 正在全面推进自适应布局。应用不再只面对一种手机尺寸,开发者也应该让同一套功能在更多设备形态上都能正常使用。

但写布局只是第一步,真正花时间的往往是测试。为了确认应用在每一种形态下都显示正常、功能完好,得在多台设备上反复测试。

屏幕形态也在不断增加。

华为通过鸿蒙系统一直走在硬件形态的前面;其他 Android 厂商也在迅速跟进,这不,小米即将发布的"中"折屏就是一个例子。

以小米即将发布的"中"折屏为例:如果我想发布一款应用,做这个中折屏设备的适配,我总不能真的买一台吧!

等下,先不要急。

当前版本的 Android Studio 自带了 Resizable Emulator,可以手动切换形态来验证布局。

当然,还有一种更加极客的方式:直接在终端里控制设备形态。adb emu 提供了一组控制台命令,让你不用打开控制面板,也能切换屏幕形态。

如果同时跑着多个模拟器,还可以通过序列号指定目标设备:

sh 复制代码
adb -s <serial> emu <command> <parameter>

这篇文章,我们就看看这几条命令都能做什么。

从折叠说起

要测试折叠屏特有的用户路径和布局配置,可以直接用命令折叠、展开模拟器:

sh 复制代码
adb emu fold

不过,第一次输入这个命令时,多半会碰到一个问题:设备没有发生任何变化。

那是因为,你要创建正确的 Resizable Emulator。

此处需要创建 Resizable 设备。

创建完毕之后,我们再试一次:

sh 复制代码
KO: Device is not foldable

emmm,Google 到底行不行!

这里其实还有个小坑:

在创建完设备之后,需要在左上角选择 Foldable 设备。

点击之后,你的设备就会变成:

这样就对了!

现在,我们运行那条命令:

sh 复制代码
adb emu fold

屏幕会变成类似手机屏幕的尺寸。也就是说,如果折叠屏模拟器当前是展开状态,这条命令会把它折起来,点亮(虚拟的)外屏,进入小屏配置。

展开则反过来:

sh 复制代码
adb emu unfold

内屏重新点亮。这样一来,你可以立刻验证应用有没有保住状态,以及不同显示尺寸下的布局是不是符合预期,全程不用碰鼠标。

旋转

正确处理旋转,是自适应开发中,绕不开的地方。

sh 复制代码
adb emu rotate

这条命令会让设备顺时针旋转 90°。配合它,你可以触发配置变更,测试应用对旋转的处理,包括状态恢复。

用传感器模拟姿态

那如果想把模拟器摆成特定的物理姿态,比如桌面模式(tabletop)呢?

先查一下有哪些姿态可用:

sh 复制代码
adb emu posture

它会返回类似这样的列表:

sh 复制代码
KO: Usage: "posture <posture_id>" 1: closed     2: half-opened  3: opened       4: flipped      5: tent

想要桌面模式,用 half-opened 对应的 ID 就行:

sh 复制代码
adb emu posture 2

注意:不是每台虚拟设备都支持全部姿态。

Pixel Fold、Resizable AVD 这类标准模板只支持姿态 1、2、3;在这些模板上设置 4 或 5,会返回错误。

sh 复制代码
KO: Failed to set posture

Resizable Emulator

Resizable Emulator 可以在不同尺寸之间切换。配合 adb emu,一条命令就能切到指定的预设。

动手之前,先查一下有哪些预设:

sh 复制代码
adb emu resize-display

返回可用预设列表:

sh 复制代码
KO usage: "resize-display <index>" 0: phone	1: unfolded	2: tablet

接着传入想要的 ID,模拟器就会变成对应尺寸。

假设现在我想变成 tablet 尺寸:

sh 复制代码
adb emu resize-display 2

各位需要稍微等下,这个命令执行之后,模拟器变化特别慢,应该是还没有优化好。

现在就开始

把这些 adb 命令加进命令行工作流后,就不用同时开好几台模拟器了,能省下时间和资源,最后省下的还是钱。

那么,开发者们,打开终端,启动模拟器,开始折腾那些各种各样的屏幕吧!

一点想法

这几条命令正好覆盖了自适应测试里最机械的那部分:折叠、旋转、姿态、尺寸。

我之前在 Android CLI 那篇文章里聊过一个趋势:终端正在逐渐成为 Android 开发的一等入口。

adb emu 这些命令也是这个方向的一部分。它们不只方便人操作,也能写进脚本、交给 AI Agent 执行;相比在模拟器窗口里反复点击,这种方式更容易复现。

换句话说,下一次让 AI 帮你验证折叠屏布局时,不妨直接告诉它:adb emu fold

哦,对了,别忘了 android cli 本身还可以添加 skill。

相关推荐
恋猫de小郭1 小时前
Flutter 状态管理基准测评,一个很有趣的观点
android·前端·flutter
可乐鸡翅yeah_1 小时前
App WebView 加载 M3U8 流媒体踩坑,安卓 iOS 混合开发播放异常定位
android·ios·harmonyos·m3u8·m3u8在线播放
木卫四科技2 小时前
从函数劫持到智能体控制平面:Hook 如何从 Linux-Android 演化到 Agent Runtime
android·linux·人工智能·安全
菠萝加点糖2 小时前
Android applicationIdSuffix 详解
android·gitee·kotlin
AIGC小尼2 小时前
穿山甲 + 腾讯短剧短视频聚合广告平台|Android+SpringBoot+Vue+Docker 完整部署指南
android·vue.js·spring boot·聚合广告·广告平台·穿山甲广告·腾讯广告
JMchen1234 小时前
【Android 性能优化实战 60 讲】06 GPU 呈现模式与卡顿视觉验证:拆解柱状图分层,秒辨渲染慢与等待慢
android·性能优化·实战·源码分析·渲染优化·gpu呈现模式·卡顿优化
91刘仁德11 小时前
MYSQL 事务原理及使用
android·mysql·adb
事圆则缓13 小时前
Kotlin 协程完全指南
开发语言·kotlin
一笑的小酒馆13 小时前
AndroidKMP之瀑布流实现
android