跳至主要内容

與主機共享檔案

02 x86_64 方案:BlissOS 硬碟開機與資料碟 與 03 arm64 方案:PixelOS GSI 虛擬機 的共同延伸。方法兩條路線一樣,只有主機位址不同。

前提:先確定主機位址​

UTM 網路模式客體位址主機位址用於
Shared Network192.168.64.x192.168.64.1x86 方案
Emulated VLAN10.0.2.1510.0.2.2arm64 方案

客體內勿用 127.0.0.1 連主機,那是 Android 自己。

方法 A:macOS SMB(建議,可讀可寫)​

主機端:系統設定 → 一般 → 共享 → 開啟「檔案共享」,按 + 加入資料夾並設「讀取與寫入」,選項確認 SMB 已啟用(macOS 的 SMB 服務即 smbd,開了檔案共享才會聽 445 port)。

Android 端:從 Play Store 裝支援 SMB 的檔案管理器(Material Files、CX 檔案總管等),新增 SMB 位置:

  • Shared:smb://192.168.64.1/<共享名稱>
  • Emulated:smb://10.0.2.2/<共享名稱>

選「帳號密碼」登入(不要 Guest),帳號為 macOS 使用者名稱;App 強制要 Domain 可試 WORKGROUP。

主機端檢查:nc -z -v <主機位址> 445。

方法 B:主機 HTTP(唯讀,最快)​

cd <共享資料夾>
python3 -m http.server 8000

Android 瀏覽器開 http://<主機位址>:8000/ 下載。打得開就代表主機位址正確、連線正常。

方法 C:ADB 傳檔​

前置:VM 執行中,且客體 adbd 有跑(開機完成後才有)。

arm64(PixelOS):QEMU 已把客體 5555 轉發到主機,直接連本機:

adb connect 127.0.0.1:5555
adb devices

連線不需授權對話框(GRUB cmdline 帶 androidboot.insecure_adb=1)。 要能 adb shell,客體必須開啟「開發人員選項 → USB 偵錯」;未開啟時 adb devices 仍顯示 device,但 shell 會回 error: closed。 若顯示 offline,adb kill-server 後重連。

x86(BlissOS):預設沒開 ADB TCP,先在客體 root shell 啟用:

setprop service.adb.tcp.port 5555
stop adbd
start adbd
ip -4 addr show # 看客體 IP,例如 192.168.64.3

主機再連客體 IP(不是 127.0.0.1):

adb connect 192.168.64.3:5555

傳檔:

adb push /path/to/file /sdcard/Download/
adb pull /sdcard/Download/file .

遇到 remote fchown failed 先推暫存再複製:

adb push file.apk /data/local/tmp/file.apk
adb shell cp /data/local/tmp/file.apk /data/media/0/Download/file.apk

方法 D:UTM 內建共享(不適用)​

UTM 4.7.5 只有 None / WebDAV(SPICE)/ VirtFS(9p),沒有 virtiofs——而 virtiofs 是 Android 客體唯一認得的半虛擬化檔案共享;LineageOS 客體 fstab 期待 type=virtiofs,開機噴:

[libfs_mgr] __mount(source=share,target=/mnt/vendor/shared,type=virtiofs)=-1: Invalid argument

掛不起來,一般 App 也讀不到 vendor 掛載點。請走方法 A 或 B。

注意​

  • App 看不到網路共享:Google Photos 這類 App 只掃 Android 自己的媒體庫(MediaStore),SMB/HTTP 共享資料夾不會出現在相簿或備份選項裡。要把本機照片上傳相簿,得用 ADB 推進內部儲存(見 05 無限空間 Google 相簿 的「把本機照片匯入並上傳」)。
  • SMB/HTTP 只是網路共享,不會增加 Android「設定 → 儲存空間」的內部容量;真正提供持久化空間的是各方案自己的資料碟。
  • 多數 App 不能直接讀網路路徑:先複製到 Download,或用系統檔案選擇器授權。
  • SMB 需「檔案共享」保持開啟;http.server 關掉就沒了。