邏輯與配置修改指南)
安卓11設(shè)備接上外接顯示器畫面要么糊得像蒙了一層霧要么四周一圈黑邊要么干脆點(diǎn)不亮——這個(gè)問(wèn)題我在過(guò)去一年里被問(wèn)過(guò)不下幾十次。很多人第一反應(yīng)是線材不行、顯示器太老折騰半天換線換屏最后發(fā)現(xiàn)根子出在系統(tǒng)那套“自適應(yīng)分辨率”的默認(rèn)邏輯上。安卓11在顯示輸出這塊做了不少改動(dòng)尤其是HDMI自適應(yīng)這塊廠商默認(rèn)策略偏保守插上就給你一個(gè)“能亮就行”的分辨率至于點(diǎn)對(duì)點(diǎn)、刷新率、色彩格式這些它不太管。這篇內(nèi)容就是把這套邏輯拆開(kāi)講清楚從底層信號(hào)協(xié)商到上層配置修改再到實(shí)際避坑盡量讓看完的人能自己動(dòng)手把外接顯示器的分辨率調(diào)到該有的樣子。不管你是拿電視盒子改的安卓11還是手機(jī)平板接擴(kuò)展塢或者是開(kāi)發(fā)板上跑安卓11接HDMI這里面的思路是通用的。1. 安卓11外接顯示器的顯示框架與自適應(yīng)邏輯1.1 從HDMI接口信號(hào)定義說(shuō)起為什么插上不一定亮要搞明白分辨率為什么不對(duì)得先知道HDMI這根線到底在傳什么。HDMI接口有幾種物理形態(tài)標(biāo)準(zhǔn)口、Mini口、Micro口但針腳定義的核心邏輯是一致的里面有一組叫DDC的通道走的是I2C協(xié)議專門用來(lái)讀取顯示器那邊的EDID信息。EDID就是顯示器的一張“身份證”里面寫清楚了它支持哪些分辨率、哪些刷新率、支持什么色彩空間。安卓11系統(tǒng)在檢測(cè)到HDMI熱插拔之后會(huì)通過(guò)DDC去讀這張身份證然后從里面挑一個(gè)“它認(rèn)為合適”的模式輸出。問(wèn)題就出在這個(gè)“它認(rèn)為合適”上。安卓11的顯示框架里HDMI輸出走的是DisplayManager和HWC硬件合成器這條鏈路HWC底層對(duì)接的是SoC廠商的顯示驅(qū)動(dòng)。不同芯片平臺(tái)比如晶晨S905系列、瑞芯微RK系列、高通驍龍系列它們對(duì)EDID的解析策略和默認(rèn)模式選擇都不一樣。有的平臺(tái)默認(rèn)挑最大分辨率有的默認(rèn)挑最穩(wěn)妥的720p還有的干脆只認(rèn)自己白名單里的幾個(gè)模式。你插上一臺(tái)2K顯示器它可能只給你輸出1280x720畫面自然糊。更麻煩的是有些設(shè)備的HDMI接口電路設(shè)計(jì)里HPD熱插拔檢測(cè)信號(hào)處理得不好插上線系統(tǒng)壓根沒(méi)收到“有顯示器接入”的事件那就連EDID都不會(huì)去讀屏幕自然不亮。這種情況在低價(jià)電視盒子改的安卓11上特別常見(jiàn)因?yàn)榘遄由系腍PD上拉電阻或者電平轉(zhuǎn)換做得不規(guī)范。1.2 自適應(yīng)分辨率到底“自適應(yīng)”了什么安卓11里所謂的自適應(yīng)其實(shí)分兩層。第一層是物理層自適應(yīng)就是前面說(shuō)的讀EDID、協(xié)商TMDS時(shí)鐘、確定像素時(shí)鐘這些。第二層是邏輯層自適應(yīng)是Android框架里的DisplayDevice和LogicalDisplay在決定把哪個(gè)物理顯示模式映射成系統(tǒng)里的邏輯分辨率以及要不要做縮放。邏輯層這塊有個(gè)關(guān)鍵概念叫“默認(rèn)顯示模式”。安卓11在DisplayManagerService里維護(hù)了一個(gè)默認(rèn)模式列表當(dāng)外接顯示器接入時(shí)它會(huì)拿EDID里的模式和這個(gè)列表做交集然后選一個(gè)。選的時(shí)候優(yōu)先考慮的是“兼容性”而不是“最佳效果”所以經(jīng)常選出一個(gè)低于顯示器原生分辨率的值。比如你的顯示器原生是1920x1080它可能選1280x720然后系統(tǒng)層面再把這個(gè)720p的畫面拉伸到1080p輸出結(jié)果就是又糊又軟。還有一個(gè)坑是密度DPI的適配。安卓11會(huì)根據(jù)邏輯分辨率自動(dòng)算一個(gè)DPI值如果這個(gè)值算得不對(duì)界面元素要么巨大要么極小。外接顯示器通常期望的DPI在160左右但系統(tǒng)可能給你算出240甚至320導(dǎo)致整個(gè)桌面看起來(lái)像給手機(jī)用的。1.3 哪些設(shè)備最容易踩這個(gè)坑根據(jù)我接觸到的案例下面這幾類設(shè)備出問(wèn)題的概率最高電視盒子改的安卓11典型如S905L3A這類芯片的方案刷了安卓11固件之后HDMI輸出策略往往沒(méi)調(diào)好默認(rèn)給720p甚至480p。這類設(shè)備量大、固件雜是重災(zāi)區(qū)。開(kāi)發(fā)板跑安卓11RK3576、RK3568這類板子HDMI適配依賴內(nèi)核里的顯示驅(qū)動(dòng)和設(shè)備樹(shù)配置如果設(shè)備樹(shù)里EDID解析或者時(shí)序參數(shù)沒(méi)配對(duì)輸出分辨率就會(huì)不對(duì)。手機(jī)/平板通過(guò)擴(kuò)展塢輸出這類場(chǎng)景下系統(tǒng)往往把外接顯示器當(dāng)成“第二顯示”處理默認(rèn)可能只給一個(gè)鏡像模式分辨率跟著手機(jī)走而不是按顯示器能力來(lái)。老舊顯示器接新設(shè)備有些老顯示器的EDID信息不完整或者格式不規(guī)范安卓11解析失敗后直接fallback到最保守的640x480或800x480畫面慘不忍睹。提示如果你手頭的設(shè)備插上HDMI后畫面糊先別急著換線。進(jìn)系統(tǒng)設(shè)置里看“顯示”選項(xiàng)如果里面能看到外接顯示器的分辨率選項(xiàng)先手動(dòng)切一下試試。如果壓根沒(méi)有這個(gè)選項(xiàng)那說(shuō)明系統(tǒng)沒(méi)正確識(shí)別到顯示器問(wèn)題在EDID讀取或HPD檢測(cè)環(huán)節(jié)。2. 分辨率不對(duì)的根因排查與關(guān)鍵參數(shù)解析2.1 先判斷是“沒(méi)識(shí)別”還是“識(shí)別了但選錯(cuò)”排查要分兩步走不能一上來(lái)就改配置。第一步是確認(rèn)系統(tǒng)到底有沒(méi)有讀到顯示器的EDID。最直接的辦法是看內(nèi)核日志。安卓11底層是Linux內(nèi)核HDMI相關(guān)的信息會(huì)打在dmesg里。你可以通過(guò)adb連接設(shè)備執(zhí)行adb shell dmesg | grep -i hdmi adb shell dmesg | grep -i edid如果日志里能看到類似EDID block read success或者h(yuǎn)dmi: edid read ok的字樣說(shuō)明EDID讀到了問(wèn)題出在模式選擇上。如果只有hdmi connected但沒(méi)有EDID相關(guān)輸出那大概率是DDC通道通信失敗可能是線材問(wèn)題、接口接觸問(wèn)題或者HPD電路有問(wèn)題。第二步是看系統(tǒng)當(dāng)前實(shí)際輸出的模式。可以執(zhí)行adb shell dumpsys display在輸出里找mDisplayId對(duì)應(yīng)的外接顯示部分看mBaseDisplayInfo里的width、height、refreshRate和density。這幾個(gè)值能直接告訴你系統(tǒng)當(dāng)前用的是哪個(gè)分辨率、什么刷新率、什么DPI。2.2 EDID解析失敗的常見(jiàn)表現(xiàn)與處理EDID讀取失敗在日志里通常表現(xiàn)為EDID checksum error、EDID read timeout或者failed to read EDID。遇到這種情況先換一根質(zhì)量靠譜的HDMI線尤其是短距離的粗線DDC通道對(duì)線材質(zhì)量比TMDS通道更敏感。如果換線無(wú)效可以嘗試在設(shè)備樹(shù)或者內(nèi)核啟動(dòng)參數(shù)里強(qiáng)制指定一個(gè)顯示模式繞過(guò)EDID協(xié)商。對(duì)于RK3576這類平臺(tái)內(nèi)核啟動(dòng)參數(shù)里可以加videoHDMI-A-1:1920x108060這個(gè)參數(shù)的意思是強(qiáng)制HDMI-A-1這個(gè)接口輸出1080p60不去管EDID怎么說(shuō)。這招在調(diào)試階段特別好用能快速驗(yàn)證是EDID問(wèn)題還是驅(qū)動(dòng)問(wèn)題。但要注意強(qiáng)制模式如果和顯示器實(shí)際能力不匹配可能直接黑屏所以要從低分辨率往高試。2.3 模式選擇錯(cuò)誤的判斷依據(jù)如果EDID讀到了但系統(tǒng)選了個(gè)低分辨率日志里通常能看到類似best mode: 1280x720或者preferred mode not found, using fallback這樣的信息。這時(shí)候要看的是EDID里到底聲明了哪些模式??梢杂胑did-decode工具把EDID二進(jìn)制解析出來(lái)看adb shell cat /sys/class/drm/card0-HDMI-A-1/edid edid.bin edid-decode edid.bin解析結(jié)果里會(huì)列出Detailed Timing Descriptors里面就是顯示器支持的所有詳細(xì)時(shí)序。如果里面明明有1920x1080但系統(tǒng)沒(méi)選那就是模式選擇策略的問(wèn)題需要改框架層的默認(rèn)模式列表或者廠商的顯示配置文件。2.4 刷新率與色彩格式的隱藏影響分辨率對(duì)了但畫面還是感覺(jué)不對(duì)很多時(shí)候是刷新率和色彩格式的問(wèn)題。安卓11默認(rèn)可能輸出YUV420而不是RGB尤其是在帶寬緊張的時(shí)候。YUV420是色度抽樣文字邊緣會(huì)有彩色毛邊看起來(lái)就是“糊”。判斷方法是在dumpsys display里看colorMode字段如果是COLOR_MODE_YUV420那就要想辦法切到RGB。刷新率方面如果顯示器支持60Hz但系統(tǒng)只給30Hz鼠標(biāo)移動(dòng)會(huì)有明顯拖影。這個(gè)在dumpsys display的refreshRate字段能看出來(lái)。有些平臺(tái)需要在設(shè)備樹(shù)里顯式聲明支持的刷新率列表否則默認(rèn)只給30Hz。現(xiàn)象可能原因排查命令處理方向畫面糊、有毛邊輸出YUV420而非RGBdumpsys display看colorMode改色彩格式配置鼠標(biāo)拖影明顯刷新率只有30Hzdumpsys display看refreshRate強(qiáng)制60Hz模式四周有黑邊縮放模式不對(duì)看顯示器OSD信息改overscan或縮放設(shè)置分辨率低于原生模式選擇策略保守edid-decode對(duì)比改默認(rèn)模式列表完全不亮HPD或EDID失敗dmesg看HDMI日志查線材和電路3. 動(dòng)手修改從系統(tǒng)設(shè)置到框架層的實(shí)操路徑3.1 優(yōu)先嘗試系統(tǒng)層設(shè)置與開(kāi)發(fā)者選項(xiàng)在動(dòng)底層之前先把系統(tǒng)層能試的都試一遍。安卓11的設(shè)置里外接顯示器的選項(xiàng)藏在“顯示”菜單下有些設(shè)備會(huì)多出一個(gè)“HDMI設(shè)置”或者“外接顯示設(shè)置”的入口。進(jìn)去之后如果有分辨率下拉框直接選顯示器的原生分辨率。如果沒(méi)有下拉框去開(kāi)發(fā)者選項(xiàng)里找“強(qiáng)制使用GPU渲染”和“強(qiáng)制啟用MSAA”這兩個(gè)對(duì)外接顯示效果有影響但不是直接改分辨率的。還有一個(gè)隱藏入口是Settings Display Advanced Display size這里可以調(diào)DPI。外接顯示器如果界面元素過(guò)大把DPI調(diào)低能改善。但要注意這個(gè)設(shè)置是全局的調(diào)了之后內(nèi)置屏幕也會(huì)跟著變所以調(diào)完記得記下原始值。對(duì)于電視盒子類設(shè)備很多固件里藏了一個(gè)工廠模式或者工程模式進(jìn)去之后有HDMI輸出模式的選項(xiàng)。進(jìn)入方法通常是設(shè)置里連點(diǎn)版本號(hào)或者用遙控器按特定組合鍵。這個(gè)因固件而異需要自己搜對(duì)應(yīng)型號(hào)的進(jìn)入方式。3.2 通過(guò)adb修改顯示配置系統(tǒng)設(shè)置里沒(méi)有選項(xiàng)的時(shí)候adb就是最直接的工具。安卓11里可以用wm命令來(lái)改顯示參數(shù)adb shell wm size 1920x1080 adb shell wm density 160wm size改的是邏輯分辨率wm density改的是DPI。這兩個(gè)命令改完之后系統(tǒng)會(huì)重新配置顯示。但要注意wm size改的是邏輯顯示尺寸如果底層物理輸出還是720p那這個(gè)命令只是讓系統(tǒng)按1080p來(lái)渲染然后縮放輸出畫面可能更清晰一點(diǎn)但不會(huì)點(diǎn)對(duì)點(diǎn)。要真正改物理輸出模式需要用service call去調(diào)DisplayManager的接口或者直接改/vendor/etc/display下的配置文件。不同平臺(tái)配置文件路徑不一樣晶晨平臺(tái)通常在/vendor/etc/hdmi或者/vendor/etc/display下瑞芯微平臺(tái)在/vendor/etc/hwc下。3.3 修改EDID白名單與默認(rèn)模式列表如果系統(tǒng)選模式太保守最徹底的辦法是改默認(rèn)模式列表。安卓11的顯示模式選擇邏輯在frameworks/base/services/core/java/com/android/server/display/下面但改框架層需要重新編譯系統(tǒng)對(duì)普通用戶不現(xiàn)實(shí)。更實(shí)際的做法是改廠商在/vendor分區(qū)里放的顯示配置文件。以晶晨平臺(tái)為例/vendor/etc/display_mode.xml或者類似文件里會(huì)列出一個(gè)支持的模式列表。你可以把顯示器原生分辨率對(duì)應(yīng)的模式加到列表最前面系統(tǒng)在選擇時(shí)會(huì)優(yōu)先考慮。改完之后重啟生效。這個(gè)文件的具體格式因平臺(tái)而異但通常是XML或者conf格式里面就是一行行的width x height refresh。對(duì)于RK3576這類平臺(tái)模式選擇更多依賴內(nèi)核設(shè)備樹(shù)里的display-timings節(jié)點(diǎn)。你可以在設(shè)備樹(shù)里顯式聲明一個(gè)timing把clock-frequency、hactive、vactive、hfront-porch這些參數(shù)按顯示器規(guī)格填進(jìn)去。這個(gè)操作需要重新編譯內(nèi)核和設(shè)備樹(shù)門檻較高但效果最徹底。3.4 強(qiáng)制RGB輸出與關(guān)閉縮放色彩格式這塊安卓11里可以通過(guò)SurfaceFlinger的屬性來(lái)強(qiáng)制。在/vendor/build.prop或者/system/build.prop里加persist.sys.sf.color_mode0這個(gè)屬性值0通常對(duì)應(yīng)RGB。改完重啟再用dumpsys display確認(rèn)colorMode變成COLOR_MODE_RGB??s放方面如果畫面有黑邊說(shuō)明系統(tǒng)在做overscan補(bǔ)償。可以在build.prop里加persist.sys.overscan0或者在顯示設(shè)置里找“畫面縮放”選項(xiàng)手動(dòng)調(diào)到100%。有些電視盒子固件默認(rèn)開(kāi)了5%到10%的overscan導(dǎo)致畫面被裁切或者有黑邊。注意改build.prop之前一定要先備份原文件改錯(cuò)了可能導(dǎo)致系統(tǒng)起不來(lái)。改完用adb shell getprop確認(rèn)屬性生效不要只看文件內(nèi)容。4. 常見(jiàn)問(wèn)題速查與避坑經(jīng)驗(yàn)4.1 插上HDMI后沒(méi)聲音怎么辦RK3576這類平臺(tái)有個(gè)已知問(wèn)題插上HDMI線之后媒體聲音就沒(méi)了。這是因?yàn)橄到y(tǒng)把音頻輸出路由到了HDMI但HDMI音頻通道沒(méi)配好導(dǎo)致聲音既不走HDMI也不走本地?fù)P聲器。解決辦法是在開(kāi)發(fā)者選項(xiàng)里關(guān)掉“HDMI音頻輸出”或者在build.prop里加persist.sys.audio.hdmi0如果一定要走HDMI音頻那要檢查設(shè)備樹(shù)里I2S和HDMI音頻控制器的配置確保音頻時(shí)鐘和通道映射正確。這個(gè)排查起來(lái)比較費(fèi)勁建議先用本地音頻頂著。4.2 外接顯示器看起來(lái)好糊的幾種典型情況“糊”這個(gè)描述太籠統(tǒng)要拆開(kāi)看。第一種是分辨率低于原生畫面被拉伸這種糊是均勻的軟。第二種是YUV420輸出文字邊緣有彩色毛邊這種糊是帶彩邊的。第三種是刷新率不對(duì)導(dǎo)致的動(dòng)態(tài)模糊靜止畫面清晰但一動(dòng)就糊。第四種是線材帶寬不夠TMDS信號(hào)衰減畫面有噪點(diǎn)或者閃爍。判斷方法很簡(jiǎn)單先看dumpsys display確認(rèn)分辨率和刷新率再看colorMode確認(rèn)色彩格式最后換一根短的高質(zhì)量線排除線材。三步下來(lái)基本能定位。4.3 800x480、360p這類低分辨率是怎么來(lái)的有些設(shè)備插上顯示器后輸出800x480或者640x360這通常是EDID讀取失敗后的fallback模式。安卓11在拿不到有效EDID時(shí)會(huì)用一個(gè)內(nèi)置的保守模式不同平臺(tái)這個(gè)保守模式不一樣。晶晨平臺(tái)常見(jiàn)800x480瑞芯微平臺(tái)常見(jiàn)1280x720高通平臺(tái)常見(jiàn)640x480。遇到這種情況先確認(rèn)EDID有沒(méi)有讀到。如果確實(shí)讀不到檢查HDMI接口的DDC引腳有沒(méi)有虛焊或者線材的DDC通道有沒(méi)有斷。有些廉價(jià)HDMI線只接了TMDS通道DDC和HPD壓根沒(méi)接這種線插上就是低分辨率或者不亮。4.4 修改后黑屏了怎么恢復(fù)改顯示配置最怕的就是改完黑屏尤其是改build.prop或者設(shè)備樹(shù)。恢復(fù)方法分幾種如果是build.prop改錯(cuò)可以通過(guò)adb在恢復(fù)模式下把備份文件推回去。如果是wm size改得太大導(dǎo)致界面不可用可以adb shell wm size reset恢復(fù)。如果是設(shè)備樹(shù)改錯(cuò)導(dǎo)致內(nèi)核起不來(lái)那就只能重新刷固件了。所以改之前一定要確認(rèn)有adb連接并且知道怎么進(jìn)恢復(fù)模式。電視盒子類設(shè)備通常需要短接或者按復(fù)位鍵進(jìn)刷機(jī)模式這個(gè)要提前查好。問(wèn)題快速判斷應(yīng)急處理改build.prop后黑屏adb還能連推回備份文件重啟wm size改壞界面顯示異常wm size reset設(shè)備樹(shù)改錯(cuò)內(nèi)核起不來(lái)重刷固件HDMI無(wú)輸出dmesg無(wú)HDMI日志查線材和HPD電路有畫面無(wú)聲音音頻路由錯(cuò)誤關(guān)HDMI音頻輸出4.5 幾個(gè)容易被忽略的細(xì)節(jié)第一個(gè)細(xì)節(jié)是HDMI線材版本。HDMI 1.4和2.0的帶寬差很多1.4最高只能到1080p602.0才能上4K60。如果你顯示器是4K但線是1.4的那系統(tǒng)協(xié)商下來(lái)最高就是1080p。這個(gè)在edid-decode里能看到顯示器的HDMI版本聲明但線材版本系統(tǒng)是不知道的只能自己確認(rèn)。第二個(gè)細(xì)節(jié)是顯示器的EDID可能被系統(tǒng)緩存了。有些設(shè)備在第一次讀取EDID后會(huì)緩存起來(lái)后面換顯示器不重新讀。遇到換了顯示器分辨率不變的情況可以嘗試重啟設(shè)備或者手動(dòng)觸發(fā)EDID重讀。第三個(gè)細(xì)節(jié)是部分設(shè)備的HDMI接口和DP接口共用顯示控制器插了HDMI之后DP那邊的輸出會(huì)受影響。這個(gè)在多接口設(shè)備上要注意排查時(shí)把其他顯示接口先拔掉。第四個(gè)細(xì)節(jié)是安卓11的DisplayManager在熱插拔時(shí)會(huì)有延遲有時(shí)候插上線要等幾秒系統(tǒng)才反應(yīng)過(guò)來(lái)。如果插上沒(méi)反應(yīng)等十秒再看別急著拔。5. 不同平臺(tái)的差異化處理思路5.1 晶晨S905系列的特殊處理S905L3A這類芯片在電視盒子上量很大安卓11固件也多。這類平臺(tái)的HDMI輸出配置通常在/vendor/etc/hdmi_config.xml或者/vendor/etc/display_config.xml里。文件里會(huì)有一個(gè)mode列表列出支持的分辨率。你可以把1920x1080p60加到列表最前面并把1280x720p60從默認(rèn)位置挪走。另外S905系列有個(gè)uboot階段的顯示配置在uboot環(huán)境變量里可以設(shè)outputmode。這個(gè)需要在串口下進(jìn)uboot命令行改改完saveenv。具體命令是setenv outputmode 1080p60hz saveenv這個(gè)改的是uboot階段的輸出模式對(duì)安卓啟動(dòng)后的模式選擇也有影響因?yàn)楹芏喙碳?huì)沿用uboot的設(shè)置。5.2 瑞芯微RK3576的適配要點(diǎn)RK3576跑安卓14的案例比較多但安卓11的適配思路類似。這類平臺(tái)HDMI輸出依賴內(nèi)核里的dw-hdmi驅(qū)動(dòng)和設(shè)備樹(shù)里的hdmi節(jié)點(diǎn)。設(shè)備樹(shù)里要確保ddc節(jié)點(diǎn)正確指向I2C控制器hpd引腳配置正確。如果EDID讀不到先查設(shè)備樹(shù)里I2C總線的clock-frequency是不是標(biāo)準(zhǔn)的100kHz有些配置寫成400kHz會(huì)導(dǎo)致DDC通信失敗。RK3576還有個(gè)特點(diǎn)是支持HDMI 2.1但安卓11的框架可能沒(méi)完全適配2.1的特性。如果顯示器是2.1的但系統(tǒng)只給2.0的模式可以在設(shè)備樹(shù)里把max-tmds-clk限制到對(duì)應(yīng)值強(qiáng)制走2.0協(xié)商。5.3 高通平臺(tái)的注意事項(xiàng)高通驍龍平臺(tái)的顯示框架和上面兩家不太一樣它用的是自己的SDM顯示驅(qū)動(dòng)。HDMI輸出配置通常在/vendor/etc/display下的display_config.xml里。高通平臺(tái)對(duì)EDID的解析比較規(guī)范但默認(rèn)模式選擇偏保守經(jīng)常給720p。改法是找到DisplayMode列表把1080p的模式權(quán)重調(diào)高。高通平臺(tái)還有個(gè)DisplayPort和HDMI共用的問(wèn)題如果設(shè)備同時(shí)有這兩個(gè)接口插了HDMI之后DP的輸出模式可能會(huì)被限制。這個(gè)要在display_config.xml里把兩個(gè)接口的模式列表分開(kāi)配置。5.4 通用思路總結(jié)不管什么平臺(tái)處理思路都是三步先確認(rèn)EDID讀到?jīng)]有再確認(rèn)系統(tǒng)選了什么模式最后改配置讓系統(tǒng)選對(duì)模式。第一步靠dmesg第二步靠dumpsys display第三步靠改/vendor下的配置文件或者設(shè)備樹(shù)。這三步走下來(lái)大部分分辨率問(wèn)題都能解決。唯一需要提醒的是不同平臺(tái)的配置文件路徑和格式差異很大網(wǎng)上搜到的教程不一定適用你的設(shè)備。最靠譜的辦法是先把設(shè)備root了然后到/vendor/etc下把所有和display、hdmi相關(guān)的文件列出來(lái)一個(gè)個(gè)看內(nèi)容找到那個(gè)列著分辨率列表的文件那就是你要改的。我在實(shí)際折騰這些設(shè)備的過(guò)程中最大的體會(huì)是不要迷信“自適應(yīng)”這三個(gè)字。安卓11的自適應(yīng)更多是保證“能亮”而不是保證“好看”。真正要讓外接顯示器點(diǎn)對(duì)點(diǎn)、色彩正確、刷新率拉滿還是得手動(dòng)干預(yù)。而且不同設(shè)備、不同固件、不同顯示器組合起來(lái)表現(xiàn)千差萬(wàn)別沒(méi)有一招通吃的方案。最實(shí)用的技能其實(shí)是學(xué)會(huì)看日志和dumpsys輸出從里面讀出系統(tǒng)當(dāng)前的真實(shí)狀態(tài)然后有針對(duì)性地改。這個(gè)能力比記住某個(gè)具體命令有用得多。