AndroidAnnotations & IntelliJ IDEA [UPDATE]
Zachęcony wszelkimi dobrodziejstwami, jakie niesie implementacja Dependency Injection w aplikacji (dobre wrażenia z PHP przeniesione na Androida), postanowiłem zrobić to w aplikacji, którą piszę na Androida. Po krótkotrwałych i nieowocnych walkach z RoboGuicem, postanowiłem spróbować AndroidAnnotations (AA). Wrażenia?
Wszystko byłoby OK, gdyby nie to, że domyślnie twórcy AA zakładają, że aplikacje na Androida pisze się w Eclipsie. No i konfiguracja RunTime’a jest tylko dla Eclipsa. Po godzinach szperania w Google i testowania metodą prób i błędów doszedłem, jak ustawić IntelliJ IDEA, żeby pracował z AA. Oto cała procedura:
- Pobranie bibliotek: paczka z JAR’ami jest tutaj – ściągamy ją i – UWAGA – plik androidannotations-X.X.X-api.jar umieszczamy w katalogu libs naszego projektu, a dla pliku androidannotations-X.X.X.jar tworzymy osobny katalog (np.: ext-libs) i tam go umieszczamy (dlaczego – opis tutaj).
- Dodajemy androidannotations-X.X.X-api.jar do bibliotek naszej aplikacji i do domyślnego modułu.
- Ustawiamy kompilację adnotacji (zrzut poniżej)
- Przy pierwszym budowaniu aplikacji może wyskoczyć wam błąd, że jako domyślną aktywność należy ustawić nazwę domyślnej aktywności, ale z przyrostkiem _. Otóż AA generuje dodatkowe klasy w katalogu gen, które tak właśnie się nazywają. Więc należy to zmienić w AndroidManifest.xml.
- Jeżeli dalej projekt nie będzie się budował, należy na chwilę przestawić domyślną aktywność na jakąś inną (nawet pustą napisaną na potrzebę chwili), wybudować projekt, a później zmienić na tą zakończoną _.
UPDATE: Due to many request from non-polish readers, I’m adding english version.
Setup IntelliJ IDEA to work with Android Annotations:
- Download libraries: archive with JAR’s is here – download it and – CAUTION – file androidannotations-X.X.X-api.jar must be put in libs directory of project, and for androidannotations-X.X.X.jar file a new directory must be created (e.g. ext-libs – what is thea idea of this – description here).
- Add androidannotations-X.X.X-api.jar to libraries of project and default module.
- Set annotations compilation (screenshot below)
- During the first compilation there could be a compilation error – fix it by adding suffix to default activity in AndroidManifest.xml(e.g. MainActivity_ instead of MainActivity). AA generates additional classes in gen directory, and those all classes have _ suffix.
- If the project still gets compilation error, switch default activity for other with no AA implementation or create temporary one, rebuild, and switch back to main one with suffix.