Initial upload: fin65-mobile
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
$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"
|
||||
Reference in New Issue
Block a user