2012-02-28 18 views
8

Widzę na stronie pobierania Guice moduł o nazwie guice-no-aop, którego zamiarem jest wyraźnie marketing w kierunku programistów Androida. Kilka wyszukiwań w Internecie usunęło biblioteki takie jak RoboGuice, które wyglądają podobnie do podobnych IoC opartych na AOP, a kilka artykułów podaje nawet świetne przykłady kodu.Co sprawia, że ​​Guice nie może działać na Androidzie z wyjątkiem Guice-no-aop?

Ale moje pytanie brzmi: Dlaczego Guice nie uruchomi aplikacji na Androida bez tych specjalnych bibliotek? Spodziewałem się znaleźć coś na stronie/wiki Guice, ale ku mojemu zaskoczeniu nie mogłem znaleźć ani jednego powodu.

Ktoś wie?

Edit
pomocniczy na to pytanie jest szerszy jeden:

  • Jakie inne ramy Java nie będzie działał na Androidy?!?! (Jaka jest zasada?)

Odpowiedz

3

This page zawiera listę kilku standardowych pakietów, które nie są obsługiwane. Wszystko, co opiera się na tych opakowaniach nie mogą pracować ...

Nieobsługiwane tych pakietów, zwykle częścią Java 2 Platform Standard Edition, nie są obsługiwane przez Androida.

  • 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 (oprócz javax.xml. parsery)
  • org.ietf. *
  • org.omg. *
  • org.w3c.dom. * (sub-pakietów)

Jak już zostało powiedziane, AOP, który opiera się na wątku kodu bajtowego w czasie wykonywania, nie będzie działać (nie wszystkie, np. Spring AOP).

3

AOP zamierza przeprowadzić bajtowy wątek kodu w czasie wykonywania. Maszyna Dalvik na Androidzie nie działa prosto z bajtowym kodem JVM. Prowadzą przetłumaczoną wersję tego. Użyłem i polubiłem wersję Guice na Androida zwaną roboguice. http://code.google.com/p/roboguice/ Nie wykonuje żadnego AOP, a twoje działania dziedziczą z działania RoboGuice o nazwie RoboActivity, które wykonuje rzeczywisty zastrzyk na podstawie cyklu życia aktywności w danym momencie.

P.S. Większość szyderczych frameworków również generuje kod bajtowy i nie będzie działać lub nie będzie działać w pełni.

+4

FYI, kpiny w klasie zbliżają się do Androida. http://code.google.com/p/mockito/issues/detail?id=308 –

3

Spójrz na tabelę porównawczą here. Jest on przeznaczony dla Guice 2.0 i 1.0, ale powinien nadal mieć zastosowanie do Guice 3.

Główna różnica funkcjonalna między Guice z AOP i bez to przechwytywacze metod. W oparciu o adnotację, której używasz w metodzie, czyli o tym, w jaki sposób chcesz obsłużyć adnotację, guice wygeneruje kod w środowisku wykonawczym, aby zrobić to, co zamierzałeś. Jest to generowanie kodu runtime, którego Guice nie może zrobić na Androidzie, ponieważ nie ma jeszcze API (jeszcze) do generowania bajtowego kodu dalvik w locie.

+5

Niedawno stworzyliśmy API do generowania kodu bajtowego Dalvik w czasie wykonywania. http://code.google.com/p/dexmaker/ –

+0

@JesseWilson, chłopaki i dziewczęta są niesamowici! –

Powiązane problemy