8

Guice のダウンロード ページに guice-no-aop というモジュールがあり、その意図は明らかに Android 開発者向けのマーケティングです。いくつかのオンライン検索では、似たような AOP ベースの IC を実行するように見える RoboGuice のようなライブラリが引き出され、いくつかの記事では優れたコード例さえ提供されています。

しかし、私の質問は、これらの特別なライブラリがないと、Android アプリで Guice を実行できないのはなぜですか? Guice のサイト/wiki で何かを見つけられると思っていましたが、驚いたことに、理由が 1 つも見つかりませんでした。

誰か知ってる?

この質問に付随する編集
は、より広いものです:

  • Android で動作しない Java フレームワークは他にあるでしょうか?!?! (経験則は何ですか?)
4

3 に答える 3

3

こちらの比較表をご覧ください。Guice 2.0および1.0用ですが、Guice3にも適用されるはずです。

AOPを使用する場合と使用しない場合のGuiceの主な機能の違いは、メソッドインターセプターです。メソッドで使用するアノテーション、つまりアノテーションを処理するためにguiceでバインドしたものに基づいて、guiceは実行時に意図したことを実行するコードを生成します。dalvikバイトコードをその場で生成するためのAPIが(まだ)ないため、GuiceがAndroidで実行できないのはランタイムコード生成です。

于 2012-02-28T20:21:06.713 に答える
3

このページには、サポートされていないいくつかの標準パッケージがリストされています。これらのパッケージに依存するものは、おそらく機能しません...

サポートされていませんこれらのパッケージは、通常Java 2 Platform Standard Editionの一部であり、Androidではサポートされていません。

  • java.applet
  • java.awt
  • java.beans
  • java.lang.management
  • java.rmi
  • javax.accessibility
  • javax.activity
  • javax.imageio
  • javax.management
  • javax.naming
  • javax.print
  • javax.rmi
  • javax.security.auth.kerberos
  • javax.security.auth.spi
  • javax.security.sasl
  • javax.swing
  • javax.transaction javax.xml(javax.xml.parsersを除く)
  • org.ietf。*
  • org.omg。*
  • org.w3c.dom。*(サブパッケージ)

また、すでに指摘したように、実行時にバイトコードウィービングに依存するAOPは機能しません(すべてが機能するわけではありません。たとえば、Spring AOP)。

于 2012-02-28T20:21:14.733 に答える
3

AOP は、実行時にバイト コード ウィービングを行う予定です。Android 上の Dalvik マシンは、そのままの JVM バイト コードを実行しません。彼らはそれの翻訳版を実行します。私は roboguice と呼ばれる Guice の Android バージョンを使用し、気に入っていました。http://code.google.com/p/roboguice/ これは AOP を実行せず、アクティビティは RoboActivity と呼ばれる RoboGuice アクティビティを継承します。このアクティビティは、その時点でのアクティビティのライフ サイクルに基づいて実際の注入を行います。

PS ほとんどのモッキング フレームワークはバイト コード生成も行いますが、機能しないか、完全には機能しません。

于 2012-02-28T20:19:59.863 に答える