2021-03-25 23:03:03 +01:00
|
|
|
# This is a windows only powershell script to create android.jar stubs
|
|
|
|
# foolproof against running from AndroidCompat dir instead of running from project root
|
2021-03-25 01:28:34 +01:00
|
|
|
if ($(Split-Path -Path (Get-Location) -Leaf) -eq "AndroidCompat" ) {
|
|
|
|
Set-Location ..
|
|
|
|
}
|
|
|
|
|
|
|
|
Write-Output "Getting required Android.jar..."
|
2021-03-25 21:47:30 +01:00
|
|
|
Remove-Item -Recurse -Force "tmp" -ErrorAction SilentlyContinue | Out-Null
|
2021-03-25 01:28:34 +01:00
|
|
|
New-Item -ItemType Directory -Force -Path "tmp" | Out-Null
|
|
|
|
|
|
|
|
$androidEncoded = (Invoke-WebRequest -Uri "https://android.googlesource.com/platform/prebuilts/sdk/+/3b8a524d25fa6c3d795afb1eece3f24870c60988/27/public/android.jar?format=TEXT").content
|
|
|
|
|
|
|
|
$android_jar = (Get-Location).Path + "\tmp\android.jar"
|
|
|
|
|
|
|
|
[IO.File]::WriteAllBytes($android_jar, [Convert]::FromBase64String($androidEncoded))
|
|
|
|
|
2021-03-25 22:59:31 +01:00
|
|
|
# We need to remove any stub classes that we have implementations for
|
2021-03-25 01:28:34 +01:00
|
|
|
Write-Output "Patching JAR..."
|
|
|
|
|
|
|
|
function Remove-Files-Zip($zipfile, $path)
|
|
|
|
{
|
|
|
|
[Reflection.Assembly]::LoadWithPartialName('System.IO.Compression') | Out-Null
|
|
|
|
|
|
|
|
$stream = New-Object IO.FileStream($zipfile, [IO.FileMode]::Open)
|
|
|
|
$mode = [IO.Compression.ZipArchiveMode]::Update
|
|
|
|
$zip = New-Object IO.Compression.ZipArchive($stream, $mode)
|
|
|
|
|
|
|
|
($zip.Entries | Where-Object { $_.FullName -like $path }) | ForEach-Object { Write-Output "Deleting: $($_.FullName)"; $_.Delete() }
|
|
|
|
|
|
|
|
$zip.Dispose()
|
|
|
|
$stream.Close()
|
|
|
|
$stream.Dispose()
|
|
|
|
}
|
|
|
|
|
|
|
|
Write-Output "Removing org.json..."
|
|
|
|
Remove-Files-Zip $android_jar 'org/json/*'
|
|
|
|
|
|
|
|
Write-Output "Removing org.apache..."
|
|
|
|
Remove-Files-Zip $android_jar 'org/apache/*'
|
|
|
|
|
|
|
|
Write-Output "Removing org.w3c..."
|
|
|
|
Remove-Files-Zip $android_jar 'org/w3c/*'
|
|
|
|
|
|
|
|
Write-Output "Removing org.xml..."
|
|
|
|
Remove-Files-Zip $android_jar 'org/xml/*'
|
|
|
|
|
|
|
|
Write-Output "Removing org.xmlpull..."
|
|
|
|
Remove-Files-Zip $android_jar 'org/xmlpull/*'
|
|
|
|
|
|
|
|
Write-Output "Removing junit..."
|
|
|
|
Remove-Files-Zip $android_jar 'junit/*'
|
|
|
|
|
|
|
|
Write-Output "Removing javax..."
|
|
|
|
Remove-Files-Zip $android_jar 'javax/*'
|
|
|
|
|
|
|
|
Write-Output "Removing java..."
|
|
|
|
Remove-Files-Zip $android_jar 'java/*'
|
|
|
|
|
|
|
|
Write-Output "Removing overriden classes..."
|
|
|
|
Remove-Files-Zip $android_jar 'android/app/Application.class'
|
|
|
|
Remove-Files-Zip $android_jar 'android/app/Service.class'
|
|
|
|
Remove-Files-Zip $android_jar 'android/net/Uri.class'
|
|
|
|
Remove-Files-Zip $android_jar 'android/net/Uri$Builder.class'
|
|
|
|
Remove-Files-Zip $android_jar 'android/os/Environment.class'
|
|
|
|
Remove-Files-Zip $android_jar 'android/text/format/Formatter.class'
|
|
|
|
Remove-Files-Zip $android_jar 'android/text/Html.class'
|
|
|
|
|
|
|
|
function Dedupe($path)
|
|
|
|
{
|
|
|
|
Push-Location $path
|
|
|
|
$classes = Get-ChildItem . *.* -Recurse | Where-Object { !$_.PSIsContainer }
|
|
|
|
$classes | ForEach-Object {
|
|
|
|
"Processing class: $($_.FullName)"
|
|
|
|
Remove-Files-Zip $android_jar "$($_.Name).class" | Out-Null
|
|
|
|
Remove-Files-Zip $android_jar "$($_.Name)$*.class" | Out-Null
|
|
|
|
Remove-Files-Zip $android_jar "$($_.Name)Kt.class" | Out-Null
|
|
|
|
Remove-Files-Zip $android_jar "$($_.Name)Kt$*.class" | Out-Null
|
|
|
|
}
|
|
|
|
Pop-Location
|
|
|
|
}
|
|
|
|
|
|
|
|
Dedupe "AndroidCompat/src/main/java"
|
|
|
|
Dedupe "server/src/main/java"
|
|
|
|
Dedupe "server/src/main/kotlin"
|
|
|
|
|
|
|
|
Write-Output "Copying Android.jar to library folder..."
|
|
|
|
Move-Item -Force $android_jar "AndroidCompat/lib/android.jar"
|
|
|
|
|
|
|
|
Write-Output "Cleaning up..."
|
|
|
|
Remove-Item -Recurse -Force "tmp"
|
|
|
|
|
2021-03-25 22:59:31 +01:00
|
|
|
Write-Output "Done!"
|