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

Jakiś czas temu wpadłem na pomysł aby spróbować napisać bibliotekę na androida oraz opublikować ją w repozytorium. Tak o to 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).

Implementacja funkcionalności:

Podstawowym założeniem biblioteki miało być że mogę dodać dowolny obiekt do cache oraz go poźniej wyciągnąć wiedząc jakego typu jest, dlatego więc obiekty podczas dodawania wpierw są pakowane do mojej klasy 'CacheEntry':
data class CacheEntry(val ts: DateTime, val lifeTime: Long, val value: Any, val type: String)
gdzie zpisuje 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.

Przygotowania do publikacji

Wpierw 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ć SimleCache w jcenter oraz maven central.

Póki co zdecydowałem się opublikować bibiotekę tylko w jcenter, maven central zostawiłem sobie na poźniej.

Teraz trzeba był 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.

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 1 próbie publikacji biblioteki błąd, gradle nie mógł wygenerować javadoc z plików kotlina, więc poszedłem po najmniejszej lini 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.

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

Podumowanie

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 callbaku error oraz nieoptymalne było pobieranie danych z cache managera.

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

Update 28.05.2018

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