在上一篇文章中,我們先了解了虛擬定位是什麼,以及為什麼手機可以讓部分 App 顯示一個與實際位置不同的座標。到了 Android 平台,這件事情其實有一套比較明確的測試機制,而不是單純依靠某個 App 把 GPS 數字改掉。 Android 官方的開發者選項中,就提供了 Select mock location app,也就是選擇模擬位置 App 的功能。Google 對這項功能的說明很直接,它主要是用來測試 App 在不同位置下是否能正常運作。 因此,如果只是想了解 Android 虛擬定位,先理解 Mock Location 的概念,比直接下載一個來路不明的定位工具更加重要。

Android 的虛擬定位到底是什麼?

Android 的位置資料並不是直接交給每一個 App 去讀取 GPS 衛星訊號,而是由系統的位置服務提供位置結果。Android 的 Location 物件本身包含緯度、經度、時間、準確度等資訊,而系統也允許測試環境提交 Mock Location。 這代表虛擬定位的核心概念,其實是讓系統中的位置服務取得一個測試用的位置,再讓需要位置資訊的 App 取得這個結果。它與真正移動到另一個城市完全是兩回事,也不代表手機的所有位置相關資訊都會一起改變。 Android 官方甚至提供了專門的 Mock Location App 設定,讓開發者可以選擇哪個應用程式負責提供模擬位置。這也是 Android 虛擬定位比較容易被拿來做 App 測試的原因。

開發者選項中的模擬位置怎麼運作?

Android 的開發者選項並不是一般使用者每天都會接觸的功能,其中包含 USB debugging、Debug App 以及 Mock Location 等多種開發與測試工具。啟用模擬位置後,可以指定一個支援 GPS 模擬的 App,讓它提供測試位置。 從開發角度來看,這項功能非常實用。例如開發一個地圖、天氣或交通 App 時,不可能每測試一個地點就真的帶著手機前往當地,因此開發者可以利用模擬位置檢查 App 在不同地理位置下是否能正常工作。 Android 的 LocationManager 也提供測試位置相關機制,測試位置可以被標記為 Mock Location,而 App 甚至可以透過 Android 提供的 API 判斷某個位置是否屬於模擬位置。

Android 虛擬定位可以拿來做什麼?

最典型的用途其實是軟體開發與測試,而不是一般人想像中的位置欺騙。

  1. App 開發測試
  2. 地圖與導航功能測試
  3. 不同城市的地理內容測試
  4. 定位錯誤與異常情境測試

例如一個天氣 App 需要根據使用者所在地顯示當地天氣,開發者就可以透過模擬位置測試東京、倫敦或紐約等不同地點,而不需要實際前往這些城市。 對於需要根據地理位置改變內容的服務,這種測試方式可以節省大量時間。Android 官方的開發文件也將 Mock Location 放在 App 位置功能測試的使用情境中。

為什麼有些 App 可以發現你使用了虛擬定位?

這是很多使用者第一次接觸虛擬定位時容易忽略的地方。 Android 本身允許 App 判斷某些位置是否被標記為 Mock Location。官方 Location API 提供 isMock(),讓應用程式可以識別位置資料是否屬於模擬位置。 因此,並不是只要手機地圖上的位置改變,就代表所有 App 都會把它當成正常的實際位置。有些 App 可能只需要座標本身,有些則會進一步檢查位置來源或其他裝置狀態。 這也是為什麼不同 App 對虛擬定位可能出現完全不同的反應。某個 App 正常顯示指定位置,並不代表另一個 App 也一定會接受相同的位置資料。

使用 Android 虛擬定位時,還需要注意什麼?

首先,虛擬定位最好理解成一種測試機制,而不是完全隱藏真實位置的方法。即使某個 App 取得了模擬座標,其他服務仍可能根據 IP、Wi-Fi、行動網路或帳號相關資訊得到不同的位置線索。 另外,Android 的位置權限本身也有精確與概略位置之分。Android 12 及以上版本允許使用者選擇只提供概略位置,因此 App 是否能取得精確位置,也受到使用者授權設定影響。 如果只是為了測試自己的 App,優先使用 Android 官方提供的開發者工具與測試機制會比較合理。如果需要安裝第三方虛擬定位工具,也應該先確認來源、權限與隱私政策,不要為了一個定位功能而交出過多裝置權限。

Android 開發者選項中的模擬位置與手機定位資料概念

Android 虛擬定位常見問題

開啟開發者選項後,就可以直接修改手機位置嗎?

不完全是。開發者選項只是提供 Android 的開發與測試功能,其中包含模擬位置相關設定,但通常還需要選擇一個 Mock Location App,由它提供測試位置。 Android 官方文件將 Select mock location app 定義為用來選擇提供模擬 GPS 位置的 App,主要用途是測試應用程式在其他位置下的行為。 因此,開啟開發者選項本身並不等於手機已經開始虛擬定位。你還需要理解手機系統、Mock Location App 和目標 App 之間的關係,才能知道位置資料究竟是從哪裡來的。

為什麼虛擬定位成功了,有些 App 還是知道位置不正常?

因為 App 取得位置時,不一定只關心經緯度。Android 提供的 API 可以讓 App 判斷位置是否屬於 Mock Location,因此部分應用程式可以知道目前的位置資料具有模擬來源。 此外,位置也可能透過其他來源被判斷,例如 IP、Wi-Fi、行動網路以及帳號活動。如果不同來源得到的位置彼此差距很大,服務就可能認為目前的位置狀態不符合一般使用情境。 所以虛擬定位成功顯示一個座標,與讓所有服務都相信你真的位於該地,是完全不同的事情。

使用 Android 虛擬定位會不會影響手機安全?

正常使用 Android 官方提供的開發與測試功能,本身並不等於手機受到攻擊。真正需要注意的是你選擇的第三方工具以及它要求的權限。 如果某個定位工具要求安裝來源不明的程式、提供過多裝置權限、登入重要帳號,或者要求關閉系統安全功能,就應該先停下來確認原因。虛擬定位只是一項功能,沒有必要為了改變位置而承擔不必要的隱私風險。 如果目的是測試 App,使用官方開發機制通常更加容易理解,也比較方便在測試完成後恢復原本的裝置設定。

One Key Takeaway: Android 的虛擬定位主要用於測試,能提供模擬座標,但不代表所有 App 都會接受或無法辨識。