Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/tutosrive/mcbfc/llms.txt

Use this file to discover all available pages before exploring further.

MCBFC’s dependency footprint is intentionally small. The two critical artifacts are io.noties.markwon:core and io.noties.markwon:recycler at version 4.6.2 — no other third-party libraries are required. All remaining dependencies are standard AndroidX components that most Android projects already include.
Markwon 4.6.2 is the last stable release of the v4 series and is the recommended version for production use. It is published on Maven Central under the group ID io.noties.markwon and requires no additional repository declarations beyond mavenCentral().

Markwon artifacts

build.gradle.kts
// Markwon core — markdown parsing and span rendering
implementation("io.noties.markwon:core:4.6.2")
// Markwon recycler — MarkwonAdapter and Entry API
implementation("io.noties.markwon:recycler:4.6.2")
io.noties.markwon:core — Provides the Markwon class and its builder, the CommonMark parser (backed by commonmark-java), and the full span-rendering pipeline that converts AST nodes into Android Spanned text. This artifact is required even if you only use the recycler integration. io.noties.markwon:recycler — Adds MarkwonAdapter (a RecyclerView.Adapter that maps AST nodes to item view types), the MarkwonAdapter.Entry<N, H> base class that BlockCodeEntry extends, and MarkwonAdapter.Holder that BlockCodeEntry.Holder extends. Without this artifact, a RecyclerView-based Markwon renderer is not possible.

AndroidX dependencies

The version catalogue used by the project is shown below in full:
libs.versions.toml
[versions]
agp = "9.1.1"
coreKtx = "1.19.0"
junit = "4.13.2"
junitVersion = "1.3.0"
espressoCore = "3.7.0"
appcompat = "1.7.1"
material = "1.14.0"
activity = "1.13.0"
constraintlayout = "2.2.1"
recyclerview = "1.4.0"

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "recyclerview" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
The direct AndroidX runtime dependencies used by the app module are:
  • androidx.core:core-ktx:1.19.0 — Kotlin extensions for core Android APIs (including Context, View, and system service helpers).
  • androidx.appcompat:appcompat:1.7.1 — Backwards-compatible AppCompatActivity and theme support.
  • com.google.android.material:material:1.14.0 — Material Design 3 components and theme attributes, including ?attr/actionModeCopyDrawable used by fenced_code_view.xml.
  • androidx.activity:activity:1.13.0ComponentActivity and OnBackPressedDispatcher support.
  • androidx.constraintlayout:constraintlayout:2.2.1ConstraintLayout used as the root of activity_main.xml.
  • androidx.recyclerview:recyclerview:1.4.0 — The RecyclerView widget, RecyclerView.Adapter, LinearLayoutManager, and DefaultItemAnimator classes that the markdown wrapper configures.

SDK and toolchain requirements

PropertyValue
minSdk24 (Android 7.0 Nougat)
targetSdk36
compileSdk37
versionName1.0
Java source/target11
Gradle AGP9.1.1
Gradle wrapper9.3.1

ProGuard / R8

Release builds have both minification and resource shrinking enabled:
build.gradle.kts
buildTypes {
    release {
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(
            getDefaultProguardFile("proguard-android-optimize.txt"),
            "proguard-rules.pro"
        )
    }
}
isMinifyEnabled = true activates R8 code shrinking, which removes unused classes and obfuscates identifiers. isShrinkResources = true strips unreferenced drawable, layout, and string resources from the APK. Any custom keep rules — for example, rules to preserve Markwon’s reflection-based node resolution or the BlockCodeEntry class name — should be added to proguard-rules.pro in the app/ module directory alongside the default AGP rules from proguard-android-optimize.txt.

Build docs developers (and LLMs) love