Android Build & Tests
iOS Build & Tests__
A Kotlin multiplatform (Android/iOS) name game. Player is shown a picture of a cat or dog and must guess the name. User can select from Cats, Dogs. The app utilizes the following:
- Ktor for networking
- Kotlinx Serialization
- Multiplatform Settings
- ReduxKotlin
Building and testing the Android App can be completed with:
./gradlew build
or install with:
./gradle androidInstall
or opened and ran in Android Studio
The iOS workspace in /iOS/NameGame
can be open and ran from xCode or AppCode. A run script has been added to the build phase that will compile the common code into a framework which can be used for the project.
More to come
Views in this arch are truely 'dumb' - they should contain nearly no logic. They are responsible for rendering the view based on the ViewState
given to them by the presenter. They are implemented for each platform and utilize native UI SDKs and libs for each platform. Android uses Fragments and iOS uses UIViewControllers.
more to come
In redux world there are many ways to handle creation of async actions. Thunks
have been used in this app. NetworkThunks
and TimerThunks
both use coroutines to launch concurrent operations that dispatch actions.
In this app, Navigation is considered a side effect of the AppState. The NavigationMiddleware
handles changing screens based on dispatched actions. The NavigationMiddleware
takes an implementation of Navigator
which is implemeneted for each platform.