// android/app/build.gradle apply plugin: "com.android.application" apply plugin: "com.facebook.react" /** * Configuration Queen Bee Detector * Android Build */ def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() android { ndkVersion rootProject.ext.ndkVersion compileSdkVersion rootProject.ext.compileSdkVersion namespace "com.queenbeedetector" defaultConfig { applicationId "com.team_aura.queenbeedetector" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0.0" // Support TensorFlow Lite ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86_64" } // Vectoriel drawable support vectorDrawables.useSupportLibrary = true } signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } release { if (project.hasProperty('QUEEN_BEE_UPLOAD_STORE_FILE')) { storeFile file(QUEEN_BEE_UPLOAD_STORE_FILE) storePassword QUEEN_BEE_UPLOAD_STORE_PASSWORD keyAlias QUEEN_BEE_UPLOAD_KEY_ALIAS keyPassword QUEEN_BEE_UPLOAD_KEY_PASSWORD } } } buildTypes { debug { signingConfig signingConfigs.debug applicationIdSuffix ".debug" debuggable true minifyEnabled false shrinkResources false } release { signingConfig signingConfigs.release minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" // Optimisations zipAlignEnabled true crunchPngs true } } // Splits pour réduire la taille de l'APK splits { abi { reset() enable true universalApk false // Générer un APK par architecture include "armeabi-v7a", "arm64-v8a" } } // Ne pas compresser les fichiers TFLite aaptOptions { noCompress "tflite" noCompress "lite" } // Packaging options packagingOptions { // Exclure fichiers dupliqués pickFirst 'lib/x86/libc++_shared.so' pickFirst 'lib/x86_64/libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' pickFirst 'lib/arm64-v8a/libc++_shared.so' // Exclure fichiers inutiles exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/license.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/notice.txt' exclude 'META-INF/ASL2.0' exclude 'META-INF/*.kotlin_module' } // Configuration Java compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } } dependencies { // React Native implementation("com.facebook.react:react-android") // TensorFlow Lite implementation 'org.tensorflow:tensorflow-lite:2.14.0' implementation 'org.tensorflow:tensorflow-lite-gpu:2.14.0' implementation 'org.tensorflow:tensorflow-lite-support:0.4.4' // TensorFlow Lite Select TF Ops (si nécessaire) // implementation 'org.tensorflow:tensorflow-lite-select-tf-ops:2.14.0' // Camera implementation project(':react-native-vision-camera') // Autres dépendances implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" // Debug debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { exclude group:'com.squareup.okhttp3', module:'okhttp' } debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } } // Version mapping pour ABIs project.ext.versionCodes = [ 'armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4 ] android.applicationVariants.all { variant -> variant.outputs.each { output -> def abiName = output.getFilter(com.android.build.OutputFile.ABI) if (abiName != null) { def abiVersionCode = project.ext.versionCodes.get(abiName) output.versionCodeOverride = abiVersionCode * 1000 + variant.versionCode } } } // Task pour copier assets task copyAssets(type: Copy) { description = 'Copie les assets nécessaires' from "${projectRoot}/assets" into "${projectDir}/src/main/assets" } preBuild.dependsOn copyAssets apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle") applyNativeModulesAppBuildGradle(project)