Intel(x86)版Android デバイスへアプリを配布すると「Application does not support this device.」エラーが発生する

提供: Support
移動先: 案内検索

対象となるAndroidのバージョン

  • Android 5.x(Lollipop)

問題

ARMv7版 Androidデバイスではなく、Intel(x86)版 Android デバイスへRAD Studio/Delphi/C++Builderで作成したAndroidアプリを配布すると、「Application does not support this device.」というエラーメッセージが表示されてアプリが起動できないことがあります。もともとRAD Studio/Delphi/C++BuilderでビルドしたAndroidアプリは、ARMv7互換のアーキテクチャを持つAndroidデバイス上でしか動作いたしません。詳しくは、「アプリケーション開発用にサポートされている Android デバイス」を参照ください。

Intel(x86)版 Android デバイスには、「Houdini Binary Translator」(Intelの内部コードネーム)と呼ばれているAndroid NDKで作成されたARMバイナリをx86コードに変換しながら実行していくバイナリ変換ソフトウェアが搭載されているため、RAD Studio/Delphi/C++BuilderでビルドしたAndroidアプリも、その仕組みによって動作させることができます(ただし、弊社ではバイナリ変換ソフトウェア上でその動作保証するものではありません)。

また弊社へ報告されている情報としては、もともとAndroid 4.4.x(KitKat)上では、上述したバイナリ変換ソフトウェアを利用してRAD Studio/Delphi/C++BuilderでビルドしたAndroidアプリは動作していたが、Android 5.x(Lollipop)へアップグレードすると、正常に動作しなくなったという報告がありました。

解決

RAD Studio/Delphi/C++BuilderでビルドしたAndroidアプリは、配置マネージャによってAndroidデバイスへ配布するファイルを設定することができます。配置マネージャは、[プロジェクト]-[配置]で表示されます。

Android 5.x(Lollipop)へアップグレードすると、「Application does not support this device.」エラーが発生する理由としては、Androidデバイスへ配布するファイルの中にx86版のsoファイルが含まれており、ARM版のsoファイルよりも、それが先に読み込まれていることが原因として考えられます。

そのため、本件を解決するには、以下の図のようにローカルパスの$(BDS)\lib\android\debug\x86\libnative-activity.soを配布対象から外してください。

(※ファイルを配布対象から外すには、左側のチェックボックスのチェックマークを外してください)

Thumb03000028ujpn.jpg