AADisplay 在 Android 15 上失效?是 LSPosed 把它弄壞的——以及仍有人維護的替代方案
如果你的 AADisplay 最近不再於 Android Auto 顯示 App——尤其是在某次 Android 15 更新之後——原因幾乎都不是 AADisplay 本身。問題出在它底下那一層:LSPosed。這裡講清楚壞掉的是什麼、為什麼,以及一條完全不依賴 Xposed 那一套的、仍有人維護的路線。
簡短版
- AADisplay 是一個 Xposed/LSPosed 模組。如果 LSPosed 在你的 Android 版本上載入不起來,AADisplay 就跑不了——不管你在 AADisplay 裡怎麼改都一樣。
- LSPosed 已不再有人積極維護。在 Android 15 上,它只靠社群分支苟活,而那些分支很脆弱。
- 一個不使用 Xposed 的 root 投影,能繞過整條依賴鏈。KoalaMirror 就是這樣一個選項——而它共用了 AADisplay 的 VirtualDisplay 來歷,這值得誠實說明。
為什麼 AADisplay 現在會壞
AADisplay 的運作方式,是掛接 Android 系統框架,藉此擴充 Android Auto 願意顯示的內容。那份掛接的能力來自Xposed,而在現代 Android 上,Xposed 執行環境是由 LSPosed 提供的。
LSPosed 實際上已經停止——原專案已停擺,對較新 Android 版本的支援只活在社群分支裡。當那一層 Xposed 缺失或不穩定時,建立在它之上的每一個模組都會跟著它一起垮掉,AADisplay 也在內。再加上 Xposed 偵測和部分 ROM 的各種毛病,「去年還好好的,更新後現在一片黑屏」就是可以預料的結果。
AADisplay 是什麼——以及值得知道的來歷
該給的肯定要給:AADisplay 由 Nitsuya 開發,是一個開源(GPL-3.0)模組 ,它率先以巢狀 VirtualDisplay 技術,在 Android Auto 上顯示任意 Android App。這是個聰明的做法,也是這整個類別在概念上的源頭。
KoalaMirror 從同樣的點子長出來,但它是一次 獨立、clean-room 的重寫:它共用 VirtualDisplay 這個概念,而非 AADisplay 的程式碼。這道區隔是刻意的——它讓兩個專案清楚分開,也尊重 AADisplay 的開源授權,而不是在它之上蓋一個產品。
仍有人維護的路線:有 root,但不要 Xposed 那一套
關鍵的洞見在這裡:把 AADisplay 弄壞的那個依賴是 Xposed/LSPosed——不是 root 本身。一種使用 root 和 Zygisk 執行環境(Magisk、KernelSU 或 APatch)、不用 Xposed 的投影做法,永遠不會碰到 LSPosed。
KoalaMirror 就是這樣運作的:裝好 APK、點一下 Deploy——它會幫你配置好 Zygisk 模組,如果你的 root 方案沒有內建 Zygisk 執行環境,還會一併裝上 ReZygisk——重新啟動一次,然後連上你的車。橫跨各次 Android 更新,都 沒有 LSPosed 範圍要設定,也沒有 Xposed 模組要一直顧著它活著 。
哪裡一樣,哪裡不同
- 同一家族。 兩者都用 VirtualDisplay 的點子,透過 Android Auto 算繪出一塊獨立的顯示介面,所以你拿到的是真實的 App 和真實的版面,不是 Google 的範本清單。
- 形狀不同。 AADisplay 是一個你得手動設定的原始 LSPosed 模組——啟用範圍、註冊一個桌面套件。KoalaMirror 則是一個打包好、有支援的產品,一鍵部署、並追蹤 Android Auto 相容性。
- 一個誠實的但書。 任何搭著 Android Auto 走的做法,都得跟上 Android Auto 的變動。AADisplay 和 KoalaMirror 只是依賴不同的層——Xposed 對上 root + Zygisk 模組。面對 Android Auto 本身的變動,沒有哪一個是免疫的。