Rozpoczęcie implementacji, różnice pomiędzy aplikacją a biblioteką – DSP#04

Czwarty wpis w ramach konkursu a tak naprawdę dopiero zaczynamy tworzenie kodu. Cóż, jak pisałem poprzednio projekt jest malutki i jednym z moich celów jest skończyć go i zrobić jako „prawdziwy open source”. Dlatego nie skupię się na ilości, ale raczej jakości, dokumentacji i promocji. Ale małymi kroczkami, zacznijmy od utworzenia nowego projektu..

Rozpoczęcie implementacji biblioteki nie stanowi wielkiej filozofii: File -> New -> New project. Projekt nazwę DayViewDemo, z kolei pakiet będzie nosił nazwę digitalzombielab, tak jak moje konto w sklepie Play.

Rozpoczęcie implementacji, różnice pomiędzy aplikacją a biblioteką

Kolejnym krokiem jest utworzenie modułu, który będzie naszym docelowym projektem, czyli biblioteką android.

Rozpoczęcie implementacji, różnice pomiędzy aplikacją a biblioteką

Czyli klikamy File -> New -> New module i z listy dostępnych wybieramy Android library. Co nowego czego nie było w aplikacji pojawia się po tych modyfikacjach. Po pierwsze plik settings.gradle zawiera teraz dwa moduły.

Dodatkowo pojawił się nowy plik build.gradle, który jest niemalże identyczny (nie posiada załączonej biblioteki do layoutu, oraz support design) jak ten sam plik z modułu app.

Rozpoczęcie implementacji, różnice pomiędzy aplikacją a biblioteką

Na powyższym zrzucie widać również różnicę w strukturach katalogów, moduł biblioteki nie zawiera np layoutu, ani menu. Plik manifestu w libce również jest krótszy, ponieważ nie zawiera żadnej aktywności, wygląda w ten sposób.

Zajrzyjmy teraz do kodziku aktywności, a tam.. Java. 53 linie które generują się na początku każdego projektu. Uruchomienie aktywności, obsługa layoutu, menu, etc.. A miał być Kotlin. Z racji tego, że nie lubię bezsensownej roboty nie będę przepisywał auto-wygenerowanego kodu. Skrót ctrl+shift+a daje nam dostęp do czegoś, co nazwano „akcje”, czyli możemy sobie stamtąd uruchomić jakieś funkcje naszego IDE, etc.. Wpisuje plugins, i wyszukuję w otwartym okienku Kotlina.

Rozpoczęcie implementacji, różnice pomiędzy aplikacją a biblioteką

Instaluję wtyczkę, restartuję intelliJ. To dobry moment na zapisanie zmian, dlatego włączam kontrolę wersji i wrzucam pliki do „first commit”. I po tych czynnościach naciskam kombinację klawiszy Ctrl+Alt+Shift+K i dzieje się magia, klasa javowa konwertuje się do Kotlina i daje nam taki rezultat.

Z racji tego, że Kotlin pracuje na jvm, możemy w ramach jednego projektu łączyć klasy Javy i Kotlina, ale akurat tutaj nie będziemy tego robić. Bieżące zmiany zostały zaccomitowane jako „auto convert to Kotlin”.

Próbujemy uruchomić aplikację i.. nie uruchamia się. Brakuje jeszcze jednej rzeczy, skonfigurowania Kotlina w projekcie. Aby to zrobić ponownie uruchamiamy akcje, wpisujemy „Configure Kotlin in Project” wyskoczy nam okienko w którym ja wybieram wszystkie moduły, ponieważ chcę aby zarówno demo jak i biblioteka pracowały z Kotlinem.

Rozpoczęcie implementacji, różnice pomiędzy aplikacją a biblioteką

Po tej operacji odrobinę zmieniają nam się pliki gradle, tzn w modułach aplikacji i biblioteki dochodzi

Z kolei w głównym pliku gradle dla projektu

To wszystko co musimy zrobić. Po kliknięciu przycisku debug aplikacja się nam uruchomi, tym razem już bez niespodzianek. Bieżące zmiany zostały zaccomitowane jako „configure Kotlin in project”.

To by było tyle na dzisiaj, udało nam się skonfigurować środowisko pod pracę z Kotlinem, a następnym razem będzie trochę więcej mięska, bo zaczniemy implementację biblioteki i przyjrzymy się trochę temu, jak wygląda ten język. A jest na co popatrzeć 😉