




Even Hubにようやくアプリ提出できた 1か月半フル稼働でまじで道のり長すぎた 審査通れば来週あたりのEven Hubストア公開日に使えます👩🦰
ミスターVR / Mr.VR🕶
7.6K posts

@3DVR3
最新のVR・AR・MR情報を動画で分かりやすく伝えます☺︎🕶 AI×XR / VR解説YouTube https://t.co/ZcjTw8HEtj / 監修ゲーム🔞ミスター秘密侵入VR @MrVR_GameCreat / 自作WebXRゲーム https://t.co/v8iIiWfIHf





Even Hubにようやくアプリ提出できた 1か月半フル稼働でまじで道のり長すぎた 審査通れば来週あたりのEven Hubストア公開日に使えます👩🦰

Even G2でアプリ開発・審査・ストア公開までやって分かったことまとめ これからEven Hubでアプリを作る人の参考になれば! 【開発・検証】 1. GUIシミュレーターがある @evenrealities/evenhub-simulator を使えばグラス未所持でもPC上で開発できる。 ただし、BLE転送の詰まり、スマホロック中やバックグラウンド時の挙動、画像サイズ制限、実機側の異常終了まわりは実機と差が出る。 2. CLIツールもある @evenrealities/evenhub-cli。 evenhub init で app.json 作成、evenhub pack で .ehpk 生成、evenhub qr で開発URL用QRコード生成。 【ehpk・通信】 3. ehpkでは相対パス /api/... 前提にしない ストア配布のehpkはスマホ内のローカルHTTPサーバーから配信される。 そのため /api/... のような相対パスは、開発時のWebサイトでは動いてもehpkでは外部バックエンドに届かないことがあった。 外部バックエンドを使う場合は、pack後の通信先を確認する。 4. app.jsonのnetwork.whitelistとCORSは別物 network.whitelistはEven Hub側の通信許可。サーバー側のCORS設定はそれとは独立に必要。 逆にCORSだけ開けても、network.whitelistで通信先を許可していないとストア版WebViewで通らないことがあった。 【Developer Hub・ストア公開】 5. Developer Hubで同一versionを再アップロードしても端末側に反映されないことがある 同じversion番号のまま中身だけ差し替えて再アップロードすると、端末側で古いehpkが残る挙動があった。 6. Dev Portalでは公開済みversionより小さい番号に戻せない ストア公開後にロールバックしようとしても、Dev Portalで制約に引っかかった。 ユーザー側で旧版を選ぶ手段もない。 7. 審査ではroot pageのdouble tap終了導線を見られる root pageでdouble tapした時は、直接終了ではなく bridge.shutDownPageContainer(1) で終了確認ダイアログを出すよう求められた。 【グラス表示・SDK】 8. BLE送信を詰め込みすぎると不安定になる テキスト更新・画像更新・rebuildを短時間に詰めると、表示更新タイムアウトや操作遅延が出る。 特に画像送信は詰まりやすく、タイマーのclear漏れで多重送信になると一気に不安定化した。 9. listObjectのitemNameは文字数だけ見ても足りない 公式上は「20項目×64文字」でも、実機ではitemName配列の合計バイト数でも詰まった。 日本語はUTF-8で3バイト/文字なので、英語より早く上限に当たる。 10. listObjectとtextObjectは表示幅が違う 同じ文字列でもlistObjectの方が幅を食う。 英語の長いタイトルや日英混在タイトルは、文字数上限内でも実機でフリーズすることがあった。 11. rebuildPageContainerに長文を直接渡すと詰まる 公式上はtextContainerUpgradeで長い文字列を扱える。 日本語や長文をrebuildPageContainerに直接入れると詰まることがあった。 12. rebuildPageContainerの戻り値は信用しすぎない falseが返ってきても、実際にはレイアウトが反映されていることがあった。 戻り値で後続処理を止めると、表示は成功しているのにアイコン送信やテキスト更新がスキップされる。 13. createStartUpPageContainer直後の複雑なrebuildで実機が固まる createStartUpPageContainerの直後に、リスト付きの複雑なrebuildを呼ぶと実機で固まることがあった。 14. isEventCaptureは1ページに1つだけ 入力を受けるcontainerにisEventCaptureを付けるが、公式docs上も1ページに1つだけ。 複数置くと、スマホ側は動いているのにグラス側だけ反応しないような壊れ方をすることがあった。 15. 画像描画でゲームを作ると重い シューティングやオセロをBMP描画で作ったところ、updateImageRawDataの呼び出しが詰まって実機の動作が重くなった。 最適化を詰めても、重いゲーム用途では現実的な限界があった。 16. ImageContainerのサイズ制限は実機で見る ImageContainerのサイズ制限は公式Display docsとSDK READMEで記載に揺れがある。 さらにSimulatorは最新版でも画像処理が実機より速く、ハードウェア側のサイズ制限を完全には再現しない。 画像を使う画面は、pack後に実機で確認が必要。 17. 外部APIやAI生成テキストは表示前にサニタイズする 外部APIの文字列に壊れたサロゲート断片が混ざり、BLE送信時にグラスがフリーズしたことがあった。 ニュースAPIやAI出力など、外部由来の文字列をグラスに出す前は不正なUnicodeを除去する必要がある。 18. WebViewで使えないWeb APIがある HTMLAudioElementやspeechSynthesisはEven Hub WebViewでは使えなかった。 音声まわりは通常のWebアプリと同じ前提で作らず、実機で確認する必要がある。

