diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java index f7fe918f3a..c442823aad 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java @@ -19,6 +19,7 @@ import static org.androidannotations.helper.CanonicalNameConstants.PRODUCE; import static org.androidannotations.helper.CanonicalNameConstants.SUBSCRIBE; import static org.androidannotations.helper.ModelConstants.TRACE_OPTION; +import static org.androidannotations.rclass.ProjectRClassFinder.RESOURCE_PACKAGE_NAME_OPTION; import java.io.IOException; import java.io.PrintWriter; @@ -264,7 +265,7 @@ import org.androidannotations.validation.rest.RestValidator; @SupportedSourceVersion(SourceVersion.RELEASE_6) -@SupportedOptions({ TRACE_OPTION, ANDROID_MANIFEST_FILE_OPTION }) +@SupportedOptions({ TRACE_OPTION, ANDROID_MANIFEST_FILE_OPTION, RESOURCE_PACKAGE_NAME_OPTION }) public class AndroidAnnotationProcessor extends AbstractProcessor { private final TimeStats timeStats = new TimeStats(); diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/rclass/ProjectRClassFinder.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/rclass/ProjectRClassFinder.java index 7e4440a13f..32c22a8251 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/rclass/ProjectRClassFinder.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/rclass/ProjectRClassFinder.java @@ -26,6 +26,8 @@ public class ProjectRClassFinder { + public static final String RESOURCE_PACKAGE_NAME_OPTION = "resourcePackageName"; + private ProcessingEnvironment processingEnv; public ProjectRClassFinder(ProcessingEnvironment processingEnv) { @@ -35,7 +37,7 @@ public ProjectRClassFinder(ProcessingEnvironment processingEnv) { public Option find(AndroidManifest manifest) { Elements elementUtils = processingEnv.getElementUtils(); - String rClass = manifest.getApplicationPackage() + ".R"; + String rClass = getRClassPackageName(manifest) + ".R"; TypeElement rType = elementUtils.getTypeElement(rClass); if (rType == null) { @@ -46,4 +48,12 @@ public Option find(AndroidManifest manifest) { return Option. of(new RClass(rType)); } + + public String getRClassPackageName(AndroidManifest manifest) { + if (processingEnv.getOptions().containsKey(RESOURCE_PACKAGE_NAME_OPTION)) { + return processingEnv.getOptions().get(RESOURCE_PACKAGE_NAME_OPTION); + } else { + return manifest.getApplicationPackage(); + } + } }