reubenb87
reubenb87

Reputation: 303

Android using AndroidAnnotations in Library Project Eclipse

I'm making a paid/free version of my app so have a 'Library Project' that the two apps use.

I'm trying to use Android Annotations to clean up my code: http://code.google.com/p/androidannotations/

Unfortunately when I use this in my shared library project, one of my projects gets the error in Eclipse: The type xActivity_ is already defined xActivity_.java /ProjectName/.apt_generated/lib/activities/

Because Android Annotations automatically creates a new activity with an extra '_' in the folder .apt_generated one of the apps is allowed to create this file, but the other gets the error "already defined".

Is there a way in Eclipse to resolve this? Or is it a problem with the Android Annotations?

Upvotes: 2

Views: 3584

Answers (3)

Luke Sleeman
Luke Sleeman

Reputation: 1646

This question is quite old, but I thought that I should mention android annotations now supports being used in libaries:

https://github.com/excilys/androidannotations/wiki/Library-projects

One caveat is that due to the way android library projects generate the R class, you cannot reference resouces directly inside the annotations. Eg, you cant do this:

@EActivity(R.layout.myLayout)
public class MyActivity extends Activity {

 @Click(R.id.myButton1, R.id.myButton2})
 public void someButtonClicked() {
 }
}

Instead you must do this:

@EActivity(resName="myLayout")
public class MyActivity extends Activity {

  @Click(resName={"myButton1", "myButton2"})
     public void someButtonClicked() {
  }
}

Upvotes: 3

Pierre-Yves Ricau
Pierre-Yves Ricau

Reputation: 8349

This seems to be an AndroidAnnotations bug, and should be reported on the dedicated bug tracker.

AndroidAnnotations wasn't designed with this use case in mind, but this is still a very valid use case. The problem seems to be that the activity is generated in the shared library project, when it should be generated in each depending project, am I right ?

(please answer in the bug tracker)

Upvotes: 3

Pedro Loureiro
Pedro Loureiro

Reputation: 11514

I just knew AndroidAnnotations (which seems a great tool!) but I think that if you do this using different projects (sharing the same library) your problem should be solved.

Upvotes: 1

Related Questions