dhis2_android_init_project
Initialize an Android project with DHIS2 SDK integration to build health information apps with offline sync, GPS capture, and architecture patterns.
Instructions
Initialize a new Android project with DHIS2 SDK integration
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | Yes | Android project name (e.g., "dhis2-health-tracker") | |
| applicationId | Yes | Android application ID (e.g., "org.dhis2.healthtracker") | |
| minSdkVersion | No | Minimum Android SDK version (default: 21) | |
| targetSdkVersion | No | Target Android SDK version (default: 34) | |
| language | Yes | Programming language for Android app | |
| dhis2SdkVersion | No | DHIS2 Android SDK version (e.g., "1.10.0") | |
| features | No | Features to include in the project setup | |
| architecture | No | Android architecture pattern to implement |
Implementation Reference
- src/index.ts:1237-1247 (handler)MCP tool handler for 'dhis2_android_init_project'. Receives arguments, calls generateAndroidProjectInit function, and returns generated project initialization instructions as markdown text.case 'dhis2_android_init_project': const androidProjectArgs = args as any; const androidProjectInstructions = generateAndroidProjectInit(androidProjectArgs); return { content: [ { type: 'text', text: androidProjectInstructions, }, ], };
- src/android-generators.ts:32-182 (handler)Core implementation function that generates comprehensive Android project initialization guide including project structure, AndroidManifest.xml, architecture patterns, and next steps based on provided config.export function generateAndroidProjectInit(config: AndroidProjectConfig): string { const { projectName, applicationId, minSdkVersion = 21, targetSdkVersion = 34, language, dhis2SdkVersion, features = [], architecture } = config; return `# DHIS2 Android Project Initialization Guide ## ๐ Quick Start Commands \`\`\`bash # Create new Android project structure mkdir ${projectName} cd ${projectName} # Initialize Android project with Android Studio template or CLI # Option 1: Android Studio # - Create new project with API ${minSdkVersion}+ and ${language} # - Choose Empty Activity template # - Set Application name: ${projectName} # - Set Package name: ${applicationId} # Option 2: Command line with Android CLI tools android create project \\ --name ${projectName} \\ --target android-${targetSdkVersion} \\ --path ./${projectName} \\ --package ${applicationId} \\ --activity MainActivity # Initialize git repository git init \`\`\` ## ๐ฑ Project Structure \`\`\` ${projectName}/ โโโ app/ โ โโโ src/ โ โ โโโ main/ โ โ โ โโโ java/${applicationId?.replace(/\./g, '/') || 'com/example/app'}/ โ โ โ โ โโโ MainActivity.${language === 'kotlin' ? 'kt' : 'java'} โ โ โ โ โโโ data/ โ โ โ โ โ โโโ local/ โ โ โ โ โ โโโ remote/ โ โ โ โ โ โโโ repository/ โ โ โ โ โโโ domain/ โ โ โ โ โ โโโ model/ โ โ โ โ โ โโโ repository/ โ โ โ โ โ โโโ usecase/ โ โ โ โ โโโ presentation/ โ โ โ โ โ โโโ ui/ โ โ โ โ โ โโโ viewmodel/ โ โ โ โ โโโ utils/ โ โ โ โโโ res/ โ โ โ โโโ AndroidManifest.xml โ โ โโโ androidTest/ โ โ โโโ test/ โ โโโ build.gradle${language === 'kotlin' ? '.kts' : ''} โ โโโ proguard-rules.pro โโโ gradle/ โโโ build.gradle${language === 'kotlin' ? '.kts' : ''} โโโ gradle.properties โโโ settings.gradle${language === 'kotlin' ? '.kts' : ''} \`\`\` ## ๐๏ธ Architecture Pattern: ${architecture?.toUpperCase().replace('_', ' ') || 'MVVM'} ${generateArchitecturePattern(architecture || 'mvvm', language || 'kotlin')} ## ๐ Required Permissions Add these permissions to \`app/src/main/AndroidManifest.xml\`: \`\`\`xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="${applicationId}"> <!-- DHIS2 SDK Required Permissions --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> ${(features || []).includes('gps_capture') ? ` <!-- Location Services --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />` : ''} ${(features || []).includes('camera_integration') ? ` <!-- Camera & Media --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />` : ''} ${(features || []).includes('encrypted_storage') ? ` <!-- Storage & Security --> <uses-permission android:name="android.permission.USE_FINGERPRINT" /> <uses-permission android:name="android.permission.USE_BIOMETRIC" />` : ''} ${(features || []).includes('offline_sync') ? ` <!-- Background Sync --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />` : ''} <application android:name=".${(projectName || 'App').replace(/-/g, '')}Application" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.${(projectName || 'App').replace(/-/g, '')}" android:networkSecurityConfig="@xml/network_security_config"> <activity android:name=".MainActivity" android:exported="true" android:theme="@style/Theme.${(projectName || 'App').replace(/-/g, '')}.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ${(features || []).includes('offline_sync') ? ` <!-- Background Sync Service --> <service android:name=".service.SyncService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false" />` : ''} </application> </manifest> \`\`\` ## ๐ง Next Steps 1. **Configure Gradle**: Use \`dhis2_android_configure_gradle\` tool 2. **Set up Authentication**: Use \`dhis2_android_setup_authentication\` tool 3. **Configure Data Sync**: Use \`dhis2_android_setup_sync\` tool 4. **Add UI Components**: Use \`dhis2_android_configure_ui_patterns\` tool ## ๐ Additional Resources - [DHIS2 Android SDK Documentation](https://docs.dhis2.org/en/develop/developing-with-the-android-sdk/about-this-guide.html) - [Android Architecture Guide](https://developer.android.com/guide/components/activities/activity-lifecycle) - [Material Design Components](https://material.io/develop/android) ## ๐งช Development Commands \`\`\`bash # Build debug APK ./gradlew assembleDebug # Run tests ./gradlew test # Install on connected device ./gradlew installDebug # Generate signed APK ./gradlew assembleRelease \`\`\` `; }
- src/android-generators.ts:6-15 (schema)TypeScript interface defining the input schema/parameters for the Android project initialization tool.export interface AndroidProjectConfig { projectName: string; applicationId: string; minSdkVersion: number; targetSdkVersion: number; language: 'kotlin' | 'java'; dhis2SdkVersion: string; features: string[]; architecture: string; }
- src/permission-system.ts:155-155 (registration)Tool permission registration mapping 'dhis2_android_init_project' to required user permission 'canUseMobileFeatures'.['dhis2_android_init_project', 'canUseMobileFeatures'],