# Kiwix Android
Kiwix is an offline reader for Web content. One of its main purposes
is to make Wikipedia available offline. This is done by reading the
content of a file in the ZIM format, a highly compressed open format
with additional metadata. This is the version for Android.
Kiwix Android is written in [Kotlin](https://kotlinlang.org/)
[](https://github.com/kiwix/kiwix-android/actions?query=workflow%3ACI+branch%3Adevelop)
[](https://github.com/kiwix/kiwix-android/actions/workflows/nightly.yml)
[](https://codecov.io/gh/kiwix/kiwix-android)
[](https://www.codefactor.io/repository/github/kiwix/kiwix-android)
[](https://www.gnu.org/licenses/gpl-3.0)
[](https://chat.kiwix.org)
[](https://kiwixoffline.slack.com)
## Build Instructions
Production releases of the app are built on travis and released automatically
To build this repository alone for development purposes you can simply
**import** the project into Android Studio and the hard work will be done
for you. Note here that instead of *opening* the project, you have to *import* it. If you prefer to build without Android Studio you must first
set up the Android SDK and then run the command: `./gradlew build `
from the root directory of the project.
Kiwix-Android is a multi-module project, in 99% of scenarios you will want to build the `app` module in the `debug` configuration.
If you are interested in our custom apps they have their own repo [kiwix-android-custom](https://github.com/kiwix/kiwix-android-custom
) that goes into further detail
## Libraries Used
- [Dagger 2](https://github.com/google/dagger) - A fast dependency injector for Android and Java
- [Retrofit](https://square.github.io/retrofit/) - Retrofit turns your REST API into a Java interface
- [OkHttp](https://github.com/square/okhttp) - An HTTP+SPDY client for Android and Java applications
- [Butterknife](https://jakewharton.github.io/butterknife/) - View "injection" library for Android
- [Mockito](https://github.com/mockito/mockito) - Most popular Mocking framework for unit tests written in Java
- [RxJava](https://github.com/ReactiveX/RxJava) - Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
- [ObjectBox](https://github.com/objectbox/objectbox-java) - Reactive NoSQL Databse
- [MockK](https://github.com/mockk/mockk) - Kotlin mocking library that allows mocking of final classes by default.
- [JUnit5](https://github.com/junit-team/junit5/) - The next generation of JUnit
- [AssertJ](https://github.com/joel-costigliola/assertj-core) - Fluent assertions for test code
- [Fetch](https://github.com/tonyofrancis/Fetch) - A customizable file download manager library for Android
## Contributing
Before contributing be sure to check out the
[CONTRIBUTION](https://github.com/kiwix/kiwix-android/blob/develop/CONTRIBUTING.md)
guidelines.
We currently have a series of automated Unit and Integration
tests. These can be run locally and are also run when submitting a
pull request.
## Communication
Available communication channels:
* [Web Public Chat channel](https://chat.kiwix.org)
* [Email](mailto:contact+android@kiwix.org)
* [Mailing list](mailto:kiwix-developer@lists.sourceforge.net)
* [Slack](https://kiwixoffline.slack.com): #android channel [Get an invite](https://join.slack.com/t/kiwixoffline/shared_invite/zt-19s7tsi68-xlgHdmDr5c6MJ7uFmJuBkg)
* IRC: #kiwix on irc.freenode.net
For more information, please refer to
[https://wiki.kiwix.org/wiki/Communication](https://wiki.kiwix.org/wiki/Communication).
## License
[GPLv3](https://www.gnu.org/licenses/gpl-3.0) or later, see
[COPYING](COPYING) for more details.