今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

microg/GmsCore

Google Play サービスが利用できないシステムでアプリを動作させるオープンソースフレームワーク

LineageOSなどGoogle Play Servicesが入っていないカスタムROMでも、GmsCoreを導入すれば地図アプリやプッシュ通知に頼るアプリをそのまま動かせます。Google Maps・Firebase・GCMなど主要APIをオープンソースで再実装しているため、動作の中身を自分の目で確認しながら、必要な機能だけを選んでプライバシーを守れるのが実感できるはずです。12年続くFLOSSプロジェクトで、Gradleビルドやマルチモジュール構成、CI/CDパイプラインまで整っているので、今の端末に導入してGoogle依存アプリが普通に立ち上がる瞬間を今日試してみたくなります。

01 / 概要
何をするものか一文で言うと
ひとことでGoogle Play サービスが利用できないシステムでアプリを動作させるオープンソースフレームワーク

GmsCoreはGoogle Play ServicesをオープンソースでAndroid上に再実装するmicroGプロジェクトの中核リポジトリです。Google Cloud Messaging・Firebase Auth・Dynamic Links・位置情報・Mapsなど、Playサービス依存アプリを非正規環境でも動かすためのモジュール群を提供します。Java・Kotlin混在のマルチモジュールGradleプロジェクトとして構成されています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

リポジトリはGradleのマルチプロジェクト構成で、play-services-basementを中心に firebase-auth・firebase-dynamic-links・fake-signatureなど機能ごとにモジュールが分かれています。各モジュールはGoogleの公式AIDLインターフェース(例: IFirebaseAuthService.aidl)をそのまま実装し、SafeParcelという独自のシリアライズ機構(safe-parcel-processorへのannotationProcessor依存)でGoogle製アプリと同じバイナリプロトコルを再現します。fake-signatureモジュールはアプリの署名検証を回避するための仕組みで、HuaweiのISignatureService.aidlを模した独自サービスをContentProviderとBOOT_COMPLETEDレシーバーで起動し、SQLiteデータベース(app_list.db)でアプリごとに偽装対象かどうかを管理します。firebase-authモジュールはIdentityToolkitClient.ktやReCaptchaActivity.ktを通じてGoogleの認証APIサーバーと直接通信し、Firebase Authに依存するアプリにローカルで応答を返します。build.gradleではgitのタグとコミット数からバージョン名を自動生成する仕組みがあり、Playサービスのバージョン番号体系(gmsVersion=

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    リポジトリをcloneし、READMEに従ってGitHub wikiのダウンロードページを確認すると、ソースからのビルドではなく配布APKの案内が中心だと分かります。

  2. STEP 02

    ./gradlew assembleでビルドを試みると、Android SDK・NDK・local.propertiesの設定が必要で、androidCompileSdk 35など特定バージョンの環境準備が求められます。

  3. STEP 03

    fake-signatureモジュールをHuaweiフレーバー付きでビルドすると、署名偽装サービスがBOOT_COMPLETED時に自動起動する設定を実機で確認できます。

  4. STEP 04

    firebase-authモジュールのAIDLファイル群を読むと、Google公式のFirebase Auth API呼び出し(サインイン・メール認証・電話番号認証など)が網羅的に再実装されていることが分かります。

  5. STEP 05

    GitHub Actionsのbuild.ymlとdependency-submission.ymlを見ると、CIで自動ビルドと依存関係の検証が継続的に行われている実態が確認できます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

手元にはPlay Servicesの主要機能(プッシュ通知・Firebase Auth・Dynamic Links・位置情報など)をエミュレートするAndroidシステムアプリのソース一式が残ります。ビルドに成功すれば、Google Playサービス非搭載端末でもGoogle依存アプリを動作させるためのAPK群が得られます。ただし実際の導入・検証にはAndroid端末またはカスタムROMでのシステムアプリ権限設定が別途必要です。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

READMEはビルド手順を詳述せず、wikiへの誘導のみのため、実際の導入手順はこのリポジトリだけでは完結しません。

02

fake-signatureのようなモジュールは署名検証回避という性質上、対象アプリの利用規約やセキュリティモデルと衝突する可能性があります。

03

AIDLベースの再実装はGoogle側のAPI変更に追従し続ける必要があり、gmsVersion="25.24.32"のように頻繁なバージョン更新が前提の構造です。

04

代表ファイルの多くはAIDL定義やデータクラスであり、実際の通信ロジックやサーバー応答の正確な再現度はソースの一部だけでは判断しきれません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

Google Play Services非搭載端末やカスタムROM・LineageOS系ユーザーで、プッシュ通知やFirebase認証などGoogle依存機能を必要とするアプリを動かしたい人に向いています。ソース構成・AIDL定義・CI設定から見て、実装は表面的なスタブではなくGoogle公式APIの構造を忠実に踏襲した本格的な再実装だと判断できます。ただし実運用にはAndroid端末側でのシステム権限設定や個別アプリとの互換性確認が別途必要で、このリポジトリの閲覧だけで動作保証まではできません。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する