plugins { id "com.android.application" id "kotlin-android" // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id "dev.flutter.flutter-gradle-plugin" } // ── Dev Host — source unique : android/local.properties → dev.host ─────────── def localProps = new Properties() def localPropsFile = rootProject.file('local.properties') if (localPropsFile.exists()) localPropsFile.withInputStream { localProps.load(it) } def devHost = localProps.getProperty('dev.host', '10.0.2.2') task generateDevConfig { description = 'Generates network_security_config.xml and local_config.dart from local.properties' group = 'UnionFlow' inputs.property('devHost', devHost) outputs.files( file("src/main/res/xml/network_security_config.xml"), rootProject.file("../lib/core/config/local_config.dart") ) doLast { def xmlContent = """\ ${devHost} localhost 10.0.2.2 127.0.0.1 """ def dartContent = """\ // AUTO-GENERATED by build.gradle - DO NOT EDIT // Edit android/local.properties (dev.host) instead. // ignore_for_file: prefer_single_quotes const String kDevHost = '${devHost}'; """ // Write with explicit UTF-8 encoding (avoids Windows-1252 on French systems) file("src/main/res/xml/network_security_config.xml") .newWriter('UTF-8').withWriter { w -> w << xmlContent } rootProject.file("../lib/core/config/local_config.dart") .newWriter('UTF-8').withWriter { w -> w << dartContent } } } preBuild.dependsOn generateDevConfig // local_config.dart is consumed by Flutter compile tasks — declare explicit dependency tasks.configureEach { task -> if (task.name.startsWith('compileFlutterBuild')) { task.dependsOn generateDevConfig } } // ───────────────────────────────────────────────────────────────────────────── android { namespace = "dev.lions.unionflow_mobile_apps" compileSdk = 36 ndkVersion = flutter.ndkVersion compileOptions { coreLibraryDesugaringEnabled true sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "dev.lions.unionflow_mobile_apps" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName // Configuration pour flutter_appauth manifestPlaceholders = [ 'appAuthRedirectScheme': 'dev.lions.unionflow-mobile', 'applicationName': 'android.app.Application' ] } buildTypes { release { // TODO: Configurer signingConfigs.release avec votre keystore de production // signingConfig = signingConfigs.release signingConfig = signingConfigs.debug // Activer la minification et l'obfuscation pour la release minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } flutter { source = "../.." } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4' }