先日リリースされたRAD Studio 10.3.3の主要な新機能は、Delphi言語によるAndroid 64-bitプラットフォームのサポートです。
Table of Contents
Android 64-bitのDelphiサポート
このプラットフォームサポートは、Android 32-bit向け(およびiOS向けコンパイラ)と同様に、LLVMコンパイラインフラストラクチャをベースとしたAndroid 64-bitプラットフォーム向けの新しいDelphiコンパイラを介して提供されます。このコンパイラは、依然としてARCメモリモデルを使用しており、Googleがストアへの投稿の必須要件としている64-bitへのマイグレーションの労力を軽減してくれます。IDEでは、既存のプロジェクトに対し、新しいプラットフォームを追加し、コンパイル、デバッグ、ストアへの配置といった作業をサポートしています(詳細は後述)。
RTLからFireMonkey、FireDACによるデータベースアクセスから並列プログラミングライブラリまで、Android上で利用できるすべてのライブラリが64-bit環境でも利用できるので、マイグレーション作業はいたってスムーズです。また、リリースされたばかりのInterBase 2020もAndroid 64-bit上での実行をサポートしています。
Android 64-bitアプリケーション構築における注意事項
Android 64-bitアプリケーションの構築を始めるにあたり、注意しておくべきいくつかのハードルがあります。最大の問題は、現状、50%のAndroidデバイスは32-bit CPUを搭載しているか、64-bit CPUを搭載していても、32-bitバージョンのOSを実行している。その結果、64-bitアプリケーションを実行できない環境であるということです。
お持ちのAndroidデバイスCPUが、64-bitアプリを実行できることを確認するには、Play Storeの以下のような既存アプリを使用できます。
しかし、お持ちのデバイスのCPUに64-bit ARMv8-A命令セットがあったとしても、32-bitモードに設定されていると、Androidのバージョンは、64-bitではありません。ミスマッチが発生すると、64-bit APKを実行しようとしたときに特定のエラーメッセージが表示されますが、デバッグをしようとすると、不明確なエラーメッセージになります。
また、既存プロジェクトに新しく64-bitプラットフォームを追加しても、すべての配置用のファイルと必要なJavaライブラリが自動的に追加されるわけではないことにもご注意ください。この場合、プロジェクトマイグレーション作業の一部として、若干の調整が必要になることがあります。すべての正しいデフォルト設定を使用して、最初から新しいプロジェクトファイル(dproj)を作成することも検討してください。
一般的に64-bitコードのマイグレーションはスムーズ
多くの場合、Delphiコードは64-bitプラットフォーム向けに再コンパイルするだけです。これにより、より大きなアドレススペースを利用できます。これは、スマートフォンでは決して使用しないようなサイズです。
実際の違いは、ポインタ、オブジェクト参照、文字列参照、そしてメモリ位置を参照する他のすべてのデータ型が、64-bit、すなわち8バイトのポインタ型になることです。これは、SizeOf(Integer)の値がSizeOf(Pointer)と異なることも意味します。実際、Integerは4バイトのままです(NativeInt型は、プラットフォームに依存するため、32-bit環境では4バイト、64-bit環境では8バイトになります)。
ポインタ演算を行っているか、データ構造のアラインメントに依存したコードを記述している場合には、これを変更する必要があるでしょう。整数をポインタにキャストしている場合も同様です。ネイティブライブラリの低レベルのコールを行っている場合にも、調整が必要になるでしょう。
Androidアプリバンドルのサポート
Delphi 10.3.3のAndroid開発向けのその他の関連機能としては、AAB形式(Android App Bundle)のサポートがあります。これは、32-bitと64-bit双方のバイナリおよびファイルをバンドルできる配置ファイル形式で、ストアへの配置向けです(デバイスに直接インストールすることはできません)。AppleのUniversal形式と同様、このバンドルをアップロードすれば、エンドユーザーは、Play Storeから特定のデバイス向けの適切な(ビット数の)ファイルをダウンロードできます。
App Bundleサポートを有効にするには、コンパイラオプションで、ターゲット Android 64-bitのGenerate Android App Bundle file の項目をtrueに設定します。
加えて、適切なプロビジョニング情報を提供し、Google Play Storeにアップロードするために、IDEで.aabファイルを生成します。
10.3.3を今すぐ使ってみよう!
5倍以上の生産性を実現するRAD Studio 10.3.3。開発スピードをアップし、市場への投入時間を短縮できます。