quran_android: import build.gradle, but the tree ships build.gradle.kts
a quran reading application for android
At a glance
- What is it?
- A Madani based Quran reader for Android, built with Kotlin and Gradle, whose data costs money to host and whose licence is not the same as its code licence. The build instructions, the three style systems and the credited image permissions are where it explains itself.
- Who is it for?
- Use Quran for Android if you want the Madani page images with the translations this project has already assembled, and if you are willing to treat the data licence as a separate question from the code licence. Three things to know before you build on it.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 2, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One build variant is documented, and it is the same one everywhere
The command line build is a single Gradle invocation:
./gradlew assembleMadaniDebugThe Android Studio route names the same variant: import the project, then pick madaniDebug under the Build Variants tab. Those are the only two instructions in the setup section, and Madani is the layout the project describes itself as, a simple Madani based Quran app. No other variant is named, so a contributor working on another text layout, or on a release build, has to discover the variant names from the Gradle files rather than from the documentation. The wrapper is committed at the root as gradlew and gradlew.bat, so the build does not depend on a Gradle installation being present, but the version of Gradle it uses is whatever the wrapper properties specify.
The import instruction names a file the repository no longer has
The Android Studio instructions say to choose the build.gradle file from the top level directory. The top level of the repository holds build.gradle.kts and settings.gradle.kts, the Kotlin DSL forms of both files. There is no plain build.gradle at the root. This is a small wording gap rather than a broken instruction, since an IDE importing a Kotlin DSL project usually picks the .kts file, but it is the kind of detail that sends a new contributor looking for a file that is not there. The rest of the build layout is more modern than the prose: there is a build-logic/ directory for shared convention plugins, and the modules are split into app/, common/, feature/, metadata/, pages/, utils/ and autoquran/, which is a convention-plugins-and-feature-modules arrangement rather than a single application module.
Three style systems apply to the same Kotlin sources
Style is configured three times over, and a contributor is asked to satisfy all three. There is a committed quran_android-code_style.xml for Android Studio and IntelliJ, imported by copying it into the codestyles folder, which the README locates at ~/.AndroidStudio[Version]/config/codestyles with a note that the root folder name varies by host and version while the rest of the path is the same, after which the scheme is chosen in the Code Style preferences screen. There is a .editorconfig at the root. And there is the separate instruction to set the Kotlin style from the Predefined style / Kotlin style guide in Settings, Editor, Code Style, Kotlin. Where the three disagree, nothing in the contribution notes says which wins.
The expensive part is the data, and it has its own licences
The cost section is the most consequential paragraph in the project. Quran for Android costs money to run, and the reason given is that all the data, meaning pages, audio files and translations, is hosted on servers that people volunteer their money to pay for every month. The data itself is described as the work of scholars, organisations and reciters, many of whom provide it free. From there the request is explicit: use the code for non-profit purposes, and treat monetising it by ads or in-app purchases as taking from both the contributors and the people paying for the bandwidth. Two licences are in play. The code is GPL 3, which requires modifications to be open sourced as well. The data is licensed under whatever its authors chose, typically CC BY-NC-ND, but the text says this can differ depending on the source of the data.
Three image sets, three different permissions
The credits section separates the imagery by source and by the terms it arrived under. The Madani images come from the quran images project on GitHub. The qaloon images are used with permission of Nous Memes Editions Et Diffusion, a Tunisian name. The naskh images are used with permission of SHL Info Systems. Nothing in the credits states a licence identifier for any of the three, only permission, which is a weaker and less machine checkable statement than a licence file. For anyone who wants to reuse a page image outside the app, that distinction is the whole answer: the repository grants you the app, and the imagery has to be dealt with through whoever granted permission.
Translation and tafsir data comes from four named sources
The text data has its own credit line, and it is the one place the project names its data vendors. Translation, tafsir and Arabic data come from quranenc and from King Saud University, and a small number of translations also come from tanzil. The phrase small number is doing work: it implies the tanzil material is a subset rather than the main corpus, and it implies the mix differs per language. Since each source carries its own licence, a language whose translation came from tanzil may not be under the same terms as one that came from King Saud University. The app treats all of them as a single corpus in its data files, which is convenient and means the per language licensing is not visible from inside the application.
The dependency list names two versioned libraries and a DNS resolver
The open source projects used are listed without versions, with two exceptions. RxJava 2 and Dagger2 are both named with a version number attached, so the reactive and dependency injection layers are pinned to a generation that predates the current one. Everything else is unversioned: AndroidX, Kotlin, Material Design Components, OkHttp, RxAndroid, Moshi, Timber, and three less expected entries. dnsjava is a DNS resolver library, NumberPicker is a third party widget, and AndroidSlidingUpPanel is a sliding panel component. Those three are the ones worth a second look when you are reading a stack trace, because they are the dependencies whose origin is not obvious from the app's behaviour.
Releases cluster around one February week, and pushes continue since
The three listed releases are v3.6.2 on 2026-02-15, v3.6.2-p1 the next day, and v3.6.3 on 2026-02-24. The -p1 suffix marks a patch against the same version rather than a new number, so two of the three tags point at the same minor version. All three land inside a ten day window in February 2026, while the last recorded push is dated 2026-10-02. That gap is the reason to read the repository rather than a tag when you want to know what the app does today. The tree also carries TESTING_STRATEGY.md, a lint.xml with custom lint rules, gradle.properties, a CONTRIBUTORS file, and the style XML, so the project's own conventions are in the repository next to the sources.
Editorial conclusion
Use Quran for Android if you want the Madani page images with the translations this project has already assembled, and if you are willing to treat the data licence as a separate question from the code licence. Three things to know before you build on it. The code is GPL 3 while the data typically sits under CC BY-NC-ND and can differ by source, so a redistribution that keeps the code open still has to satisfy whoever authored each translation. The project asks for non-profit use and explains why in bandwidth terms. And the build is documented for one variant only, madaniDebug, so if you need another text layout you are working from the Gradle files rather than from the README.
Frequently asked questions
How do I build Quran for Android from the command line?
Run ./gradlew assembleMadaniDebug. In Android Studio, import the project by choosing the build.gradle file from the top level directory, then pick madaniDebug under the Build Variants tab.
Is Quran for Android free to run?
The README says it costs money to run, because all the data, meaning pages, audio files and translations, is hosted on servers that people volunteer to pay for every month. The code is under GPL 3 and the project asks for non-profit use.
What licence covers the Quran data in quran_android?
The data is licensed under the licences of its authors, typically CC BY-NC-ND, but this can differ depending on the source of the data. The code itself is GPL 3, which requires modifications to be open sourced as well.
Which Quran page images does Quran for Android ship?
Madani images from the quran images project on GitHub, qaloon images used with permission of Nous Memes Editions Et Diffusion, and naskh images used with permission of SHL Info Systems. The credits state permission rather than licence identifiers.
Where does the translation and tafsir data in Quran for Android come from?
From quranenc and King Saud University, with a small number of translations also coming from tanzil.
What should I do before contributing to Quran for Android?
Look for issues labelled PRs Welcome on the issue tracker, and open an issue to discuss a new feature before implementing it. Code style comes from a committed XML file for Android Studio and IntelliJ plus the predefined Kotlin style guide.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/quran-quran-android)