Android с помощью AndroidАннотации в библиотеке Project Eclipse - PullRequest
2 голосов
/ 05 июля 2011

Я делаю платную / бесплатную версию своего приложения, поэтому у меня есть «Библиотечный проект», который используют оба приложения.

Я пытаюсь использовать аннотации Android для очистки моего кода: http://code.google.com/p/androidannotations/

К сожалению, когда я использую это в своем проекте общей библиотеки, один из моих проектов получает ошибку в Eclipse: Тип xActivity_ уже определен xActivity_.java /ProjectName/.apt_generated/lib/activities/

Поскольку Android-аннотации автоматически создают новое действие с дополнительным символом «_» в папке .apt_generated, одному из приложений разрешено создавать этот файл, но другому выдается ошибка «уже определено».

Есть ли в Eclipse способ решить эту проблему? Или это проблема с аннотациями Android?

Ответы [ 3 ]

3 голосов
/ 19 июля 2011

Это, похоже, ошибка AndroidAnnotations, о которой следует сообщать на специальном баг-трекере .

AndroidAnnotations не были разработаны с учетом этого варианта использования, но это все еще очень допустимый вариант использования. Кажется, проблема в том, что действие генерируется в проекте совместно используемой библиотеки, когда оно должно генерироваться в каждом зависимом проекте, я прав?

(пожалуйста, ответьте в трекере ошибок)

3 голосов
/ 11 сентября 2013

Этот вопрос довольно старый, но я подумал, что стоит упомянуть, что аннотации для Android теперь поддерживают использование в библиотеках:

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

Одно предупреждение: из-за того, что проекты библиотек Android создают класс R, вы не можете ссылаться на ресурсы непосредственно внутри аннотаций. Например, вы не можете сделать это:

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

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

Вместо этого вы должны сделать это:

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

  @Click(resName={"myButton1", "myButton2"})
     public void someButtonClicked() {
  }
}
1 голос
/ 05 июля 2011

Я только что знал AndroidAnnotations (что кажется отличным инструментом!), Но я думаю, что если вы делаете это с использованием разных проектов (с одной библиотекой), ваша проблема должна быть решена.

...