10

Android コンパイラはどのように機能しますか? コンパイル時に Java コードと Android XML ファイルのコメントを削除しますか?

4

2 に答える 2

15

Java ファイル内のコメントは、クラス ファイルにコンパイルされるときに削除または無視されます。クラス ファイルは人間が読むためのものではありません。仮想マシン上で効率的に実行できるように最適化されています。コメントが残っていると、クラス ファイルが必要以上に大きくなるだけであり、追加の利点はありません (つまり、コンパイラと仮想マシンはコメントを理解しないので、コメントを含める必要はありません)。

XML ファイルに関しては、コメントは通常保持されます。コンパイルされたクラス ファイルの目的は 1 つ (仮想マシン上で実行すること) だけですが、XML ファイルは多くの目的に使用できます。たとえば、XML ファイルをアプリケーションにロードして操作できます。アプリケーションでの XML ファイルの使用によっては、そこにコメントを保持する必要がある場合があります。実際、アプリケーションは特にコメントを探す場合があります。XML ファイルにはさまざまな用途があるため、他の目的でコメントが必要になった場合に備えて、コメントは XML ファイルから削除されません。

于 2012-05-16T02:31:53.850 に答える
5

コメントは、ファイルのバイト コード/.class バージョンには存在しません。コメントは、コンパイル時にコンパイラによって無視されます。

コンパイラは、すべての高水準言語コードをマシンが理解できるコードに変換する方法で動作します..一度に..インタプリタのように行ごとではなく..Androidの場合..コンパイラは.javaソースファイルをそのバイトコード/.class ファイル..そしてそれを .dex ファイル (Dalvik Executables) に.. Android のすべてのアプリケーションは、.dex ファイルを必要とする Dalvik 仮想マシンと呼ばれる仮想マシン上で実行されます..

zip のような apk ファイルを開いてみてください。任意のアーカイバを使用してください。そこに classes.dex ファイルが表示されます。

そしてxmlファイルに関する限り..それらは、画面に何かを表示しているとき(つまり、アクティビティがレンダリングされているとき)にのみアプリケーションによって使用されます..したがって、アクティビティが表示されているときに..対応するxmlファイルが使用されますUI を構築します。このプロセスはインフレートと呼ばれます。

編集: [しかし、これに関して私が今覚えている 1 つのポイントは、..Android Phone に存在するシステム アプリケーション..Google が提供するすべてのアプリ (Gmail、マップなど) など..連絡先、Phone.apk など..これらはすべてシステムapkです../system/app/ディレクトリに存在します..dexファイルが含まれている場合と含まれていない場合があります..

apk ファイル内に .dex が含まれている場合 (私たちが開発する通常のアプリと同じように)、ROM は de-odexed ROM (Android OS のファームウェア) と呼ばれます。システムの .apk ファイルから dalvik キャッシュにすべての .dex ファイルをコピーするため、ROM が初めてインストールされます。システムの起動/起動時にシステム apk のすべての .dex ファイルが必要になるためです。

しかし、ROM が odex されている場合.. システム .apk のすべての .dex ファイルは .apk 内に存在するのではなく、/system/app/ ディレクトリ内の別のファイルとして.. 拡張子 .odex が付いています。

あなたと私が開発するすべてのアプリ(システムアプリ以外)..Playストアのアプリだけ..それらには.apk内に.dexが含まれています]

編集:私はそれが作業や質問にあまり関係していないことを知っています..しかし、sysアプリとsys以外のアプリの.dexファイルの配置の違いについて言及したかっただけです! :)

それが役に立ったことを願っています!:)

于 2012-05-16T02:19:52.727 に答える