root なしで Android の GPS 位置を偽装
位置の偽装は root なしではできない、という思い込みがいまだにあります。それは古い情報です。仮の位置情報の仕組みは Android に組み込まれており、ユーザーが開発者向けオプションで選んだアプリなら誰でも使えます。この方法で何ができて何ができないのか、そしてもう 1 つの選択肢であるファームウェアの改変が、思ったより高くつく理由を見ていきます。
本当に root が不要か確認する
システムを通じて通常の方法で位置を取得するアプリ(地図、天気、周辺検索、開発中・テスト中の自分のアプリ)に座標を提供するのが目的なら、標準の仕組みで十分です。ほとんどの使い方がこれに当たります。

開発者モードをオンにする
設定 →「デバイス情報」→「ビルド番号」を 7 回タップします。設定に「開発者向けオプション」が表示されます。UI によって、最上位、「システム」の中、「追加設定」の中のいずれかにあります。

仮の現在地情報アプリを選ぶ
開発者向けオプションで「仮の現在地情報アプリを選択」を見つけ、インストールしたアプリを選びます。有効にできるのは一度に 1 つだけで、システムは複数のアプリが同時に座標を提供することを許可しません。

偽装を開始して確認する
地図で地点を選んで偽装をオンにし、別の地図アプリを開きます。選んだ地点が表示されれば、仕組みはシステムレベルで機能しており、追加の権限は必要なかったということです。

実際の仕組み
Android は、選ばれたアプリがいわゆるテスト用の位置情報プロバイダーを登録し、そこに座標を書き込むことを許可します。システムは、通常の方法で位置を求めるすべてのアプリにその座標を渡します。モバイルアプリの自動テストも同じ仕組みを使っています。そもそも何かを回避するためではなく、開発のために作られた仕組みです。
そのため偽装にはスーパーユーザーの権限が不要です。アプリはほかのプロセスに干渉したり、システムライブラリを書き換えたりせず、ユーザーが意図してオンにした、公式に提供されている機能を使います。
root で得られるものと、その代償
ファームウェアの改変で根本的に加わるのは、偽装の事実を隠す能力だけです。「仮の情報源」フラグを取り除き、それを確認するアプリをだますことです。これにはブートローダーのロック解除と、Magisk などのモジュールが必要です。
代償:保証を失い、一部の銀行アプリやサービスがシステムの完全性チェックのために起動しなくなり、ファームウェアのアップデートが正常にインストールできなくなり、書き込みに失敗するとスマートフォンが使えなくなることもあります。私たちはこの方法をサポートも説明もしません。Mock Location は 標準の仕組み の範囲内だけで動作します。
限界はどこにあるか
root なしでは、偽装はそれを見ようとするアプリにはそのまま見えます。位置が事実の証明になるサービス(配達の完了確認、勤怠管理、位置に応じた特典)は通常この確認を行い、偽装した座標では動作しません。チート対策のあるゲームも同様です。
これは特定のアプリの欠陥ではなく、設計上の意図的な選択です。アプリはシステムが許可することを行い、それ以上ができるふりはしません。
偽装と VPN の違い
この 2 つはよく混同されます。VPN はネットワーク通信の発信元を変えます。IP アドレスから、サービスはあなたが別の国にいると判断します。位置の偽装は、OS がアプリに渡す座標を変えます。
これらは別々の経路で、互いの代わりにはなりません。IP で位置を判断するアプリは偽装した座標に気づかず、システムに座標を尋ねるアプリは VPN に気づきません。両方が必要な場合もあります。