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>
141 lines
4.3 KiB
Groovy
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'
|
|
}
|