手動での classes.dex ファイルの作成と配置

提供: Appmethod Topics
移動先: 案内検索

Appmethod Android アプリケーションでのカスタム Java ライブラリ セットの使用 への移動


classes.dex ファイルを手動で作成して配置すると、ライブラリをアプリケーションに追加できるだけでなく、Android 向けの組み込み Appmethod Java ライブラリを変更したり不必要なものを削除することもできます。Android 向けのアプリケーションにカスタム Java ライブラリを追加する必要があるだけなら、「[プロジェクト マネージャ]を使用した Java ライブラリのアプリケーションへの追加」を参照してください。

classes.dex ファイルの作成

classes.dex ファイルは、すべての Android アプリケーションに必要な Dalvik 実行可能ファイルです。このファイルには、アプリケーションで使用する Java ライブラリが格納されています。

Android 向けのアプリケーションを配置すると、Appmethod の組み込み Java ライブラリが格納された classes.dex ファイルが Appmethod により組み込まれます。Appmethod アプリケーションで独自の Java ライブラリを使用するには、アプリケーションに必要なそれらの Appmethod 組み込み Java ライブラリと独自の Java ライブラリを両方とも含んだ新しい classes.dex ファイルを作成する必要があります。

classes.dex ファイルに格納する JAR ファイルを決定する

新しい classes.dex ファイルを作成するには、アプリケーションで使用する Java ライブラリそれぞれの JAR ファイルに加えて、それらのライブラリの依存先ライブラリの JAR ファイルが必要です。

Appmethod の組み込み Java ライブラリの場合にも同じことが言えます。たとえば、アプリケーションで Google Play サービスの Java ライブラリが必要な場合、classes.dex ファイルには Google Play アプリケーション ライセンス認証用 Java ライブラリの JAR ファイルも含まれている必要があります。Google Play サービスが Google Play アプリケーション ライセンス認証に依存しているからです。Google Play アプリケーション ライセンス認証自体に依存先ライブラリがあれば、それらも組み込む必要があります。

Appmethod の組み込み Java ライブラリの依存先ライブラリを次の一覧表に示します。

ライブラリ JAR ファイル 依存先ライブラリ Appmethod に必須

Android サポート

android-support-v4.jar

FireMonkey

fmx.jar

  • Android サポート

Google モバイル広告

GoogleAdMobAdsSdk-6.4.1.jar

×

Google アナリティクス

google-analytics-v2.jar

×

Google Play アプリケーション ライセンス認証

google-play-licensing.jar

×

Google Play アプリ内課金

google-play-billing.jar

  • Google Play アプリケーション ライセンス認証

×

Google Play サービス

google-play-services.jar

  • Google Play アプリケーション ライセンス認証

×

APK 拡張

apk-expansion.jar

  • FireMonkey
  • Google Play アプリケーション ライセンス認証

×

クラウド メッセージング

cloud-messaging.jar

  • FireMonkey
  • Google Play アプリケーション ライセンス認証

×

これらの JAR ファイルは、Appmethod インストール フォルダ(C:\Program Files (x86)\Embarcadero\Studio\17.0)内の次のフォルダに存在します。

  • lib\android\debug
  • lib\android\release

Appmethod のすべての組み込み Java ライブラリを classes.dex ファイルに格納することもできますし、上記の表を参考に、アプリケーションに必要な Appmethod の組み込み Java ライブラリを決定することもできます。

警告: Appmethod に必須な Java ライブラリは、必ずカスタムの classes.dex ファイルに組み込む必要があります。

JAR ファイルから classes.dex ファイルを生成する

Android アプリケーションに必要な JAR ファイルが決まったら、それらから classes.dex ファイルを作成できます。

classes.dex ファイルを作成するには、コマンド ライン ツール dx を使用する必要があります。このコマンド ライン ツールは C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows にあります。

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 ファイルのデバッグ版とリリース版を両方とも作成しなければなりません。Appmethod のデバッグ機能は、格納されている Appmethod 組み込み Java ライブラリのデバッグ版が配置済みの classes.dex ファイルに含まれている場合にのみ使用可能です。

classes.dex ファイルの配置

警告: 以下の手順に沿って慎重に行ってください。Android アプリケーションには必ず、有効な classes.dex ファイルが含まれている必要があります。詳細については、「classes.dex ファイルが無効または不明」を参照してください。

カスタムの classes.dex ファイルと一緒に配置されるように Android アプリケーションを構成するには:

  1. [プロジェクト|配置]を選択して配置マネージャを開きます。
  2. デフォルトの classes.dex ファイルのチェック ボックスをオフにします。
  3. [ファイルの追加] ボタンをクリックし、カスタムの classes.dex ファイルを配置ファイルのリストに追加します。
  4. 追加したエントリの[リモート パス]classes\ に変更します。
  5. 追加したエントリの[プラットフォーム]を Android のみに変更します。

DeploymentCustomClassesDex.png

トラブルシューティング

classes.dex ファイルが無効または不明

Appmethod を使って Android デバイス上でアプリケーションを実行したとき、有効な classes.dex ファイルがアプリケーションにない場合には、次のエラー メッセージが表示されます。

プロセスを生成できません: '<APK ファイル>' をインストールできません。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 アプリケーションが構成されていない状態で、Appmethod から Android デバイス上でアプリケーションを実行したり、Appmethod で生成されたアプリケーションの APK ファイルをデバイスにインストールすると、インストールは失敗しますが、Android デバイスにデータが残るため、そのアプリケーションと同じパッケージ名(「Android の[バージョン情報]」を参照)で別のアプリケーションをインストールできなくなります。

有効な classes.dex ファイルがない APK ファイルをインストールしようとした場合は、Android デバイスを工場出荷時の状態に戻すしかありません。

警告: 工場出荷時の状態に戻すと、デバイスからすべてのデータ(個人データ、カスタム設定、その他)が削除されます。問題の解決がデータを失うだけの価値があるのかどうかを慎重に検討してください。それでも作業を続行するのであれば、工場出荷時の状態に戻す前に、データを忘れずにバックアップしてください。

関連項目