SimpleCache -> Moje odczucia z pisania prostej biblioteki na androida.

Zakutalizowano:

Jakiś czas temu wpadłem na pomysł aby spróbować napisać bibliotekę na Androida oraz opublikować ją w repozytorium. Tak oto powstała biblioteka SimpleCache (wcześniej chciałem ją nazwać CacheLib), która przechowuje dane w cache zapisane do json oraz ma dostęp do danych załadowanych w pamięci.

Początek:

SimpleCache napisałem w Kotlinie, oraz ustawiłem minimalne API 21. Z konfiguracją projektu w Android Studio nie było większych problemów, testowanie za pomocą testu jednostkowego (tak wiem jeden test jednostkowy na całą bibliotekę to za mało).

Moje piękne testy :)
Moje piękne testy :)

Implementacja funkcjonalności:

Podstawowym założeniem biblioteki miało być że mogę dodać dowolny obiekt do cache oraz go później wyciągnąć wiedząc jakiego typu jest, dlatego więc obiekty podczas dodawania najpierw są pakowane do mojej klasy CacheEntry:

data class CacheEntry(val ts: DateTime, val lifeTime: Long, val value: Any, val type: String)

gdzie zapisuję datę i godzinę dodania, czas życia (jako sekundy), wartość oraz typ wartości.

Następnie podczas odczytu w zależności czy jest flaga do sprawdzenia lifetime ustawiona na true, to sprawdzany jest czas życia elementu w cache (jeśli wynosi zero to nie kończy się), jeśli czas życia się skończył to element jest usuwany z mapy oraz pliku a metoda get uruchamia callback error tak samo jak w przypadku, kiedy nie znajdzie elementu o podanym kluczu metodzie. W przeciwnym wypadku uruchamiany jest callback success który zwraca wartość oraz typ.

Opis pobierania danych z readme
Opis pobierania danych z readme

Przygotowania do publikacji

Najpierw musiałem wybrać licenje dla mojej biblioteki padło na Apache 2.0 (tyle licencji, i nie wiadomo na co się zdecydować 😀).

Następnie musiałem się dowiedzieć jak wysłać moją bibliotekę do repozytorium Maven Central / JCenter, pomógł mi w tym poradnik na stronie inthecheesefactory.com dzięki któremu wiedziałem jak opublikować SimpleCache w jcenter oraz maven central.

Póki co zdecydowałem się opublikować bibliotekę tylko w JCenter, Maven Central zostawiłem sobie na później.

Teraz trzeba było napisać sensowne readme i tutaj już było ciekawie gdyż zainstalowałem plugin wsparcia dla markdown w Android Studio i działał słabo. Po 5 minutach pisania zamieniłem Android Studio na visual studio code, gdzie wsparcie dla markdown jest o wiele lepsze.

Visual studio code vs Android Studio
Visual studio code vs Android Studio

Publikacja

Zarejestrowałem się w serwisie bintray.com i skonfigurowałem projekt używając informacji z poradnika o którym wspominałem i przy pierwszej próbie publikacji biblioteki błąd, gradle nie mógł wygenerować javadoc z plików Kotlina, więc poszedłem po najmniejszej linii oporu i z pliku gradle do publikacji wywaliłem generowanie javadoc i tym razem poszło i pojawiła się pierwsza wersja SimpleCache w repozytorium jcenter.

Bintray dnia 22-04-2018
Bintray dnia 22-04-2018

1 Maja 2021 Bintray zakończył swoje funkcjonowanie

https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

Po sprawdzeniu czy wszystko działa opublikowałem readme na repozytorium git z dokumentacją.

Podsumowanie

Z początku publikacja do repozytorium wydawała mi się skomplikowana ale nie jest tak źle jak się spodziewałem.

Aktualnie jest dostępna następna wersja biblioteki gdyż zapomniałem o callbacku error oraz nieoptymalne było pobieranie danych z cache managera.

Linki:
SimpleCache : github.com
Poradnik publikacji do maven central / jcenter : inthecheesefactory.com

Aktualizacja 28.05.2018

Napisałem kontynuację wpisu a dokładniej opis dalszej publikacji biblioteki. Publikacja SimpleCache trwała miesiąc???