129 lines
5.1 KiB
PowerShell
129 lines
5.1 KiB
PowerShell
$MobileDir = "D:\07-Logiciels\20-FIN65\fin65_mobile"
|
|
$Manifest = Join-Path $MobileDir "android\app\src\main\AndroidManifest.xml"
|
|
$AndroidDir = Join-Path $MobileDir "android\app\src\main"
|
|
$KotlinRoot = Join-Path $AndroidDir "kotlin"
|
|
$JavaRoot = Join-Path $AndroidDir "java"
|
|
|
|
Write-Host ""
|
|
Write-Host "=========================================="
|
|
Write-Host " FIN65 - Patch Android biometrie"
|
|
Write-Host "=========================================="
|
|
Write-Host ""
|
|
|
|
if (!(Test-Path $MobileDir)) {
|
|
Write-Host "[ERREUR] Dossier mobile introuvable : $MobileDir" -ForegroundColor Red
|
|
Read-Host "Appuie sur Entree pour fermer"
|
|
exit 1
|
|
}
|
|
|
|
if (!(Test-Path $Manifest)) {
|
|
Write-Host "[ERREUR] AndroidManifest.xml introuvable : $Manifest" -ForegroundColor Red
|
|
Read-Host "Appuie sur Entree pour fermer"
|
|
exit 1
|
|
}
|
|
|
|
$Stamp = Get-Date -Format "yyyyMMdd_HHmmss"
|
|
Copy-Item $Manifest "$Manifest.before_biometric_$Stamp.bak" -Force
|
|
|
|
[xml]$xml = Get-Content $Manifest
|
|
$manifestNode = $xml.manifest
|
|
$androidNs = "http://schemas.android.com/apk/res/android"
|
|
|
|
function Ensure-Permission($name) {
|
|
$existing = $manifestNode.'uses-permission' | Where-Object {
|
|
$_.GetAttribute("name", $androidNs) -eq $name
|
|
}
|
|
if ($null -eq $existing) {
|
|
$perm = $xml.CreateElement("uses-permission")
|
|
$attr = $xml.CreateAttribute("android", "name", $androidNs)
|
|
$attr.Value = $name
|
|
[void]$perm.Attributes.Append($attr)
|
|
[void]$manifestNode.InsertBefore($perm, $manifestNode.FirstChild)
|
|
Write-Host "Permission ajoutee : $name"
|
|
} else {
|
|
Write-Host "Permission deja presente : $name"
|
|
}
|
|
}
|
|
|
|
Ensure-Permission "android.permission.INTERNET"
|
|
Ensure-Permission "android.permission.USE_BIOMETRIC"
|
|
|
|
$app = $manifestNode.application
|
|
if ($app -ne $null) {
|
|
$app.SetAttribute("label", $androidNs, "FIN65")
|
|
$app.SetAttribute("icon", $androidNs, "@mipmap/ic_launcher")
|
|
$app.SetAttribute("roundIcon", $androidNs, "@mipmap/ic_launcher_round")
|
|
$app.SetAttribute("usesCleartextTraffic", $androidNs, "true")
|
|
}
|
|
|
|
$xml.Save($Manifest)
|
|
Write-Host "AndroidManifest.xml mis a jour."
|
|
|
|
# MainActivity: local_auth Android demande FlutterFragmentActivity.
|
|
$mainFiles = @()
|
|
if (Test-Path $KotlinRoot) {
|
|
$mainFiles += Get-ChildItem $KotlinRoot -Recurse -Filter MainActivity.kt -ErrorAction SilentlyContinue
|
|
}
|
|
if (Test-Path $JavaRoot) {
|
|
$mainFiles += Get-ChildItem $JavaRoot -Recurse -Filter MainActivity.java -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
if ($mainFiles.Count -eq 0) {
|
|
Write-Host "[ATTENTION] MainActivity introuvable. Aucun patch FragmentActivity applique." -ForegroundColor Yellow
|
|
} else {
|
|
foreach ($file in $mainFiles) {
|
|
Copy-Item $file.FullName "$($file.FullName).before_biometric_$Stamp.bak" -Force
|
|
$text = Get-Content $file.FullName -Raw
|
|
|
|
if ($file.Extension -eq ".kt") {
|
|
$text = $text -replace "import io\.flutter\.embedding\.android\.FlutterActivity", "import io.flutter.embedding.android.FlutterFragmentActivity"
|
|
if ($text -notmatch "FlutterFragmentActivity") {
|
|
$text = $text -replace "package ([^\r\n]+)", "package `$1`n`nimport io.flutter.embedding.android.FlutterFragmentActivity"
|
|
}
|
|
$text = $text -replace ":\s*FlutterActivity\(\)", ": FlutterFragmentActivity()"
|
|
$text = $text -replace "extends\s+FlutterActivity", "extends FlutterFragmentActivity"
|
|
Set-Content $file.FullName $text -Encoding UTF8
|
|
Write-Host "MainActivity.kt mis a jour : $($file.FullName)"
|
|
}
|
|
|
|
if ($file.Extension -eq ".java") {
|
|
$text = $text -replace "import io\.flutter\.embedding\.android\.FlutterActivity;", "import io.flutter.embedding.android.FlutterFragmentActivity;"
|
|
if ($text -notmatch "FlutterFragmentActivity") {
|
|
$text = $text -replace "(package [^;]+;)", "`$1`n`nimport io.flutter.embedding.android.FlutterFragmentActivity;"
|
|
}
|
|
$text = $text -replace "extends\s+FlutterActivity", "extends FlutterFragmentActivity"
|
|
Set-Content $file.FullName $text -Encoding UTF8
|
|
Write-Host "MainActivity.java mis a jour : $($file.FullName)"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Tente de relever minSdk a 24 si un fichier Gradle classique existe.
|
|
$gradleFiles = @(
|
|
(Join-Path $MobileDir "android\app\build.gradle"),
|
|
(Join-Path $MobileDir "android\app\build.gradle.kts")
|
|
)
|
|
|
|
foreach ($g in $gradleFiles) {
|
|
if (Test-Path $g) {
|
|
Copy-Item $g "$g.before_biometric_$Stamp.bak" -Force
|
|
$text = Get-Content $g -Raw
|
|
$text = $text -replace "minSdkVersion\s+flutter\.minSdkVersion", "minSdkVersion 24"
|
|
$text = $text -replace "minSdk\s*=\s*flutter\.minSdkVersion", "minSdk = 24"
|
|
$text = $text -replace "minSdkVersion\s+\d+", "minSdkVersion 24"
|
|
$text = $text -replace "minSdk\s*=\s*\d+", "minSdk = 24"
|
|
Set-Content $g $text -Encoding UTF8
|
|
Write-Host "Gradle minSdk verifie : $g"
|
|
}
|
|
}
|
|
|
|
Set-Location $MobileDir
|
|
flutter clean
|
|
flutter pub get
|
|
|
|
Write-Host ""
|
|
Write-Host "Patch Android biometrie termine."
|
|
Write-Host "Relance maintenant : flutter run"
|
|
Write-Host ""
|
|
Read-Host "Appuie sur Entree pour fermer"
|