手動での classes.dex ファイルの作成と配置
RAD Studio Android アプリケーションでのカスタム Java ライブラリ セットの使用 への移動
classes.dex ファイルを手動で作成して配置すると、ライブラリをアプリケーションに追加できるだけでなく、Android 向けの組み込み RAD Studio Java ライブラリを変更したり不必要なものを削除することもできます。Android 向けのアプリケーションにカスタム Java ライブラリを追加する必要があるだけなら、「[プロジェクト マネージャ]を使用した Java ライブラリのアプリケーションへの追加」を参照してください。
目次
classes.dex ファイルの作成
classes.dex ファイルは、すべての Android アプリケーションに必要な Dalvik 実行可能ファイルです。このファイルには、アプリケーションで使用する Java ライブラリが格納されています。
Android 向けのアプリケーションを配置すると、RAD Studio の組み込み Java ライブラリが格納された classes.dex ファイルが RAD Studio により組み込まれます。RAD Studio アプリケーションで独自の Java ライブラリを使用するには、アプリケーションに必要なそれらの RAD Studio 組み込み Java ライブラリと独自の Java ライブラリを両方とも含んだ新しい classes.dex ファイルを作成する必要があります。
classes.dex ファイルに格納する JAR ファイルを決定する
新しい classes.dex ファイルを作成するには、アプリケーションで使用する Java ライブラリそれぞれの JAR ファイルに加えて、それらのライブラリの依存先ライブラリの JAR ファイルが必要です。
RAD Studio の組み込み Java ライブラリの場合にも同じことが言えます。たとえば、アプリケーションで Google Play サービスの Java ライブラリが必要な場合、classes.dex ファイルには Google Play アプリケーション ライセンス認証用 Java ライブラリの JAR ファイルも含まれている必要があります。Google Play サービスが Google Play アプリケーション ライセンス認証に依存しているからです。Google Play アプリケーション ライセンス認証自体に依存先ライブラリがあれば、それらも組み込む必要があります。
RAD Studio の組み込み Java ライブラリの依存先ライブラリを次の一覧表に示します。
| ライブラリ | JAR ファイル | 依存先ライブラリ | RAD Studio に必須 |
|---|---|---|---|
|
|
○ | ||
|
|
|
○ | |
|
|
× | ||
|
|
× | ||
|
|
× | ||
|
|
|
× | |
|
|
|
× | |
|
|
|
× | |
|
|
|
× |
これらの JAR ファイルは、RAD Studio インストール フォルダ(C:\Program Files (x86)\Embarcadero\Studio\23.0)内の次のフォルダに存在します。
lib\android\debuglib\android\release
RAD Studio のすべての組み込み Java ライブラリを classes.dex ファイルに格納することもできますし、上記の表を参考に、アプリケーションに必要な RAD Studio の組み込み Java ライブラリを決定することもできます。
- 警告: RAD Studio に必須な Java ライブラリは、必ずカスタムの
classes.dexファイルに組み込む必要があります。
JAR ファイルから classes.dex ファイルを生成する
Android アプリケーションに必要な JAR ファイルが決まったら、それらから classes.dex ファイルを作成できます。
classes.dex ファイルを作成するには、コマンド ライン ツール dx を使用する必要があります。このコマンド ライン ツールは C:\Users\Public\Documents\Embarcadero\Studio\23.0\PlatformSDKs\AndroidSDK-<Version> にあります。
dx を実行する際には、--dex パラメータおよび --output パラメータ(classes.dex ファイルの出力パスを引数として渡す)と、生成される classes.dex ファイルに組み込む JAR ファイルのパスをスペースで区切ったリストとを指定します。以下はその例です。
dx --dex --output="classes.dex" "C:\Path\To\Library1.jar" "C:\Path\To\Library2.jar"
- メモ:
classes.dexファイルのデバッグ版とリリース版を両方とも作成しなければなりません。RAD Studio のデバッグ機能は、格納されている RAD Studio 組み込み Java ライブラリのデバッグ版が配置済みのclasses.dexファイルに含まれている場合にのみ使用可能です。
classes.dex ファイルの配置
- 警告: 以下の手順に沿って慎重に行ってください。Android アプリケーションには必ず、有効な
classes.dexファイルが含まれている必要があります。詳細については、「classes.dexファイルが無効または不明」を参照してください。
カスタムの classes.dex ファイルと一緒に配置されるように Android アプリケーションを構成するには:
- [プロジェクト|配置]を選択して配置マネージャを開きます。
- デフォルトの
classes.dexファイルのチェック ボックスをオフにします。
ボタンをクリックし、カスタムの classes.dexファイルを配置ファイルのリストに追加します。- 追加したエントリの[リモート パス]を
classes\に変更します。 - 追加したエントリの[プラットフォーム]を Android のみに変更します。
トラブルシューティング
classes.dex ファイルが無効または不明
RAD Studio を使って Android デバイス上でアプリケーションを実行したとき、有効な classes.dex ファイルがアプリケーションにない場合には、次のエラー メッセージが表示されます。
Unable to create process: Unable to install '<APK file>'. Failure [INSTALL_FAILED_DEXOPT]
Android アプリケーション パッケージ(APK ファイル)には必ず、有効な classes.dex ファイルが含まれている必要があります。つまり、
- APK ファイルに
classes.dexファイルが存在しなければなりません。 - その
classes.dexファイルの位置は APK ファイル内のclasses/classes.dexでなければなりません。 - その
classes.dexは有効な Dalvik 実行可能ファイルでなければなりません。
カスタムの classes.dex ファイルを使用する場合は、注意してください。配置マネージャでデフォルトの classes.dex ファイルのチェック ボックスをオフにし、カスタムの classes.dex ファイルのエントリを追加したあと、以下を確認します。
- カスタム ファイルのエントリのチェック ボックスがオンになっていること。
- 新しいエントリの[リモート パス]が
classes\になっていること。 - 新しいエントリは、有効な Dalvik 実行可能ファイルでないおそれがある別のファイルではなく、お使いの
classes.dexファイルであること。
有効な classes.dex ファイルと一緒に配置されるように Android アプリケーションが構成されていない状態で、RAD Studio から Android デバイス上でアプリケーションを実行したり、RAD Studio で生成されたアプリケーションの APK ファイルをデバイスにインストールすると、インストールは失敗しますが、Android デバイスにデータが残るため、そのアプリケーションと同じパッケージ名(「Android の[バージョン情報]」を参照)で別のアプリケーションをインストールできなくなります。
有効な classes.dex ファイルがない APK ファイルをインストールしようとした場合は、Android デバイスを工場出荷時の状態に戻すしかありません。
- 警告: 工場出荷時の状態に戻すと、デバイスからすべてのデータ(個人データ、カスタム設定、その他)が削除されます。問題の解決がデータを失うだけの価値があるのかどうかを慎重に検討してください。それでも作業を続行するのであれば、工場出荷時の状態に戻す前に、データを忘れずにバックアップしてください。
