Thomas Fransolet 40c2e618c5 K5 : outillage Android aligné, les 3 flavors construisent
La prémisse du lot était périmée. Trois documents annonçaient un
`flutter build apk` en échec côté Gradle/NDK, revérifié le 11/08 : les
trois flavors (dev, mdlf, fortsaintheribert) construisent, exit 0.

La config Android de ce repo était déjà à niveau — Gradle 8.11.1, AGP
8.9.0, -Xmx4096M, enableJetifier=false, aucun forçage androidx.lifecycle.
Les dix crans du 12/08 ont amené tablet-app jusqu'à mymuseum ; il n'y
avait pas la même migration à refaire ici. Le repo qui a servi de modèle
au portage K2 n'avait pas de raison d'être en retard d'outillage sur
celui qui le copiait.

Restaient les deux avertissements du build :

- NDK 27.0.12077973 -> 28.2.13676358, réclamé nommément par speech_to_text
- Kotlin 2.1.0 -> 2.3.10, sous le seuil 2.2.20 annoncé comme rupture par
  Flutter. C'est la version de tablet-app : un alignement, pas une
  version neuve introduite dans le projet.

Six builds — les trois flavors avant, les trois après. APK de 382 à 349 Mo.

Non pris volontairement : Kotlin réglé, Flutter réclame Gradle 8.14.0 et
AGP 8.11.1. C'est du terrain neuf pour les deux repos (tablet-app est à
8.11.1/8.9.1, mêmes avertissements latents) — le faire ici seul désaligne
les deux apps au lieu de les aligner. À faire d'un bloc sur les deux, ou
pas du tout.

Débloque D0 / test-plan §21 sur device, donc la mesure des bugs offline
D2-D5 et la confirmation du volet visiteur de D1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 14:18:35 +02:00

141 lines
4.3 KiB
Groovy

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"
id "com.google.gms.google-services"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
/*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'
}
/*apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"*/
android {
namespace = "be.unov.mymuseum.fortsaintheribert"
compileSdkVersion 36
ndkVersion "28.2.13676358"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
coreLibraryDesugaringEnabled true
}
packagingOptions {
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
minSdkVersion 29 // meta_wearables SDK requires API 29+
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
manifestPlaceholders = [
mwdatCallbackScheme: "mwdat-myinfomate",
applicationName: "io.flutter.app.FlutterApplication"
]
}
flavorDimensions "client"
productFlavors {
dev {
dimension "client"
applicationId "be.unov.myinfomate.test"
resValue "string", "app_name", "MyMuseum Dev"
manifestPlaceholders = [
mwdatCallbackScheme: "mwdat-myinfomate-dev",
applicationName: "io.flutter.app.FlutterApplication"
]
}
mdlf {
dimension "client"
applicationId "be.unov.mymuseum.mdlf"
resValue "string", "app_name", "MDLF"
manifestPlaceholders = [
mwdatCallbackScheme: "mwdat-mymuseum-mdlf",
applicationName: "io.flutter.app.FlutterApplication"
]
}
fortsaintheribert {
dimension "client"
applicationId "be.unov.mymuseum.fortsaintheribert"
resValue "string", "app_name", "Fort Saint-Héribert"
manifestPlaceholders = [
mwdatCallbackScheme: "mwdat-mymuseum-fortsaintheribert",
applicationName: "io.flutter.app.FlutterApplication"
]
}
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
debuggable false
}
}
}
flutter {
source '../..'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
implementation 'org.tensorflow:tensorflow-lite:2.12.0'
implementation 'com.microsoft.onnxruntime:onnxruntime-android:1.16.0'
}