前回紹介したEven Realities G2ですが、個人的に最も関心が高いのはアプリ開発です。
G2向けSDKの公開が近いうちに予定されていますが、調べてみるとG1のときにGitHubリポジトリがあったようです。
Even RealitiesのDiscordをみてみると、それをForkしている人もいました。
そこで、今回はG1向け公式リポジトリ「EvenDemoApp」を使ってビルドしてみました。
その結果、以下がわかりました。
- このリポジトリはスマホアプリ (ios/android) 開発向け
- G1とペアリングできるアプリは1つだけ
- つまり、オリジナルアプリ-G1のペアを作る前に、公式アプリ-G1のペアリングを削除する必要がある
試したところ、iOS/Androidでのビルド、および各アプリからG2の認識はできました。しかし、アプリからメッセージを送るなどはできませんでした。
せっかくなので、ビルド方法を書いておきます。
1/22追記
この記事に書いてある内容ではビルドまでしかできないので、こちらの記事をご覧ください。
G2と連動できるスマートフォンアプリのリポジトリはこちらです。(適宜更新予定)
今回の環境
- Mac OS Tahoe 26.2
- iPhone 15 Pro (iOS 26.2)
- Nothing Phone 3a (Android 16)
- Xcode 26.01
- Android Studio 2025.2
- Flutter 3.38.6
1. Even Realitiesはサンプルアプリを公開している。しかし、構築方法や使い方の詳細が書かれていない
こちらが公開されているリポジトリです。
github.com
しかし、Readmeを読んでいただくとわかりますが、これが何で、どうするとビルドできるか、どのように使えばよいのかは何も書いていません。通信プロトコルの詳細仕様は書いてあります。
似たようなことはRedditでも指摘されています。
Readme on that repo is quite interesting - it doesn't seem to be related to the demo app at all - instead it contains unsorted bits of notes about the G1 protocol (valuable bit of information).
そのリポジトリの Readme は非常に興味深いものです。デモ アプリとはまったく関係がないようですが、代わりに G1 プロトコルに関する未整理のメモが含まれています (貴重な情報です)。
https://www.reddit.com/r/EvenRealities/comments/1ivh0zl/making_custom_apps_for_even_realities_g1/
そこで、Even RealitiesのDiscordを読んでいくと、このリポジトリをforkした人のReadmeに少し手順らしきものが書いてありました。
このReadmeの説明でFlutterを使っていることがわかり、Flutterの基本的な情報を色々調べたところ、ビルドの手順がわかりました。
補足:上記のリポジトリは cp .env.example .env とあるのですが、そもそも.gitIgnoreで.env*で除外されているので.env.exampleが存在せず、初手からつまづいたので追えていません。
2. 環境構築
2.1 公式リポジトリをダウンロードしFlutterで環境構築
リポジトリはこのような構成です。
手順はタイトルの通りです。これはFlutterを使ったプロジェクトなので、まずはFlutterの環境構築をします。
こちらのFlutter公式サイト?に手順がありました。
[1] Visual Studio CodeのExtensionとして導入
こちらをインストールします。
marketplace.visualstudio.com
[2] Visual Studio Codeから新規プロジェクトを初回作成する
cmd(ctrl)+shift+pでコマンドパレットを出して、flutter new projectを実行します。Download SDK?というメッセージが出るのでyesを押します。
SDK相当のbinファイルなどを保存するディレクトリを聞かれます。これはDocumentsフォルダなどどこでもよいです。あとでPATHを通すためです。
[3] PATHを通す
Macの場合、~/.zshrcファイルを開いてこのように書きます。 (Documents/Flutter_SDKというフォルダに作った場合)
export PATH="$HOME/Documents/Flutter_SDK/flutter/bin:$PATH"
その後以下を実行して、flutterコマンドが実行できることを確認します。
$ source ~/.zshrc $ flutter --version flutter --version Flutter 3.38.6 • channel stable • https://github.com/flutter/flutter.git Framework • revision 8b87286849 (4 days ago) • 2026-01-08 10:49:17 -0800 Engine • hash 6f3039bf7c3cb5306513c75092822d4d94716003 (revision 78fc3012e4) (4 days ago) • 2026-01-07 18:42:12.000Z Tools • Dart 3.10.7 • DevTools 2.51.1
2.2 flutter pub getを実行して、依存関係解決、必要なパッケージをダウンロード
ダウンロードしたリポジトリのトップディレクトリで以下を実行します。
$ flutter pub get
これで、pubspec.yamlに書かれたパッケージの依存関係解決、ダウンロードが行われます。
2.3.1 (iOSの場合) iosフォルダでコマンド実行してからXcodeを開いてビルド
このようなコマンドを実行します。
$ cd ios $ flutter precache --ios $ pod install
その後、iosフォルダを指定してXcodeで開きます。あとは一般的なビルド手順でビルドしてiPhone実機にデプロイします。
2.3.2 (Androidの場合) androidフォルダをAndroid Studioで開いてからビルド
こちらは記述が古いためなのか、そのままではビルドが通らなかったので以下を直しました。
Android Studio内蔵のGemini No cost tierで確認しています。
◾️setting.gradleの8.1.0を8.1.1にする
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.1.1" apply false
id "org.jetbrains.kotlin.android" version "1.8.22" apply false
}
◾️FlutterToastPlugin.kt
冒頭の下記をコメントアウト
//import io.flutter.plugin.common.PluginRegistry.Registrar
この後直すMethodCallHandlerImplの引数変更に合わせて修正
private fun setupChannel(messenger: BinaryMessenger, context: Context, binding: FlutterPlugin.FlutterPluginBinding){ channel = MethodChannel(messenger, "PonnamKarthik/fluttertoast",) val handler = MethodCallHandlerImpl(context,binding) channel?.setMethodCallHandler(handler,) }
◾️MethodCallHandlerImpl.kt
冒頭の下記をコメントアウト
//import io.flutter.view.FlutterMain
◾️fontAssetのif文3箇所を以下のように修正
if (fontAsset != null) { val key = flutterPluginBinding.flutterAssets.getAssetFilePathByName(fontAsset) textView.typeface = Typeface.createFromAsset(context.assets, key); }
これでビルドして実機で確認できました。
3. 動作確認結果
使い方ですが、公式アプリとG2の接続を切った状態で、今回デプロイしたアプリを開き、画面冒頭の「Not Installed」ボタンをタップします。
すると、そばにあるペア候補のG2情報が表示されるので選択すると、下記のような画面になります。
Xでも紹介しました。
Even Reality G1向けのサンプルアプリをビルドしてG2に接続したら、認識まではできました。テキスト送信とかができないですが、調整不備かG2非対応のどちらかが不明です。 前者の可能性があるのでもう少し調べてみます。 pic.twitter.com/9JOaGf8hFg
— Limes (@limes2018) 2026年1月11日
このアプリを使うと、アプリからG2に対して、
- BMP形式の画像送付
- Notification送付
- テキストメッセージ送付
ができるようです。
しかし、BMP, Notification, テキストを試しましたが、G2側には何も表示されませんでした。
ここまではiOS, Androidで共通です。
一方、iOSの場合ですがXcodeでデプロイした直後 (Xcode上でログが表示される状態) であれば使えるのですが、XcodeとiPhoneの接続を切って、iPhone単体でアプリを実行すると瞬間で終了してしまいます。
Provisioning Fileの有効期限が切れた時のような挙動です。色々試したのですが解決できませんでした。
4. おわりに
ひとまずiOS/Androidアプリのどちらでも、G2と接続できることはわかりました。あとは、このリポジトリはそもそもG1で動くのかを知りたいところです。
というのも、1年前のredditでこのように書いてあり、このリポジトリは2年前からほとんど変わっていないようです。
Official demo app (https://github.com/even-realities/EvenDemoApp/) - contains a skeleton of a demo app, although without the ability to actually connect to glasses. My attempts in running it on Android resulted in a few screens that can be navigated around but not doing anything with the glasses.
公式デモアプリ (https://github.com/even-realities/EvenDemoApp/) - デモアプリの骨組みは含まれていますが、実際にメガネに接続することはできません。Androidで実行してみたところ、いくつかの画面は操作できるものの、メガネに何も反応しませんでした。
G2向け公式SDKを待ちつつ、時間があればもう少し通信周りを調べてみたいと思います。

