plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id "dev.flutter.flutter-gradle-plugin" id "com.google.gms.google-services" // id "com.huawei.agconnect" //todo this will be done } def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } //apply plugin: 'com.android.application' //apply plugin: 'kotlin-android' //apply plugin: 'com.google.gms.google-services' //apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" //apply plugin: 'com.huawei.agconnect' android { namespace 'hmg.cloudSolutions.mohem' compileSdkVersion 35 defaultConfig { multiDexEnabled true } compileOptions { // Flag to enable support for the new language APIs coreLibraryDesugaringEnabled true // Sets Java compatibility to Java 8 sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "hmg.cloudSolutions.mohem" minSdkVersion 28 targetSdkVersion 35 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } buildFeatures{ buildConfig true } signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } } buildTypes { debug { signingConfig signingConfigs.debug } release { signingConfig signingConfigs.release minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } flutter { source '../..' } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2' // implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10" } def targetProjects = ["huawei_push", "in_app_update", "qr_code_scanner"] subprojects { afterEvaluate { subproject -> if (targetProjects.contains(subproject.name) && subproject.extensions.findByName("android") != null) { // Register the fix task only for target projects def fixTask = subproject.tasks.register("fixManifestsAndNamespace") { doLast { def buildGradleFile = file("build.gradle") def manifestFile = file("src/main/AndroidManifest.xml") // Step 1: Set namespace from package if not already present if (manifestFile.exists()) { def manifestContent = manifestFile.getText("UTF-8") def matcher = (manifestContent =~ /package\s*=\s*"([^"]+)"/) def packageName = matcher.find() ? matcher.group(1) : null if (packageName != null && !buildGradleFile.getText().contains("namespace")) { println "Setting namespace in ${buildGradleFile.path}" def updatedBuildGradle = buildGradleFile.getText().replaceFirst( /android\s*\{/, "android {\n namespace = \"${packageName}\"" ) buildGradleFile.write(updatedBuildGradle, "UTF-8") } } // Step 2: Remove `package` from all AndroidManifest.xml files in the project def manifestFiles = fileTree("src/main") { include "**/AndroidManifest.xml" } manifestFiles.each { file -> def content = file.getText() if (content.contains("package=")) { println "Removing package attribute from ${file.path}" def updated = content.replaceAll(/package\s*=\s*"[^"]*"/, "") file.write(updated) } } } } // Ensure the task runs before preBuild subproject.tasks.matching { it.name.startsWith("preBuild") }.configureEach { dependsOn fixTask } } } }