Marvel Heroes 🕊️ 🇺🇸
Aplicativo Android que mostra todos os heróis da marvel. Todas as informações são extraídas em tempo real da api oficial da marvel:
Arquitetura
Foi utilizado arquitetura reativa (redux/redukt) que funciona separando o código em middlewares, dispatchers (ações) e reducers, bem como atualizando o layout a partir das alterações ocorridas no App State.
Os principais componentes dessa arquitetura são:
Action Creator + Dispatcher:
Cada mudança ou interação do usuário com o app tem uma ação, o dispatcher é responsável por ordenar as ações e encaminhado-las ao middleware ou reducer.
Middleware:
Responsável pelo transito de dados assíncronos. Nesse projeto, usado para sincronizar os dados com o servidor e salvar-los no banco de dados.
Reducer:
Responsável por manter sempre atualizado os dados no App State, que é utilizado nas telas para mostrar as informações para o usuário. Nesse projeto, até o momento, os filmes.
Listener:
Responsável por atualizar a tela caso ocorra alguma alteração no App State.
Bibliotecas utilizadas
Redukt
Biblioteca escrita em Kotlin que implementa a arquitetura redux no android.
Retrofit
Requisições HTTP Client para Android
Gson
Biblioteca para converter Json para Kotlin e vice versa
Anvil
Biblioteca para desenvolver layouts e views reativos para Android
Glide
Biblioteca para carregando e cacheamento de imagens remotas
Preview
APK:
https://drive.google.com/file/d/17WKZoCfLDS0rVS_3cyLUhYprPT1mcb53/view?usp=sharing
Mais informações sobre Redux
https://android.jlelse.eu/react-native-redux-architecture-part-1-8178fc9065c2
https://medium.com/@trikita/writing-a-todo-app-with-redux-on-android-5de31cfbdb4f
Instruções para gerar o apk
- Generate signing key
keytool -genkey -v -keystore marvelHeroesKey.keystore -alias marvelHeroesKey -keyalg RSA -keysize 2048 -validity 10000
- Put generated file in
.../yourProjectFolder/app
and udpategradle.Properties
with information below:
KEY_STORE_FILE=marvelHeroesKey.keystore
KEY_ALIAS=marvelHeroesKey
KEY_STORE_PASSWORD=<The password you choose earlier with the keytool>
KEY_PASSWORD=<The password you choose earlier with the keytool>
- Generate apk
./gradlew assembleRelease; find . -name *.apk
or
./gradlew assembleDebug; find . -name *.apk