在真實裝置上測試 Android App
Android App 相容性測試:150+ 款真實手機型號
在真實手機型號上測 Android App,就是你使用者手上真的在用的那些:11 個品牌、150+ 款機型,Android 12 到 17。每輪測試前回到乾淨的快照,要平行執行就複製,每台手機都能透過 ADB 和 API 操作。
你使用者手上的那些手機。
不用自建實驗室的 Android 測試機房:從入門的 Galaxy A 系列到今年的 Pixel,每款機型都依真機的完整資料打造,並在開放啟動前和真機逐項比對。這不是模擬器:Android 原生跑在 ARM 伺服器上,套用該機型的設定檔。
在真實螢幕上看版面
真實面板的解析度、像素密度和顯示特性,版面、截圖和畫面比對都和實機一致。
出廠時的圖形規格
真實晶片的 GPU 廠商與渲染器字串、OpenGL 和 Vulkan 版本,你的 App 看到的就是它預期的硬體。
內建 Google Play
Google Play 服務和 Play 商店像實體手機一樣裝好,需要它們登入、付款或更新的 App 都能正常運作。
每輪測試都是乾淨的手機。
把手機調到測試需要的狀態、拍下快照,之後每輪測試前都還原到那裡。一台不夠的話,就從同一個快照多複製幾台。一個呼叫就能還原乾淨的快照。
- 每輪測試前還原一個呼叫就讓手機回到乾淨的快照,每輪測試都從同一個狀態開始。
- 複製來平行執行從同一個快照開出新手機,每台都有自己的身分,把測試套件分到多台裝置上跑。
- 每晚備份排程每晚替手機拍快照;等待期間關機的手機不收費。
需要更底層時,用 ADB。
每台手機都有自己的 ADB 中繼。在你針對自己的 IP、設定好時限開啟之前,它都是關閉的,而且會拒絕任何可能損壞裝置的操作。
- 你開啟前一律關閉每台手機各自開啟,白名單最多 20 個 IP 或 CIDR。
- 時間到自動失效預設 24 小時,最長 7 天;閒置 30 分鐘的連線會自動關閉。
- 一次性登入代碼只顯示一次;輸錯代碼會鎖住中繼。每台手機最多 3 個連線,每個連線 push 和 pull 最多 2 GiB。
- 危險服務一律拒絕root、remount、disable-verity、reverse、reboot、tcpip、usb、jdwp、sideload 和 restore 一律拒絕。每個連線都有紀錄。
# 1. open ADB on qa01 for your IP, 24 hours (dashboard or API) curl -X POST https://api.clousd.com/v1/devices/qa01/adb \ -H "Authorization: Bearer $CLOUSD_KEY" \ -H "Content-Type: application/json" \ -d '{"allow_ips":["203.0.113.7"],"ttl_hours":24}' # → connect command and a one-time code, shown once # 2. connect and sign in with the code adb connect $HOST:$PORT adb -s $HOST:$PORT shell clousd-login $CODE # 3. work as usual adb -s $HOST:$PORT install app-debug.apk adb -s $HOST:$PORT shell pm list packages | grep example adb -s $HOST:$PORT logcat -d | tail -n 50
接進 CI。
測試需要的每個動作,都是 https://api.clousd.com/v1 上的 REST 呼叫。耗時較久的操作會回傳 202 和一個可輪詢的工作,金鑰也能限定只用在測試手機上,並設定唯讀或控制權限。請參考 REST API 與 ADB 中繼,以及 CI 相關路由。
API=https://api.clousd.com/v1 AUTH="Authorization: Bearer $CLOUSD_KEY" # reset qa01 to its clean snapshot and wait for the job JOB=$(curl -s -X POST -H "$AUTH" \ $API/devices/qa01/snapshots/v20/restore | jq -r .job.id) until [ "$(curl -s -H "$AUTH" $API/jobs/$JOB | jq -r .job.state)" \ != running ]; do sleep 3; done # install this build and open it curl -s -H "$AUTH" -F apk=@app-release.apk $API/devices/qa01/apk curl -s -H "$AUTH" -H "Content-Type: application/json" \ -d '{"op":"open_app","package":"com.example.app"}' \ $API/devices/qa01/action # keep the evidence curl -s -H "$AUTH" $API/devices/qa01/screenshot -o after.png curl -s -H "$AUTH" $API/devices/qa01/logs > logcat.txt
# the same steps on four phones at once, 0–5 s apart curl -X POST https://api.clousd.com/v1/groups -H "$AUTH" \ -H "Content-Type: application/json" -d '{ "phones": ["qa01", "qa02", "qa03", "qa04"], "steps": [ {"op": "open_app", "package": "com.example.app"}, {"op": "wait", "seconds": 3}, {"op": "if_text", "text": "Sign in", "skip": 1}, {"op": "screenshot"} ], "stagger": [0, 5] }' # 202 → progress per phone in job.output
# a key created with a webhook URL receives signed events POST https://ci.example.com/clousd X-Clousd-Signature: 9f2c…e41a {"event": "job.finished", "ts": …, "phone": "qa01", "job": {…}} # events: job.finished · health.problem · health.resolved # signature: HMAC-SHA256 of the body · 3 delivery attempts
在不同國家測你的 App。
給手機一個其他國家的出口,它的時區、語言、鍵盤、商店和 SIM 國家都會跟著變,你看到的 App 就和當地使用者看到的一樣。測試過程即時看得到,人不用離開座位。
你的網路變慢時,串流畫質會自動往下降一階,網路恢復就升回來。Multi-view 一次顯示多個畫面,Sync 把你的輸入同步到選定的手機上。
App 測試常見問題
還有其他問題?寫信給客服,由真人回覆,通常一個工作天內。
這是模擬器嗎?
不是。Android 原生跑在 ARM 伺服器上,套用真實手機型號的設定檔,所以你的 App 看到的是那款手機,而不是一台通用的模擬器裝置。雲手機和模擬器的差別
有免費試用嗎?
有。你的第一台手機可以免費用 30 分鐘,不用信用卡,也不用先儲值。之後採按分鐘計費,不按席位收費:手機開機時每分鐘 $0.004。
可以指定 Android 版本嗎?
可以,每台各自選。機型目錄裡每款機型都列出今天就能啟動的版本,從 Android 12 到 17。Android 12–14 是基本價;Android 15 加價 10%,Android 16 和 17 加價 25%。
測試之間怎麼重置手機?
先在乾淨狀態下拍一次快照,之後每輪測試前還原這個快照即可。只要一個 API 呼叫,會回傳 202 和一個工作,可在 /v1/jobs/{id} 輪詢。
測試套件可以平行跑嗎?
可以。從乾淨的快照複製出新手機,每台都有自己的身分,再把套件分配給它們;或是對整個群組執行相同步驟,加上隨機錯開時間。
ADB 會對外開放嗎?
不會。ADB 預設關閉。你可以針對每台手機開啟,白名單最多 20 個 IP 或 CIDR,並設定時限(預設 24 小時,最長 7 天),用一次性代碼登入,每個連線都有紀錄。
可以安裝自己的 APK 嗎?
可以:在控制台上傳、送到 POST /v1/devices/{id}/apk,或透過中繼用 adb install 安裝。
AI Agent 可以跑測試嗎?
可以,目前為搶先體驗:Agent 會讀取畫面和上面的元素,再透過 observe 和 act 呼叫點擊、輸入,每次都從乾淨的快照開始。請參考 由 Agent 驅動的測試。
可以測試 App 在其他國家的表現嗎?
可以。給手機一個那個國家的出口,它的時區、語言、鍵盤、商店和 SIM 國家都會跟著變。伺服器地區選離你團隊最近的,畫面和 ADB 就會很順。