This is an introduction to aspect oriented programming in Android. It also introduces Frodo Android Library based on AOP for logging RxJava Observables and Subscribers.
Aspect Oriented Programming title, date, 01 of 10 In computing, aspect-oriented programming (AOP) is a patented programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. https://github.com/android10/frodo
AOP Terminology title, date, 01 of 10 ● Cross-cutting concerns: Cohesive areas of functionality across an application. ● Advice: The code that is injected to a class file. ● Joint point: A particular point in a program that might be the target of code injection. ● Pointcut: An expression which tells a code injection tool where to inject a particular piece of code. ● Aspect: The combination of the pointcut and the advice is termed an aspect. ● Weaving: The process of injecting code – advices – into the target places – joint points.
Where can we apply AOP? title, date, 01 of 10 ● Logging ● Persistence ● Performance monitoring ● Data Validation ● Caching ● Etc... https://github.com/android10/frodo
Tools and Libraries title, date, 01 of 10 ● AspectJ: A seamless aspect-oriented extension to the Javatm programming language (works with Android). ● Javassist for Android: An android porting of the very well known java library Javassist for bytecode manipulation. ● DexMaker: A Java-language API for doing compile time or runtime code generation targeting the Dalvik VM. ● ASMDEX: A bytecode manipulation library as ASM but it handles the DEX bytecode used by Android executables.
Why AspectJ? title, date, 01 of 10 ● Very powerful. ● Supports build time and load time code injection. ● Easy to use. https://github.com/android10/frodo
Frodo title, date, 01 of 10 It is an aspect oriented library for logging/tracing based on Annotations: ● @RxLogObservable ● @RxLogSubscriber https://github.com/android10/frodo