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).
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.
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.
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.
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???