
Docker-Android 快速上手指南一條命令拉起容器化 Android 模擬器【免費(fèi)下載鏈接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server項(xiàng)目地址: https://gitcode.com/GitHub_Trending/do/docker-androidDocker-Android 把 Android 模擬器整個(gè)打包進(jìn) Docker 鏡像一條docker run就能在服務(wù)器上開(kāi)出 Galaxy S10、Nexus 7 等真機(jī)外觀的模擬器支持 noVNC 網(wǎng)頁(yè)查看、Appium UI 測(cè)試和 adb 外部控制。適合需要無(wú)頭環(huán)境跑安卓測(cè)試、CI 集成或演示的測(cè)試工程師、DevOps 和移動(dòng)端開(kāi)發(fā)者。二、它解決什么問(wèn)題本機(jī)裝 Android Studio 模擬器占幾 GB 磁盤還得跟 IDE 搶 CPU 和 GPU。CI 機(jī)器上想跑 UI 自動(dòng)化卻發(fā)現(xiàn) CI 是 Linux 裸機(jī)裝模擬器環(huán)境又慢又不穩(wěn)。多臺(tái)設(shè)備、多版本并行測(cè)試時(shí)本機(jī)根本開(kāi)不起。Docker-Android 的做法是模擬器 Android SDK noVNC adb 全部預(yù)裝在鏡像里按 Android 版本區(qū)分 tag9.0 到 14.0拉下來(lái)即用跑完刪掉不占地方。三、開(kāi)始前需要準(zhǔn)備什么硬件和系統(tǒng)要求如下提前確認(rèn)可以省掉后面大量排錯(cuò)時(shí)間項(xiàng)目要求說(shuō)明操作系統(tǒng)UbuntuLinux鏡像基于 Ubuntu 構(gòu)建只保證在 Ubuntu 宿主上運(yùn)行虛擬化CPU 支持 KVM 且已開(kāi)啟容器內(nèi)模擬器靠硬件加速跑沒(méi)有 KVM 基本起不來(lái)Docker已安裝并可正常使用docker run無(wú)需其他依賴macOS / Windows需要套一層 Ubuntu 虛擬機(jī)官方鏡像不支持直接在 Mac/Windows 上跑驗(yàn)證 KVM 是否可用sudo apt install cpu-checker kvm-ok輸出KVM acceleration can be used才算通過(guò)。四、最短路徑跑起來(lái)一條命令啟動(dòng) Android 11.0 Samsung Galaxy S10 模擬器docker run -d -p 6080:6080 \ -e EMULATOR_DEVICESamsung Galaxy S10 \ -e WEB_VNCtrue \ --device /dev/kvm \ --name android-container \ budtmo/docker-android:emulator_11.0參數(shù)逐個(gè)看-d后臺(tái)運(yùn)行容器。-p 6080:6080把容器內(nèi) noVNC 的 6080 端口映射出來(lái)供瀏覽器訪問(wèn)。-e EMULATOR_DEVICESamsung Galaxy S10指定設(shè)備型號(hào)和外觀皮膚支持 S10/S9/S8/S7/S6、Nexus 4/5/7/One/S、Pixel C 等。-e WEB_VNCtrue啟用網(wǎng)頁(yè)端查看不開(kāi)就只能用 VNC 客戶端連 5900 端口。--device /dev/kvm把宿主機(jī)的 KVM 設(shè)備透?jìng)鬟M(jìn)容器硬件加速的關(guān)鍵。--name android-container給容器起名后面docker exec、docker stop都靠它。budtmo/docker-android:emulator_11.0鏡像 tag按 Android 版本選emulator_9.0到emulator_14.0都有。鏡像里預(yù)置了這些設(shè)備型號(hào)的皮膚文件位于 mixins/configs/devices/EMULATOR_DEVICE的值必須和列表里的名字完全一致。等 1~2 分鐘首次啟動(dòng)模擬器較慢瀏覽器打開(kāi)http://localhost:6080你會(huì)看到模擬器桌面上立著一臺(tái) Galaxy S10能點(diǎn)能滑。隨時(shí)查啟動(dòng)進(jìn)度docker exec -it android-container cat device_status狀態(tài)變成boot_completed即代表安卓系統(tǒng)啟動(dòng)完成。五、常用配置速查核心開(kāi)關(guān)都是環(huán)境變量完整清單見(jiàn) CUSTOM_CONFIGURATIONS.md。VNC / 網(wǎng)頁(yè)訪問(wèn)變量作用示例WEB_VNC是否開(kāi)啟網(wǎng)頁(yè)端默認(rèn)端口 6080-e WEB_VNCtrueWEB_VNC_PORT改 noVNC 端口-e WEB_VNC_PORT6081配合-p 6081:6081VNC_PASSWORD給 VNC 連接加密碼-e VNC_PASSWORDthisissecretURL 上還能加參數(shù)http://localhost:6080/?autoconnecttrueview_onlytrue可直接自動(dòng)連接并設(shè)為只讀方便給別人看。模擬器本體變量作用默認(rèn)值EMULATOR_NAME自定義模擬器名字設(shè)備名 安卓版本EMULATOR_DATA_PARTITION數(shù)據(jù)分區(qū)大小550m裝 app 多就調(diào)大如900mEMULATOR_NO_SKIN去掉設(shè)備外殼皮膚省一點(diǎn)渲染開(kāi)銷falseEMULATOR_ADDITIONAL_ARGS透?jìng)魅我鈪?shù)給 android emulator 命令行見(jiàn) Android 官方文檔日志與測(cè)試變量作用WEB_LOG/WEB_LOG_PORT通過(guò)網(wǎng)頁(yè) UI 看容器內(nèi)日志文件默認(rèn)端口 9000APPIUM/APPIUM_ADDITIONAL_ARGS開(kāi)啟 Appium Server開(kāi) 4723 端口參數(shù)可透?jìng)鲾?shù)據(jù)持久化默認(rèn)行為是容器重啟后模擬器數(shù)據(jù)清空。需要保留裝的 app、賬號(hào)等狀態(tài)時(shí)把數(shù)據(jù)目錄掛成命名卷docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0六、跑起來(lái)之后能干什么adb 外部控制啟動(dòng)時(shí)加-p 5554:5554 -p 5555:5555宿主機(jī)執(zhí)行adb connect 容器IP:5555即可把容器內(nèi)模擬器當(dāng)成 adb 設(shè)備裝 apk、抓日志、發(fā)消息全都能做。細(xì)節(jié)見(jiàn) USE_CASE_CONTROL_EMULATOR.md。模擬短信docker exec -it android-container adb emu sms send 號(hào)碼 消息做 OTP 驗(yàn)證測(cè)試很方便。見(jiàn) USE_CASE_SMS.md。CI 集成Jenkins / 云主機(jī)上無(wú)頭跑見(jiàn) USE_CASE_JENKINS.md 和 USE_CASE_CLOUD.md。Appium UI 測(cè)試加-p 4723:4723 -e APPIUMtrue即可見(jiàn) USE_CASE_APPIUM.md。七、容易踩的坑坑 1容器起不來(lái) / 模擬器卡在啟動(dòng)。九成是 KVM 沒(méi)透?jìng)?。先跑kvm-ok確認(rèn)宿主機(jī)支持再確認(rèn)docker run帶了--device /dev/kvm。Windows 用戶在 WSL2 里還需要額外配置把用戶加進(jìn)kvm組、在.wslconfig開(kāi)nestedVirtualizationtrueREADME 的 WSL2 Hardware acceleration 一節(jié)有完整步驟???2瀏覽器打不開(kāi)localhost:6080。端口映射漏了或端口被占。確認(rèn)啟動(dòng)命令里有-p 6080:6080端口沖突就換WEB_VNC_PORT一起改兩邊保持一致。另外WEB_VNCtrue忘了設(shè)的話網(wǎng)頁(yè)入口根本不存在。坑 3重啟容器后 app 全沒(méi)了。這是默認(rèn)設(shè)計(jì)每次全新設(shè)備不是 bug。要么接受跑完即焚要么按上面數(shù)據(jù)持久化一節(jié)掛卷到/home/androidusr???4裝了幾個(gè)稍大的 app 就 OOM 或分區(qū)滿。默認(rèn)數(shù)據(jù)分區(qū)只有 550m用EMULATOR_DATA_PARTITION900m調(diào)大即可。延伸閱讀倉(cāng)庫(kù)內(nèi)文檔都在 documentations/ 目錄按使用場(chǎng)景組織USE_CASE_BUILD_ANDROID_PROJECT.md用鏡像編譯安卓工程USE_CASE_APPIUM.mdAppium 自動(dòng)化測(cè)試接入U(xiǎn)SE_CASE_CLOUD.md部署到 Azure / AWS / GCPDOCKER-ANDROID-PRO.mdPro 版功能對(duì)比代理、root、headless 等CUSTOM_CONFIGURATIONS.md全部可配環(huán)境變量與 URL 端點(diǎn)【免費(fèi)下載鏈接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server項(xiàng)目地址: https://gitcode.com/GitHub_Trending/do/docker-android創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考