diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1
index cc9fbb15d..7e799e8ba 100644
--- a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1
+++ b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1
@@ -1,3 +1,10 @@
+function Split-TableRowByColumns {
+ param(
+ [string] $Row
+ )
+ return $Row.Split("|") | ForEach-Object { $_.trim() }
+}
+
function Get-AndroidComponentLocation {
param(
[string] $ComponentName
@@ -6,22 +13,12 @@ function Get-AndroidComponentLocation {
return "Location $path"
}
-function Split-AndroidSDKOutputRow {
+function Get-AndroidSDKRoot {
param(
- [string] $Row
+ [string] $ComponentName
)
- return $Row.Split("|").Trim()
-}
-
-function Create-AndroidTableObject {
- param(
- [string] $PackageName,
- [string] $Description
- )
- return [PSCustomObject] @{
- "Package Name" = $PackageName
- "Description" = $Description
- }
+ $path = Join-Path $env:ANDROID_HOME $ComponentName
+ return "Location $path"
}
function Get-AndroidSDKManagerPath {
@@ -42,68 +39,123 @@ function Get-AndroidInstalledPackages {
return $androidInstalledPackages
}
-function Build-AndroidSDKToolsTable {
- param (
- [Parameter(Mandatory)]
- [object] $packageInfo
- )
- return $packageInfo | ForEach-Object {
- $packageInfoParts = Split-AndroidSDKOutputRow $_
- $packageName = $packageInfoParts[0]
- $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1]
- Create-AndroidTableObject -PackageName $packageName -Description $packageDescription
- }
-}
-
-function Build-AndroidSDKPlatformTable {
- param (
- [Parameter(Mandatory)]
- [object] $packageInfo
- )
-
- return $packageInfo | ForEach-Object {
- $packageInfoParts = Split-AndroidSDKOutputRow $_
- $packageName = $packageInfoParts[0].split(";")[1]
- $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1]
- return Create-AndroidTableObject -PackageName $packageName -Description $packageDescription
- }
-}
-
-function Build-AndroidSDKBuildToolsTable {
- param (
- [Parameter(Mandatory)]
- [object] $packageInfo
- )
-
- return $packageInfo | ForEach-Object {
- $packageInfoParts = Split-AndroidSDKOutputRow $_
- $packageName = $packageInfoParts[0].replace(";", "-")
- $packageDescription = "Android SDK Build-Tools, Revision " + $packageInfoParts[1]
- return Create-AndroidTableObject -PackageName $packageName -Description $packageDescription
- }
-}
-
-function Build-AndroidExtraPackagesTable {
- param (
- [Parameter(Mandatory)][AllowEmptyString()]
- [string[]] $installedPackages
- )
-
- $extraPackages = @(
- "Android Support Repository",
- "Google Play services",
- "Google Repository",
- "ndk-bundle"
- )
-
- return $extraPackages | ForEach-Object {
- $packageId = $_
- $packageInfo = $installedPackages | Where-Object { $_ -Like "*${packageId}*" } | Select-Object -First 1
- $packageInfoParts = Split-AndroidSDKOutputRow $packageInfo
- return [PSCustomObject] @{
- "Package Name" = $packageInfoParts[2]
- "Version" = $packageInfoParts[1]
+function 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
+ "Location" = Get-AndroidComponentLocation -ComponentName "platforms"
+ },
+ @{
+ "Package" = "Android SDK Build-tools"
+ "Version" = Get-AndroidBuildToolVersions -PackageInfo $packageInfo
+ "Location" = Get-AndroidComponentLocation -ComponentName "build-tools"
+ },
+ @{
+ "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-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "ndk-bundle"
+ }
+ ) | Where-Object { $_.Version } | ForEach-Object {
+ [PSCustomObject] @{
+ "Package Name" = $_.Package
+ "Version" = $_.Version
+ "Location" = $_.Location
}
}
+}
+
+function Get-AndroidPackageVersions {
+ param (
+ [Parameter(Mandatory)]
+ [object] $PackageInfo,
+ [Parameter(Mandatory)]
+ [object] $MatchedString
+ )
+
+ $versions = $packageInfo | Where-Object { $_ -Match $MatchedString } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ return $packageInfoParts[1]
+ }
+ return ($versions -Join "
")
+}
+
+function Get-AndroidPlatformVersions {
+ param (
+ [Parameter(Mandatory)]
+ [object] $PackageInfo
+ )
+
+ $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Platform " } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ $revision = $packageInfoParts[1]
+ $version = $packageInfoParts[0].split(";")[1]
+ return "$version, (rev $revision)"
+ }
+ [array]::Reverse($versions)
+ return ($versions -Join "
")
+}
+
+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 "
")
}
\ No newline at end of file
diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
index 5ff886c77..c93e5b8a2 100644
--- a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
+++ b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
@@ -227,32 +227,8 @@ $markdown += Get-PowerShellModules | New-MDTable
$markdown += New-MDNewLine
# Android section
-$androidInstalledPackages = Get-AndroidInstalledPackages
-
-$markdown += New-MDHeader "Android SDK Tools" -Level 3
-$androidSDKTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Tools" -or $_ -Match "Android SDK Platform-Tools" }
-$markdown += Build-AndroidSDKToolsTable $androidSDKTools | New-MDTable
+$markdown += New-MDHeader "Android" -Level 3
+$markdown += Build-AndroidTable | New-MDTable
$markdown += New-MDNewLine
-$markdown += New-MDHeader "Android SDK Platforms" -Level 3
-$androidSDKPlatforms = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Platform " }
-$markdown += New-MDInlineCode -Text (Get-AndroidComponentLocation -ComponentName "platforms")
-$markdown += New-MDNewLine
-$markdown += Build-AndroidSDKPlatformTable $androidSDKPlatforms | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android SDK Build-Tools" -Level 3
-$androidSDKBuildTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Build-Tools" }
-$markdown += New-MDInlineCode -Text (Get-AndroidComponentLocation -ComponentName "build-tools")
-$markdown += New-MDNewLine
-$markdown += Build-AndroidSDKBuildtoolsTable $androidSDKBuildTools | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android Extra Packages" -Level 3
-$markdown += Build-AndroidExtraPackagesTable $androidInstalledPackages | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Cached Docker images" -Level 3
-$markdown += New-MDList -Style Unordered -Lines @(Get-CachedDockerImages)
-
$markdown | Out-File -FilePath "C:\InstalledSoftware.md"
\ No newline at end of file