2025年10月21日

Evergine AndroidアプリのGoogle Play互換性維持の確保

2025年8月下旬より、Google PlayはAndroidアプリに新たな要件を施行します。公開されるすべてのアプリは、Android SDK 35をターゲットとする必要があります。このポリシーにより、Google Playを通じて配布されるアプリが最新のAndroidのセキュリティ、パフォーマンス、プライバシー基準に準拠することが保証されます。

公式要件はGoogle公式ドキュメントでご確認いただけます。

Evergine開発者がAndroidアプリケーションを中断なく公開し続けられるよう、当社のテンプレートとネイティブ依存関係に重要なアップデートを実装しました。これらの変更により、Evergineで構築されたプロジェクトは、現在および将来のAndroidプラットフォームポリシーに準拠し続けることができます。

Evergineテンプレートを.NET 9にアップデート

これらの新要件に対応するための第一歩として、EvergineのAndroidおよびMAUIテンプレートを.NET 9をターゲットとするようにアップデートしました。

このアップグレードにより、開発者はAndroid SDK 35をターゲットとするアプリケーションを適切にコンパイルして公開できるようになります。これは.NET 8では完全にはサポートされていません。この変更により、Evergineプロジェクトは最新のAndroidツールチェーンとの互換性が強化され、Play Store向けのビルド準備時の開発者エクスペリエンスがよりスムーズになります。

なお、すべてのAndroidベースのテンプレートにこの変更が必要だったわけではありません。Meta QuestやPico XRなど、Google Playを介さずにデバイスに直接アプリケーションを展開するプラットフォームは、これらのSDKターゲットルールの影響を受けません。これらのテンプレートは引き続き従来どおり機能します。

また、Evergineコアエンジン自体は.NET 9に移行されていません。当社の戦略は、新しいランタイムバージョンがLTS(長期サポート)ステータスに達した場合にのみ移行し、本番環境の長期的な安定性と予測可能性を確保することです。したがって、エンジンの完全な移行は、.NET 10が次のLTSリリースとなる時点で行われます。

これらのテンプレートアップデートは、EvergineユーザーがGoogleの2025年の期限に早期に備え、複数のAndroid環境間での互換性と安定性を維持できるようにするための積極的な一歩です。

新たな制限: Android 16における16 KBページサイズ

これらのアップデートを実施する中で、開発者にさらに早く影響を与える別の重要な変更点を発見しました。2024年11月より、Android 16では、すべてのネイティブライブラリで16 KBのメモリページサイズを使用することが必須となります。

この低レベルの変更はバイナリのビルド方法とアライメントに影響し、この要件を満たさないネイティブコードを含むアプリは、新しいデバイスで起動に失敗します。

テスト中に、Evergineが内部的に使用するネイティブ依存関係や外部ライブラリに関連するいくつかの警告が表示されました。影響を受けるコンポーネントには以下が含まれます。

  • so, libShaderConductorWrapper.so, libnaga_to_csharp.so (Evergine.HLSLEverywhereより)
  • CognitiveServices.Speech.*.so (Microsoft.CognitiveServices.Speechより)
  • so (SkiaSharp.NativeAssets.Androidより)
  • so (Evergine.OpenALより)
  • so (Evergine.Bindings.Dracoより)

これらの警告は、一部のネイティブバイナリがまだ16 KBページアライメントでコンパイルされていないことを示しており、Android 16との完全な互換性を確保するために関連パッケージを確認し、アップデートする必要がありました。

これらの問題への対処方法

Androidの新しい技術要件への準拠を保証し、Evergine開発者にスムーズなデプロイメントエクスペリエンスを維持するために、いくつかのアップデートとコードレビューを実施しました。

  • SkiaSharpとMicrosoft Cognitive Services Speechの依存関係を、適切にアライメントされたネイティブバイナリを含むバージョンにアップデートしました。
  • EvergineのBullet物理演算バインディングをアップデートし、16 KBページサイズアライメントを満たす再コンパイル済みライブラリを含めました。
  • Androidプロジェクトで使用されるOpenALライブラリを、新しいバイナリレイアウト仕様に従うようにアライメントしました。
  • AndroidランチャーからEvergine.HLSLEverywhereへの依存関係を削除しました。このパッケージは、このプラットフォームではシェーダーコンパイルが異なる方法で処理されるため、Androidでは必要ありませんでした。HLSLEverywhereは、実行時にシェーダーが動的にコンパイルされるWindowsなどのデスクトッププラットフォームで引き続き使用されます。
  • 将来のネイティブライブラリがアライメント標準に従うことを保証しました。 EvergineのKTXテクスチャサポートなど、新たに統合された機能は、Androidプラットフォームサポートが含まれる場合、最初から互換性を保証するために、すでに16 KBアライメントのバイナリで配布されています。

これらの対策により、Android 16との互換性が確保されるだけでなく、不要な依存関係が削減され、よりクリーンで軽量、かつ保守性の高いプロジェクト構造が実現します。

今後の展望

今回のアップデートにより、EvergineのAndroidプロジェクトはGoogle PlayのSDK 35ターゲットポリシーに完全準拠し、Android 16の新しいメモリページ要件にも対応しました。
Evergineをご利用のすべての開発者は、Google Playに新しいアプリバージョンを申請する前に、プロジェクトテンプレートを更新することを推奨します。これにより、潜在的な互換性の問題を最小限に抑え、将来のAndroidデバイスでもアプリケーションが信頼性の高いエクスペリエンスを提供し続けることができます。

Evergineは、産業用3DおよびXRアプリケーションに対する長期サポートの提供に引き続き尽力し、モバイルプラットフォームの進化に合わせて、現在構築されたプロジェクトが今後も円滑に動作することを保証します。

Sergio Escalada
著者
Sergio Escalada
Plain Concepts Research