Skip to main content
Glama

dhis2_android_configure_gradle

Generate Gradle build configurations to integrate DHIS2 Android SDK, enabling Jetpack Compose, view binding, data binding, ProGuard rules, and custom build variants for multi-environment setups.

Instructions

Generate Gradle build configuration for DHIS2 Android SDK integration

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
additionalLibrariesNoAdditional Android libraries to include
buildFeaturesNo
buildVariantsNoBuild variants for different DHIS2 environments
dhis2SdkVersionYesDHIS2 Android SDK version
proguardRulesNoGenerate ProGuard rules for DHIS2 SDK

Implementation Reference

  • MCP tool handler that invokes generateGradleBuildConfig with input arguments and returns the generated Gradle configuration as text content.
    case 'dhis2_android_configure_gradle': const gradleArgs = args as any; const gradleConfig = generateGradleBuildConfig(gradleArgs); return { content: [ { type: 'text', text: gradleConfig, }, ], };
  • Primary helper function that generates comprehensive Android Gradle build configuration including dependencies for DHIS2 SDK, build features, product flavors, and additional libraries.
    export function generateGradleBuildConfig(config: GradleConfig): string { const { dhis2SdkVersion, buildFeatures, proguardRules, buildVariants, additionalLibraries } = config; const additionalDependencies = additionalLibraries.map(lib => { switch (lib) { case 'room': return ` // Room Database implementation "androidx.room:room-runtime:2.6.1" implementation "androidx.room:room-ktx:2.6.1" kapt "androidx.room:room-compiler:2.6.1"`; case 'retrofit': return ` // Retrofit HTTP Client implementation "com.squareup.retrofit2:retrofit:2.9.0" implementation "com.squareup.retrofit2:converter-gson:2.9.0"`; case 'dagger_hilt': return ` // Dagger Hilt implementation "com.google.dagger:hilt-android:2.48" kapt "com.google.dagger:hilt-compiler:2.48"`; case 'rxjava': return ` // RxJava implementation "io.reactivex.rxjava3:rxjava:3.1.8" implementation "io.reactivex.rxjava3:rxandroid:3.0.2"`; case 'coroutines': return ` // Kotlin Coroutines implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"`; case 'navigation': return ` // Navigation Component implementation "androidx.navigation:navigation-fragment-ktx:2.7.6" implementation "androidx.navigation:navigation-ui-ktx:2.7.6"`; default: return ''; } }).filter(dep => dep).join('\n\n'); return `# Android Gradle Build Configuration ## app/build.gradle.kts \`\`\`kotlin plugins { id("com.android.application") id("org.jetbrains.kotlin.android") ${buildFeatures.compose ? ' id("org.jetbrains.kotlin.plugin.compose")' : ''} ${additionalLibraries.includes('dagger_hilt') ? ' id("dagger.hilt.android.plugin")' : ''} kotlin("kapt") } android { namespace = "${config.dhis2SdkVersion}" // Use your package name compileSdk = 34 defaultConfig { applicationId = "org.dhis2.android.app" minSdk = 21 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" ${buildFeatures.compose ? ` vectorDrawables { useSupportLibrary = true }` : ''} } buildTypes { release { isMinifyEnabled = ${proguardRules} ${proguardRules ? 'proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")' : ''} } debug { isMinifyEnabled = false applicationIdSuffix = ".debug" versionNameSuffix = "-DEBUG" } } ${buildVariants.length > 0 ? ` flavorDimensions += "environment" productFlavors {${buildVariants.map(variant => ` create("${variant.name}") { dimension = "environment" buildConfigField("String", "DHIS2_BASE_URL", "\\"${variant.dhis2Instance}\\"") applicationIdSuffix = ".${variant.name}" }`).join('')} }` : ''} compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { ${buildFeatures.compose ? ' compose = true' : ''} ${buildFeatures.viewBinding ? ' viewBinding = true' : ''} ${buildFeatures.dataBinding ? ' dataBinding = true' : ''} buildConfig = true } ${buildFeatures.compose ? ` composeOptions { kotlinCompilerExtensionVersion = "1.5.8" }` : ''} packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { // DHIS2 Android SDK implementation "org.hisp.dhis:android-core:${dhis2SdkVersion}" // Core Android Dependencies implementation "androidx.core:core-ktx:1.12.0" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.7.0" implementation "androidx.activity:activity-ktx:1.8.2" ${buildFeatures.compose ? ` // Jetpack Compose implementation platform("androidx.compose:compose-bom:2024.02.00") implementation "androidx.compose.ui:ui" implementation "androidx.compose.ui:ui-graphics" implementation "androidx.compose.ui:ui-tooling-preview" implementation "androidx.compose.material3:material3" implementation "androidx.activity:activity-compose:1.8.2" debugImplementation "androidx.compose.ui:ui-tooling" debugImplementation "androidx.compose.ui:ui-test-manifest"` : ''} ${!buildFeatures.compose ? ` // Traditional Android Views implementation "com.google.android.material:material:1.11.0" implementation "androidx.constraintlayout:constraintlayout:2.1.4"` : ''} // Lifecycle Components implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.7.0" ${additionalDependencies} // Testing testImplementation "junit:junit:4.13.2" testImplementation "org.mockito:mockito-core:5.7.0" testImplementation "androidx.arch.core:core-testing:2.2.0" androidTestImplementation "androidx.test.ext:junit:1.1.5" androidTestImplementation "androidx.test.espresso:espresso-core:3.5.1" ${buildFeatures.compose ? ` androidTestImplementation "androidx.compose.ui:ui-test-junit4"` : ''} } \`\`\` ## Project Level build.gradle.kts \`\`\`kotlin plugins { id("com.android.application") version "8.2.2" apply false id("org.jetbrains.kotlin.android") version "1.9.22" apply false ${additionalLibraries.includes('dagger_hilt') ? ' id("com.google.dagger.hilt.android") version "2.48" apply false' : ''} ${buildFeatures.compose ? ' id("org.jetbrains.kotlin.plugin.compose") version "1.9.22" apply false' : ''} } \`\`\` ${proguardRules ? generateProGuardRules() : ''} ## gradle.properties \`\`\`properties # Android Configuration android.useAndroidX=true android.enableJetifier=true # Kotlin Configuration kotlin.code.style=official # Performance Optimizations org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 org.gradle.parallel=true org.gradle.caching=true org.gradle.configureondemand=true # DHIS2 Configuration DHIS2_SDK_VERSION=${dhis2SdkVersion} \`\`\` ## Next Steps 1. **Sync project** - Click "Sync Now" in Android Studio 2. **Configure authentication** - Use \`dhis2_android_setup_authentication\` 3. **Set up data models** - Use \`dhis2_android_generate_data_models\` 4. **Configure sync** - Use \`dhis2_android_setup_sync\` `;
  • TypeScript interface defining the input schema for Gradle configuration parameters.
    export interface GradleConfig { dhis2SdkVersion: string; buildFeatures: { compose?: boolean; viewBinding?: boolean; dataBinding?: boolean; }; proguardRules: boolean; buildVariants: Array<{ name: string; dhis2Instance: string; }>; additionalLibraries: string[]; }
  • Tool permission registration mapping the tool to required 'canUseMobileFeatures' permission in the TOOL_PERMISSIONS Map.
    ['dhis2_android_configure_gradle', 'canUseMobileFeatures'],

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dradebo/dhis2-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server