手動での 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\22.0
)内の次のフォルダに存在します。
lib\android\debug
lib\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\22.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 デバイスを工場出荷時の状態に戻すしかありません。
- 警告: 工場出荷時の状態に戻すと、デバイスからすべてのデータ(個人データ、カスタム設定、その他)が削除されます。問題の解決がデータを失うだけの価値があるのかどうかを慎重に検討してください。それでも作業を続行するのであれば、工場出荷時の状態に戻す前に、データを忘れずにバックアップしてください。