Skip to content

omaraflak/Annotation-Processor-Sample

Repository files navigation

Annotation Processor Example

Simple example to illustrate the use of android annotation processor.

This code will create an annotation named @Activity which is meant to target activities. The processor will generate a Navigator class with static methods to start the annotated activities.

Creation Steps (Android Studio)

1) File > New > New Module... > Java Library -> Name it "annotation"

2) File > New > New Module... > Java Library -> Name it "processor"

3) In processor build.gradle :

dependencies { /*...*/ implementation project(':annotation') implementation 'com.squareup:javapoet:1.9.0' implementation 'com.google.auto.service:auto-service:1.0-rc3' } 

4) In app build.gradle :

dependencies { /*...*/ implementation project(':annotation') annotationProcessor project(':processor') } 

5) Create new file called Activity.java in annotation module :

@Target(ElementType.TYPE) // To target classes @Retention(RetentionPolicy.SOURCE) public @interface Activity { }

6) Create new file called ActivityProcessor.java in processor module :

@AutoService(Processor.class) // DON'T FORGET THIS public class ActivityProcessor extends AbstractProcessor{ @Override public synchronized void init(ProcessingEnvironment processingEnvironment) { /* initialize variables */ } @Override public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) { /* code generation happens here (using JavaPoet) */ return false; } @Override public Set<String> getSupportedAnnotationTypes() { return Collections.singleton(Activity.class.getCanonicalName()); } @Override public SourceVersion getSupportedSourceVersion() { return SourceVersion.latestSupported(); } }

7) Annotate any class and Rebuild your project to generate the code

Sample

About

Simple example to illustrate the use of android annotation and annotation processor.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages