Java 是什么让Guice无法在Android上运行,除非Guice没有aop?
我在Guice的下载页面上看到了一个名为Guice no aop的模块,其目的显然是向Android开发者进行营销。一些在线搜索撤回了RoboGuice这样的库,这些库看起来类似于基于AOP的IoC,一些文章甚至给出了很好的代码示例 但我的问题是:如果没有这些特殊的库,为什么Guice不能在Android应用程序上运行?我本想在Guice的网站/维基上找到一些东西,但令我惊讶的是,找不到一个原因 有人知道吗 编辑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
这个问题的附属问题是一个更广泛的问题:
- 还有哪些Java框架不会在Androids上运行?!?!(经验法则是什么?)
- 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将在运行时进行字节码编织。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不支持
另外,正如已经指出的那样,在运行时依赖字节码编织的AOP将不起作用(例如,并非所有的AOP都起作用)。FYI,类模拟将出现在Android上。我们最近创建了一个API,用于在运行时生成Dalvik字节码@JesseWilson你们这些家伙和女孩太棒了!