1

OK、私は libgdx を使用していくつかのデモ プロジェクトに取り組んできましたが、当時は Android デバイスを持っていなかったので、テストできませんでした。最近タブレットを購入し、プロジェクトが USB で接続されたデバイスで実行されるかどうかを確認することにしました。

USB デバッグ モードを有効にし、新しい libgdx プロジェクトを作成してテストしました。できます。したがって、問題は接続ではなく、実行しようとしている他のプロジェクトです。

最初のプロジェクトは libgdx の本を読みながら書きました。アプリを最初にコード化するまでに、コンピューターを再インストールする必要があったため、Android のバージョンが上がり、新しいバージョンで再び動作させるのが大変でした。したがって、それが問題の原因になる可能性があります。デスクトップとして実行すると問題なく動作しますが、Android として実行すると次のエラーが表示されます。

[2015-04-19 09:08:37 - Cyber​​Glider-android] Dx 警告: 匿名内部クラス (com.sun.jna.win32.W32APIOptions$2) の InnerClasses 属性を無視します。この属性には、関連付けられた EnclosureMethod 属性がありません。このクラスは、最新の .class ファイル形式を対象としていないコンパイラによって生成された可能性があります。推奨される解決策は、最新のコンパイラを使用し、「-target」型オプションを指定せずに、ソースからクラスを再コンパイルすることです。この警告を無視すると、このクラスに対するリフレクション操作によって、このクラスが内部クラスではないことが誤って示されます。

コア プロジェクトには 15 個のクラスがあるため、そのメッセージのコピーが 15 個得られます。すべてのプロジェクトをクリーニングしようとしましたが、うまくいきませんでした。その後、エラーは次のように続きます。

[2015-04-19 09:08:37 - Cyber​​Glider-android] 「javax/xml/namespace/QName.class」を処理する Dx のトラブル:

コア ライブラリを構築しない場合のコア クラス (java.* または javax.*) の不適切な使用または誤った使用。

これは多くの場合、IDE (Eclipse など) を使用しているときに、コア ライブラリ ファイルをアプリケーションのプロジェクトに誤って含めたことが原因です。コア クラスを意図的に定義していないことが確実な場合は、これが何が起こっているかの最も可能性の高い説明です。

ただし、実際にはコア名前空間でクラスを定義しようとしている可能性があります。そのソースは、たとえば非 Android 仮想マシン プロジェクトから取得した可能性があります。これは確実に機能しません。少なくとも、アプリとプラットフォームの将来のバージョンとの互換性が損なわれます。また、合法性が疑わしいこともよくあります。

アプリケーションをコンパイルするのではなく、完全な仮想マシン ディストリビューションを作成する一部としてのみ適切なコア ライブラリをビルドする場合は、「--core-library」オプションを使用してこのエラー メッセージを抑制します。

「--core-library」を使用しても実際にはアプリケーションをビルドしている場合は、アプリケーションがまだビルドまたは実行に失敗する可能性があることに注意してください。たとえば、オペレーティング システムをアップグレードすると、アプリケーションが機能しなくなったことに気付いた顧客が怒っていることに備えてください。この問題の責任はあなたにあります。

たまたまコア パッケージにあるコードを合法的に使用している場合、最も簡単で安全な代替手段は、そのコードを再パッケージ化することです。つまり、問題のクラスを独自のパッケージ名前空間に移動します。これは、コア システム クラスと競合しないことを意味します。JarJar は、この取り組みに役立つツールです。これができないとわかった場合、それはあなたがたどっている道が最終的に痛み、苦しみ、悲しみ、嘆きにつながることを示しています.

[2015-04-19 09:08:37 - Cyber​​Glider-android] Dx 1 エラー。中止 [2015-04-19 09:08:37 - Cyber​​Glider-android] エラー 1 で Dalvik 形式への変換に失敗しました


次に、新しくインストールしたコンピューターで開始された 2 つ目のアプリもあります。そのため、その過程で Android のバージョンを変更する必要はありませんでした。Android デバイスでアプリを実行しようとすると、ポップアップ ウィンドウとして次のエラーが表示されます。

未処理のイベント ループ例外 GC オーバーヘッド制限を超えました

dex を実行できません: GC オーバーヘッドの制限を超えました GC オーバーヘッドの制限を超えました

コンソールログは私にこれを与える

[2015-04-19 09:14:38 - Dex Loader] dex を実行できません: GC オーバーヘッド制限を超えました [2015-04-19 09:14:38 - PixelBoard_Launcher-android] Dalvik 形式への変換に失敗しました: dex を実行できません: GC オーバーヘッド制限を超えました

そして、日食は私にメモリ不足のエラーを与え、それ自体を閉じるように求めます。

起動プロセスにも数分かかります。


USB デバッグ モードでアプリを実行するには、いくつかの制限があるのではないかと最初に思いました。上記のアプリが USB モードで動作しない可能性はありますが、APK をビルドして登録すると動作します。

それ以外の場合、唯一の解決策は、すべてをゼロから再コーディングすることです。一度に 1 つのクラスを追加し、プログラムが失敗する原因を確認します。

どこから調査を開始すればよいか、誰か考えがありますか?

4

0 に答える 0