diff --git a/images/macos/software-report/SoftwareReport.Android.psm1 b/images/macos/software-report/SoftwareReport.Android.psm1
index 8145b248f..75f1d9f86 100644
--- a/images/macos/software-report/SoftwareReport.Android.psm1
+++ b/images/macos/software-report/SoftwareReport.Android.psm1
@@ -1,7 +1,3 @@
-Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
-
-$os = Get-OSVersion
-
function Split-TableRowByColumns {
param(
[string] $Row
@@ -9,17 +5,6 @@ function Split-TableRowByColumns {
return $Row.Split("|") | ForEach-Object { $_.trim() }
}
-function Build-AndroidTableObject {
- param(
- [string] $PackageName,
- [string] $Description
- )
- return [PSCustomObject] @{
- "Package Name" = $PackageName
- "Description" = $Description
- }
-}
-
function Get-AndroidSDKRoot {
return Join-Path $env:HOME "Library" "Android" "sdk"
}
@@ -43,124 +28,148 @@ function Get-AndroidInstalledPackages {
return $androidInstalledPackages
}
-function Build-AndroidSDKToolsTable {
- param (
- [Parameter(Mandatory)]
- [object] $packageInfo
- )
-
- return $packageInfo | ForEach-Object {
- $packageInfoParts = Split-TableRowByColumns $_
- $packageName = $packageInfoParts[0]
- $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1]
- return Build-AndroidTableObject -PackageName $packageName -Description $packageDescription
+
+function Build-AndroidTable {
+ Write-Host "Build-AndroidTable"
+ $packageInfo = Get-AndroidInstalledPackages
+ return @(
+ @{
+ "Package" = "Android SDK Tools"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android SDK Tools"
+ },
+ @{
+ "Package" = "Android SDK Platforms"
+ "Version" = Get-AndroidPlatformVersions -PackageInfo $packageInfo
+ },
+ @{
+ "Package" = "Android SDK Build-tools"
+ "Version" = Get-AndroidBuildToolVersions -PackageInfo $packageInfo
+ },
+ @{
+ "Package" = "Android SDK Platform-Tools"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android SDK Platform-Tools"
+ },
+ @{
+ "Package" = "Google APIs"
+ "Version" = Get-AndroidGoogleAPIsVersions -PackageInfo $packageInfo
+ },
+ @{
+ "Package" = "Android Support Repository"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android Support Repository"
+ },
+ @{
+ "Package" = "Google Play services"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Google Play services"
+ },
+ @{
+ "Package" = "Google Repository"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Google Repository"
+ },
+ @{
+ "Package" = "SDK Patch Applier v4"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "SDK Patch Applier v4"
+ },
+ @{
+ "Package" = "CMake"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "cmake"
+ },
+ @{
+ "Package" = "NDK"
+ "Version" = Get-AndroidNDKVersions -PackageInfo $packageInfo
+ }
+ ) | Where-Object { $_.Version } | ForEach-Object {
+ [PSCustomObject] @{
+ "Package Name" = $_.Package
+ "Version" = $_.Version
+ }
}
}
-function Build-AndroidSDKPlatformTable {
+function Get-AndroidPackageVersions {
param (
[Parameter(Mandatory)]
- [object] $packageInfo
+ [object] $PackageInfo,
+ [Parameter(Mandatory)]
+ [object] $MatchedString
)
- return $packageInfo | ForEach-Object {
+ $versions = $packageInfo | Where-Object { $_ -Match $MatchedString } | ForEach-Object {
$packageInfoParts = Split-TableRowByColumns $_
- $packageName = $packageInfoParts[0].split(";")[1]
- $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1]
- return Build-AndroidTableObject -PackageName $packageName -Description $packageDescription
+ return $packageInfoParts[1]
}
+ return ($versions -Join "
")
}
-function Build-AndroidSDKBuildToolsTable {
+function Get-AndroidPlatformVersions {
param (
[Parameter(Mandatory)]
- [object] $packageInfo
+ [object] $PackageInfo
)
- return $packageInfo | ForEach-Object {
+ $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Platform " } | ForEach-Object {
$packageInfoParts = Split-TableRowByColumns $_
- $packageName = $packageInfoParts[0].replace(";", "-")
- $packageDescription = "Android SDK Build-Tools, Revision " + $packageInfoParts[1]
- return Build-AndroidTableObject -PackageName $packageName -Description $packageDescription
+ $revision = $packageInfoParts[1]
+ $version = $packageInfoParts[0].split(";")[1]
+ return "$version (rev $revision)"
}
+ [array]::Reverse($versions)
+ return ($versions -Join "
")
}
-function Build-AndroidNDKTable {
+function Get-AndroidBuildToolVersions {
+ param (
+ [Parameter(Mandatory)]
+ [object] $PackageInfo
+ )
+
+ $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Build-Tools" } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ return $packageInfoParts[1]
+ }
+ $groupVersions = @()
+ $versions | ForEach-Object {
+ $majorVersion = $_.Split(".")[0]
+ $groupVersions += $versions | Where-Object { $_.StartsWith($majorVersion) } | Join-String -Separator " "
+ }
+ return ($groupVersions | Sort-Object -Descending -Unique | Join-String -Separator "
")
+}
+
+function Get-AndroidGoogleAPIsVersions {
+ param (
+ [Parameter(Mandatory)]
+ [object] $PackageInfo
+ )
+
+ $versions = $packageInfo | Where-Object { $_ -Match "Google APIs" } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ return $packageInfoParts[0].split(";")[1]
+ }
+ return ($versions -Join "
")
+}
+
+function Get-AndroidNDKVersions {
param (
[Parameter(Mandatory)][AllowEmptyString()]
- [string[]] $installedPackages
+ [string[]] $packageInfo
)
- $ndkInfo = @()
+ $os = Get-OSVersion
+ $versions = @()
if ($os.IsLessThanBigSur) {
- $ndkInfo += [PSCustomObject] @{
- # Hardcode NDK 15 as a separate case since it is installed manually without sdk-manager (to none default location)
- "Version" = "15.2.4203891"
- "Path" = Join-Path (Get-AndroidSDKRoot) "android-ndk-r15c"
- }
-
+ # Hardcode NDK 15 as a separate case since it is installed manually without sdk-manager (to none default location)
+ $versions += "15.2.4203891"
+
$ndkFolderPath = Join-Path (Get-AndroidSDKRoot) "ndk"
- $ndkInfo += Get-ChildItem -Path $ndkFolderPath | ForEach-Object {
- return [PSCustomObject] @{
- "Version" = $_.Name
- "Path" = $_.FullName
- }
+ Get-ChildItem -Path $ndkFolderPath | ForEach-Object {
+ $versions += $_.Name
}
}
-
- $ndkBundleInfo = $installedPackages | Where-Object { $_ -Match "ndk-bundle" } | Select-Object -First 1
- $ndkBundleVersion = (Split-TableRowByColumns $ndkBundleInfo)[1]
- $ndkInfo += [PSCustomObject] @{
- "Version" = $ndkBundleVersion
- "Path" = Join-Path (Get-AndroidSDKRoot) "ndk-bundle"
+
+ $versions += $packageInfo | Where-Object { $_ -Match "ndk-bundle" } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ return $packageInfoParts[1]
}
- $ndkInfo | ForEach-Object {
- $_.Path = $_.Path.Replace($env:HOME, '$HOME')
- }
-
- return $ndkInfo
-}
-
-function Build-AndroidUtilsTable {
- param (
- [Parameter(Mandatory)][AllowEmptyString()]
- [string[]] $installedPackages
- )
-
- $utilsList = @("cmake", "Android Emulator")
- return $utilsList | ForEach-Object {
- $packageName = $_
- $packageInfo = $installedPackages | Where-Object { $_ -Match $packageName } | Select-Object -First 1
- $packageInfoParts = Split-TableRowByColumns $packageInfo
- return [PSCustomObject] @{
- "Package Name" = $packageName
- "Version" = $packageInfoParts[1]
- }
- }
-}
-
-function Build-AndroidExtraPackagesTable {
- param (
- [Parameter(Mandatory)][AllowEmptyString()]
- [string[]] $installedPackages
- )
-
- $extraPackages = @(
- "Android Support Repository",
- "Google Play services",
- "Google Repository",
- "Hardware_Accelerated_Execution_Manager"
- )
-
- return $extraPackages | ForEach-Object {
- $packageId = $_
- $packageInfo = $installedPackages | Where-Object { $_ -Like "*${packageId}*" } | Select-Object -First 1
- $packageInfoParts = Split-TableRowByColumns $packageInfo
- return [PSCustomObject] @{
- "Package Name" = $packageInfoParts[2]
- "Version" = $packageInfoParts[1]
- }
- }
+ return ($versions -Join "
")
}
\ No newline at end of file
diff --git a/images/macos/software-report/SoftwareReport.Generator.ps1 b/images/macos/software-report/SoftwareReport.Generator.ps1
index 9a8ada4a4..87c944598 100644
--- a/images/macos/software-report/SoftwareReport.Generator.ps1
+++ b/images/macos/software-report/SoftwareReport.Generator.ps1
@@ -310,45 +310,7 @@ if (-not $os.IsBigSur) {
# Android section
$markdown += New-MDHeader "Android" -Level 3
-$androidInstalledPackages = Get-AndroidInstalledPackages
-
-$markdown += New-MDHeader "Android SDK Tools" -Level 4
-$androidSDKTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Tools" }
-$markdown += Build-AndroidSDKToolsTable $androidSDKTools | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android SDK Platform-Tools" -Level 4
-$androidSDKPlatformTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Platform-Tools" }
-$markdown += Build-AndroidSDKToolsTable $androidSDKPlatformTools | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android SDK Platforms" -Level 4
-$androidSDKPlatforms = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Platform " }
-$markdown += Build-AndroidSDKPlatformTable $androidSDKPlatforms | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android SDK Build-Tools" -Level 4
-$androidSDKBuildTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Build-Tools" }
-$markdown += Build-AndroidSDKBuildtoolsTable $androidSDKBuildTools | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android NDKs" -Level 4
-$markdown += Build-AndroidNDKTable $androidInstalledPackages | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android Utils" -Level 4
-$markdown += Build-AndroidUtilsTable $androidInstalledPackages | New-MDTable
-$markdown += New-MDNewLine
-
-$androidGoogleAPIsTable = $androidInstalledPackages | Where-Object { $_ -Match "Google APIs" }
-if ($androidGoogleAPIsTable.Count -gt 0) {
- $markdown += New-MDHeader "Android Google APIs" -Level 4
- $markdown += Build-AndroidSDKPlatformTable $androidGoogleAPIsTable | New-MDTable
- $markdown += New-MDNewLine
-}
-
-$markdown += New-MDHeader "Extra Packages" -Level 4
-$markdown += Build-AndroidExtraPackagesTable $androidInstalledPackages | New-MDTable
+$markdown += Build-AndroidTable | New-MDTable
$markdown += New-MDNewLine
#