Just My Life & My Work

增加 Android 模擬器容量

從開發 Flutter App 開始,我除了要使用 iOS 模擬器外,還要召喚 Android 模擬器,兩平台護衛協助我研發與測試。😀

通常我都使用預設狀態的模擬器,一般來說不太會有問題。然而對於不熟 Android 模擬器的我,遇到比較棘手的像是模擬器空間不足,使得我無法安裝 APK 檔。

.

現在請 AI 助手幫我擬 Script,這個版本會自動:

  • 啟動模擬器
  • 偵測所有 AVD
  • 選擇要修改哪一個
  • 自動改成 8GB
  • Wipe Data

程式碼如下:

#!/bin/bash

AVD_DIR="$HOME/.android/avd"
EMULATOR_PATH="$HOME/Library/Android/sdk/emulator/emulator"  # macOS 預設
# Linux 預設: ~/Android/Sdk/emulator/emulator

if [ ! -d "$AVD_DIR" ]; then
    echo "❌ 找不到模擬器資料夾"
    exit 1
fi

echo "🔍 偵測到以下模擬器:"
count=0
for dir in "$AVD_DIR"/*.avd; do
    ((count++))
    avds[$count]=$(basename "$dir" .avd)
    echo "  $count. ${avds[$count]}"
done

if [ $count -eq 0 ]; then
    echo "❌ 沒有找到任何模擬器"
    exit 1
fi

read -p "請輸入要修改的模擬器編號(1-$count): " choice
AVD_NAME="${avds[$choice]}"

if [ -z "$AVD_NAME" ]; then
    echo "❌ 選擇無效"
    exit 1
fi

AVD_PATH="$AVD_DIR/$AVD_NAME.avd/config.ini"

# 修改容量
if grep -q "^disk.dataPartition.size=" "$AVD_PATH"; then
    sed -i.bak 's/^disk.dataPartition.size=.*/disk.dataPartition.size=64G/' "$AVD_PATH"
else
    echo "disk.dataPartition.size=8G" >> "$AVD_PATH"
fi
echo "✅ $AVD_NAME 容量已改成 8GB"

# 清空資料
echo "🔄 正在清空模擬器資料..."
"$EMULATOR_PATH" -avd "$AVD_NAME" -wipe-data -no-boot-anim

# 啟動模擬器
echo "🚀 正在啟動模擬器..."
"$EMULATOR_PATH" -avd "$AVD_NAME"

將上述程式碼儲存為 set_avd_size_and_start.sh

執行 ./set_avd_size_and_start.sh

🔍 偵測到以下模擬器:

  1. Pixel_3a_API_32_arm64-v8a
  2. Pixel_5_API_30
  3. Pixel_XL_API_31
    請輸入要修改的模擬器編號(1-��: 3
    INFO | Android emulator version 31.2.8.0 (build_id 8143646) (CL:N/A)
    WARNING | unexpected system image feature string, emulator might not function correctly, please try updating the emulator.
    ERROR | Not enough space to create userdata partition. Available: 61674.085938 MB at /Users/happyman/.android/avd/Pixel_XL_API_31.avd, need 78643.200000 MB.

.

錯誤訊息顯示:

  • 可用空間:61674 MB(大約 60.2 GB)
  • 需求空間:78643 MB(64 GB + 系統額外需求)

也就是說,磁碟可用空間比設定值少,所以模擬器起不來。

.

於是我將筆電空間釋出 90GB,終於可以順利開啟模擬器,看裡頭空間高達 128GB,這下子就不用再擔心沒空間可用!三年前若我知道可以這麼作,就不用省吃儉用空間啦~🤪

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