Was macht Guice außer Android als Guice-no-aop nicht auf Android laufen?

8

Ich sehe auf der Guice-Download-Seite ein Modul namens guice-no-aop, dessen Intention eindeutig Android-Entwickler vermarktet. Bei mehreren Online-Recherchen wurden Bibliotheken wie RoboGuice zurückgezogen, die aussehen, als würden sie ähnliche AOP-basierte IoCs verwenden, und in mehreren Artikeln werden sogar großartige Codebeispiele vorgestellt.

Aber meine Frage ist: Warum läuft Guice nicht auf einer Android App ohne diese speziellen Bibliotheken? Ich hatte erwartet, etwas auf Guices Website / Wiki zu finden, aber zu meiner Überraschung konnte ich keinen einzigen Grund finden.

Weiß jemand?

Bearbeiten
Neben dieser Frage ist eine breitere:

  • Welche anderen Java-Frameworks werden nicht auf Androids laufen?!?! (Was ist die Faustregel?)
IAmYourFaja 28.02.2012, 20:08
quelle

3 Antworten

3

Auf dieser Seite sind einige Standardpakete aufgeführt, die nicht unterstützt werden. Alles, was auf diese Pakete angewiesen ist, würde wahrscheinlich nicht funktionieren ...

  

Nicht unterstützt Diese Pakete, die normalerweise Teil der Java 2 Platform Standard Edition sind, werden von Android nicht unterstützt.

     
  • 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 (außer javax.xml.parsers)
  •   
  • org.ietf. *
  •   
  • org.omg. *
  •   
  • org.w3c.dom. * (Unterpakete)
  •   

Auch wurde bereits darauf hingewiesen, dass AOP, das zur Laufzeit auf das Byte-Code-Weben angewiesen ist, nicht funktioniert (nicht alle, z. B. Frühling AOP ).

    
Emil H 28.02.2012, 20:21
quelle
3

AOP wird zur Laufzeit Byte-Code weben. Die Dalvik-Maschine auf Androiden führt keinen geraden JVM-Bytecode aus. Sie führen eine übersetzte Version davon. Ich benutzte und mochte die Android-Version von Guice namens roboguice. Ссылка Es führt kein AOP durch und Ihre Aktivitäten erben von einer RoboGuice-Aktivität namens RoboActivity, auf der die eigentliche Injektion basiert der Lebenszyklus der Aktivität zu der Zeit.

P.S. Die meisten mockenden Frameworks erzeugen ebenfalls Bytecode und funktionieren nicht oder werden nicht vollständig funktionieren.

    
Sam Corder 28.02.2012 20:19
quelle
3

Sehen Sie sich die Vergleichstabelle hier an. Es ist für Guice 2.0 und 1.0, aber es sollte immer noch für Guice 3 gelten.

Der Hauptfunktionsunterschied zwischen Guice mit AOP und ohne ist der Methodenabfang. Basierend auf der Annotation, die Sie für eine Methode verwenden, die Sie zur Handhabung der Annotation gebunden haben, generiert guice zur Laufzeit Code, um das zu erreichen, was Sie beabsichtigt haben. Es ist die Runtime-Code-Generation, die Guice unter Android nicht ausführen kann, da es noch keine API gibt, um dalvik Bytecode im laufenden Betrieb zu generieren.

    
jbowes 28.02.2012 20:21
quelle

Tags und Links