Even G2でアプリ開発・審査・ストア公開までやって分かったことまとめ これからEven Hubでアプリを作る人の参考になれば! 【開発・検証】 1. GUIシミュレーターがある @evenrealities/evenhub-simulator を使えばグラス未所持でもPC上で開発できる。 ただし、BLE転送の詰まり、スマホロック中やバックグラウンド時の挙動、画像サイズ制限、実機側の異常終了まわりは実機と差が出る。 2. CLIツールもある @evenrealities/evenhub-cli。 evenhub init で app.json 作成、evenhub pack で .ehpk 生成、evenhub qr で開発URL用QRコード生成。 【ehpk・通信】 3. ehpkでは相対パス /api/... 前提にしない ストア配布のehpkはスマホ内のローカルHTTPサーバーから配信される。 そのため /api/... のような相対パスは、開発時のWebサイトでは動いてもehpkでは外部バックエンドに届かないことがあった。 外部バックエンドを使う場合は、pack後の通信先を確認する。 4. app.jsonのnetwork.whitelistとCORSは別物 network.whitelistはEven Hub側の通信許可。サーバー側のCORS設定はそれとは独立に必要。 逆にCORSだけ開けても、network.whitelistで通信先を許可していないとストア版WebViewで通らないことがあった。 【Developer Hub・ストア公開】 5. Developer Hubで同一versionを再アップロードしても端末側に反映されないことがある 同じversion番号のまま中身だけ差し替えて再アップロードすると、端末側で古いehpkが残る挙動があった。 6. Dev Portalでは公開済みversionより小さい番号に戻せない ストア公開後にロールバックしようとしても、Dev Portalで制約に引っかかった。 ユーザー側で旧版を選ぶ手段もない。 7. 審査ではroot pageのdouble tap終了導線を見られる root pageでdouble tapした時は、直接終了ではなく bridge.shutDownPageContainer(1) で終了確認ダイアログを出すよう求められた。 【グラス表示・SDK】 8. BLE送信を詰め込みすぎると不安定になる テキスト更新・画像更新・rebuildを短時間に詰めると、表示更新タイムアウトや操作遅延が出る。 特に画像送信は詰まりやすく、タイマーのclear漏れで多重送信になると一気に不安定化した。 9. listObjectのitemNameは文字数だけ見ても足りない 公式上は「20項目×64文字」でも、実機ではitemName配列の合計バイト数でも詰まった。 日本語はUTF-8で3バイト/文字なので、英語より早く上限に当たる。 10. listObjectとtextObjectは表示幅が違う 同じ文字列でもlistObjectの方が幅を食う。 英語の長いタイトルや日英混在タイトルは、文字数上限内でも実機でフリーズすることがあった。 11. rebuildPageContainerに長文を直接渡すと詰まる 公式上はtextContainerUpgradeで長い文字列を扱える。 日本語や長文をrebuildPageContainerに直接入れると詰まることがあった。 12. rebuildPageContainerの戻り値は信用しすぎない falseが返ってきても、実際にはレイアウトが反映されていることがあった。 戻り値で後続処理を止めると、表示は成功しているのにアイコン送信やテキスト更新がスキップされる。 13. createStartUpPageContainer直後の複雑なrebuildで実機が固まる createStartUpPageContainerの直後に、リスト付きの複雑なrebuildを呼ぶと実機で固まることがあった。 14. isEventCaptureは1ページに1つだけ 入力を受けるcontainerにisEventCaptureを付けるが、公式docs上も1ページに1つだけ。 複数置くと、スマホ側は動いているのにグラス側だけ反応しないような壊れ方をすることがあった。 15. 画像描画でゲームを作ると重い シューティングやオセロをBMP描画で作ったところ、updateImageRawDataの呼び出しが詰まって実機の動作が重くなった。 最適化を詰めても、重いゲーム用途では現実的な限界があった。 16. ImageContainerのサイズ制限は実機で見る ImageContainerのサイズ制限は公式Display docsとSDK READMEで記載に揺れがある。 さらにSimulatorは最新版でも画像処理が実機より速く、ハードウェア側のサイズ制限を完全には再現しない。 画像を使う画面は、pack後に実機で確認が必要。 17. 外部APIやAI生成テキストは表示前にサニタイズする 外部APIの文字列に壊れたサロゲート断片が混ざり、BLE送信時にグラスがフリーズしたことがあった。 ニュースAPIやAI出力など、外部由来の文字列をグラスに出す前は不正なUnicodeを除去する必要がある。 18. WebViewで使えないWeb APIがある HTMLAudioElementやspeechSynthesisはEven Hub WebViewでは使えなかった。 音声まわりは通常のWebアプリと同じ前提で作らず、実機で確認する必要がある。

