Java 是什么让Guice无法在Android上运行,除非Guice没有aop?

Java 是什么让Guice无法在Android上运行,除非Guice没有aop?,java,android,aop,guice,roboguice,Java,Android,Aop,Guice,Roboguice,我在Guice的下载页面上看到了一个名为Guice no aop的模块,其目的显然是向Android开发者进行营销。一些在线搜索撤回了RoboGuice这样的库,这些库看起来类似于基于AOP的IoC,一些文章甚至给出了很好的代码示例 但我的问题是:如果没有这些特殊的库,为什么Guice不能在Android应用程序上运行?我本想在Guice的网站/维基上找到一些东西,但令我惊讶的是,找不到一个原因 有人知道吗 编辑 这个问题的附属问题是一个更广泛的问题: 还有哪些Java框架不会在Android

我在Guice的下载页面上看到了一个名为Guice no aop的模块,其目的显然是向Android开发者进行营销。一些在线搜索撤回了RoboGuice这样的库,这些库看起来类似于基于AOP的IoC,一些文章甚至给出了很好的代码示例

但我的问题是:如果没有这些特殊的库,为什么Guice不能在Android应用程序上运行?我本想在Guice的网站/维基上找到一些东西,但令我惊讶的是,找不到一个原因

有人知道吗

编辑
这个问题的附属问题是一个更广泛的问题:

  • 还有哪些Java框架不会在Androids上运行?!?!(经验法则是什么?)

    • AOP将在运行时进行字节码编织。Androids上的Dalvik机器不会直接运行JVM字节码。他们运行它的翻译版本。我使用并喜欢Android版的Guice,称为roboguice。它不执行任何AOP,您的活动继承自一个名为RoboActivity的RoboGuice活动,该活动根据当时活动的生命周期进行实际注入


      另外,大多数模拟框架也会生成字节码,无法工作或无法完全工作。

      请查看比较表。它适用于Guice2.0和1.0,但也应适用于Guice3

      有AOP和没有AOP的Guice之间的主要功能区别是方法拦截器。基于您在方法上使用的注释,即您在guice中绑定以处理注释的内容,guice将在运行时生成代码以执行您想要的操作。这是Guice无法在Android上生成的运行时代码,因为目前还没有用于动态生成dalvik字节码的API。

      列出了一些不受支持的标准包。任何依赖这些软件包的东西都可能不起作用

      不受支持这些软件包通常是Java 2平台标准版的一部分,Android不支持

      • java.applet
      • java.awt
      • java.bean
      • 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将不起作用(例如,并非所有的AOP都起作用)。

      FYI,类模拟将出现在Android上。我们最近创建了一个API,用于在运行时生成Dalvik字节码@JesseWilson你们这些家伙和女孩太棒了!