AspectJ e Android: usare la AOP in Android

La possibilità di iniettare pezzi di codice in classi e metodi compilati (diventata nota con il nome di Aspect Oriented Programming), sia in modo statico che a tempo di esecuzione, può rivelarsi qualcosa di molto utile. Pensiamo ad esempio a quelle situazioni in cui non è possibile utilizzare un debugger o un profiler, come nel caso di librerie proprietarie dove il codice sorgente non è disponibile o ai cosiddetti “crosscutting concerns” come il logging ed il performance monitoring.

Trovare informazioni su questo argomento e sui suoi possibili utilizzi, vantaggi e svantaggi ormai è solo questione di una piccola ricerca su Google, per cui non mi ci dilungherò (vi consiglio a tal proposito l’articolo da cui ho tratto la mia introduzione).

La libreria di riferimento è possibile trovarla al sito http://code.google.com/p/android-aspectj/, dove c’è anche il link ad un articolo che spiega come utilizzarla in un’applicazione Android modificando il file “build.xml”.

Quello che volevo segnalare però con questo post è un’altra tecnica basata sulla modifica del file “.project”. Tale tecnica è molto più semplice e permette di avviare direttamente da Eclipse il nostro progetto Android-AspetcJ. Vi riporto qui un esempio di file “.project”:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ExampleProject</name>
<comment></comment>
<projects></projects>

<buildSpec>

<buildCommand>
<name>org.eclipse.ajdt.core.ajbuilder</name>
<arguments></arguments>
</buildCommand>

<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments></arguments>
</buildCommand>

<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments></arguments>
</buildCommand>

<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments></arguments>
</buildCommand>
</buildSpec>   

<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.ajdt.ui.ajnature</nature>
</natures>

</projectDescription>

Buona sperimentazione! :-)

Lascia un commento