0

Androidアプリケーションのコンパイル中に重要な問題が発生しました。

Windev Mobileを使用して、Javaコードを生成し、apkをコンパイルして作成しますが、apkを作成すると、エラーが発生します。

コマンドライン:"myjavapath\java.exe" -Xmx1024m -Djava.ext.dirs=.\platform-tools\lib -jar .\platform-tools\lib\dx.jar --dex --output "path\classes.dex" "path\classes" "path\libs"

返されたエラー:出力の書き込みに問題があります:No expanded opcode for 0004368d R.java:11@0001: invoke-direct v0:NffffLmynamespace/R$attr;, java.lang.Object.<init>:()v

さらに、R.javaのR$attrには何も含まれていません。

public static final class attr {
}

64kという厳しい制限があると思います。だが:

  • R.javaファイルには364行しか含まれていません。これらの行がフィールド/メソッド参照である場合、64kのハード制限からはほど遠いです。
  • このエラーは、WindevMobileプロジェクトで特定のウィンドウを追加したときに発生しました。別のプロジェクトでエラーなしで使用しているウィンドウ。

それで、あなたはそれが何から来ていると思いますか?情報や書類が必要な場合は問題ありません。

前もって感謝します。

PS:たぶん私の英語は完璧ではありません、ごめんなさい。

4

1 に答える 1

0

dex ファイル形式にはさまざまな制限があります。あなたが遭遇しているのは、64kを超えるメソッド参照が存在できないということです。この制限は、単一のクラスだけではなく、dex ファイル内のすべてのクラスに適用されます。

そのクラスでエラーが発生しているという事実は、クラス自体とは何の関係もありません。

現在の唯一の解決策は、コードのサイズを縮小するか、いくつかのクラスを動的にロードする別の dex ファイルに分割することです。

于 2012-05-24T17:43:47.730 に答える