Even G2でアプリ開発・審査・ストア公開までやって分かったことまとめ これからEven Hubでアプリを作る人の参考になれば! 【開発・検証】 1. GUIシミュレーターがある @evenrealities/evenhub-simulator を使えばグラス未所持でもPC上で開発できる。 ただし、BLE転送の詰まり、スマホロック中やバックグラウンド時の挙動、画像サイズ制限、実機側の異常終了まわりは実機と差が出る。 2. CLIツールもある @evenrealities/evenhub-cli。 evenhub init で app.json 作成、evenhub pack で .ehpk 生成、evenhub qr で開発URL用QRコード生成。 【ehpk・通信】 3. ehpkでは相対パス /api/... 前提にしない ストア配布のehpkはスマホ内のローカルHTTPサーバーから配信される。 そのため /api/... のような相対パスは、開発時のWebサイトでは動いてもehpkでは外部バックエンドに届かないことがあった。 外部バックエンドを使う場合は、pack後の通信先を確認する。 4. app.jsonのnetwork.whitelistとCORSは別物 network.whitelistはEven Hub側の通信許可。サーバー側のCORS設定はそれとは独立に必要。 逆にCORSだけ開けても、network.whitelistで通信先を許可していないとストア版WebViewで通らないことがあった。 【Developer Hub・ストア公開】 5. Developer Hubで同一versionを再アップロードしても端末側に反映されないことがある 同じversion番号のまま中身だけ差し替えて再アップロードすると、端末側で古いehpkが残る挙動があった。 6. Dev Portalでは公開済みversionより小さい番号に戻せない ストア公開後にロールバックしようとしても、Dev Portalで制約に引っかかった。 ユーザー側で旧版を選ぶ手段もない。 7. 審査ではroot pageのdouble tap終了導線を見られる root pageでdouble tapした時は、直接終了ではなく bridge.shutDownPageContainer(1) で終了確認ダイアログを出すよう求められた。 【グラス表示・SDK】 8. BLE送信を詰め込みすぎると不安定になる テキスト更新・画像更新・rebuildを短時間に詰めると、表示更新タイムアウトや操作遅延が出る。 特に画像送信は詰まりやすく、タイマーのclear漏れで多重送信になると一気に不安定化した。 9. listObjectのitemNameは文字数だけ見ても足りない 公式上は「20項目×64文字」でも、実機ではitemName配列の合計バイト数でも詰まった。 日本語はUTF-8で3バイト/文字なので、英語より早く上限に当たる。 10. listObjectとtextObjectは表示幅が違う 同じ文字列でもlistObjectの方が幅を食う。 英語の長いタイトルや日英混在タイトルは、文字数上限内でも実機でフリーズすることがあった。 11. rebuildPageContainerに長文を直接渡すと詰まる 公式上はtextContainerUpgradeで長い文字列を扱える。 日本語や長文をrebuildPageContainerに直接入れると詰まることがあった。 12. rebuildPageContainerの戻り値は信用しすぎない falseが返ってきても、実際にはレイアウトが反映されていることがあった。 戻り値で後続処理を止めると、表示は成功しているのにアイコン送信やテキスト更新がスキップされる。 13. createStartUpPageContainer直後の複雑なrebuildで実機が固まる createStartUpPageContainerの直後に、リスト付きの複雑なrebuildを呼ぶと実機で固まることがあった。 14. isEventCaptureは1ページに1つだけ 入力を受けるcontainerにisEventCaptureを付けるが、公式docs上も1ページに1つだけ。 複数置くと、スマホ側は動いているのにグラス側だけ反応しないような壊れ方をすることがあった。 15. 画像描画でゲームを作ると重い シューティングやオセロをBMP描画で作ったところ、updateImageRawDataの呼び出しが詰まって実機の動作が重くなった。 最適化を詰めても、重いゲーム用途では現実的な限界があった。 16. ImageContainerのサイズ制限は実機で見る ImageContainerのサイズ制限は公式Display docsとSDK READMEで記載に揺れがある。 さらにSimulatorは最新版でも画像処理が実機より速く、ハードウェア側のサイズ制限を完全には再現しない。 画像を使う画面は、pack後に実機で確認が必要。 17. 外部APIやAI生成テキストは表示前にサニタイズする 外部APIの文字列に壊れたサロゲート断片が混ざり、BLE送信時にグラスがフリーズしたことがあった。 ニュースAPIやAI出力など、外部由来の文字列をグラスに出す前は不正なUnicodeを除去する必要がある。 18. WebViewで使えないWeb APIがある HTMLAudioElementやspeechSynthesisはEven Hub WebViewでは使えなかった。 音声まわりは通常のWebアプリと同じ前提で作らず、実機で確認する必要がある。


