From e139c6d581122cdb7519f7c58f7161b921916f0e Mon Sep 17 00:00:00 2001
From: Mikhail Timofeev <48208649+miketimofeev@users.noreply.github.com>
Date: Wed, 14 Jul 2021 10:02:12 +0300
Subject: [PATCH] [macOS] Skip Intel HAXM installation on BigSur (#3698)
* Remove HAXM installation as it doesn't work on Big Sur
* Change test to validate successful kext load
* Add HAXM to software report
---
images/macos/provision/core/android-toolsets.sh | 11 +++++++----
.../macos/software-report/SoftwareReport.Android.psm1 | 8 ++++++++
.../software-report/SoftwareReport.Generator.ps1 | 6 +++++-
images/macos/tests/Android.Tests.ps1 | 5 ++---
4 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/images/macos/provision/core/android-toolsets.sh b/images/macos/provision/core/android-toolsets.sh
index ac9c6d03..6efe09c7 100755
--- a/images/macos/provision/core/android-toolsets.sh
+++ b/images/macos/provision/core/android-toolsets.sh
@@ -85,10 +85,13 @@ do
done
# Intel x86 Emulator Accelerator (HAXM installer)
-# see Issue 31164 notes
-# Command needs to be run under sudo.
-chmod +x $ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager/silent_install.sh
-sudo $ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager/silent_install.sh
+# The Android Emulator uses the built-in Hypervisor.Framework by default, and falls back to using Intel HAXM if Hypervisor.Framework fails to initialize
+# https://developer.android.com/studio/run/emulator-acceleration#vm-mac
+# The installation doesn't work properly on macOS Big Sur, /dev/HAX is not created
+if is_Less_BigSur; then
+ chmod +x $ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager/silent_install.sh
+ sudo $ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager/silent_install.sh
+fi
for addon_name in "${ANDROID_ADDON_LIST[@]}"
do
diff --git a/images/macos/software-report/SoftwareReport.Android.psm1 b/images/macos/software-report/SoftwareReport.Android.psm1
index 9be1d78a..7617e733 100644
--- a/images/macos/software-report/SoftwareReport.Android.psm1
+++ b/images/macos/software-report/SoftwareReport.Android.psm1
@@ -187,3 +187,11 @@ function Get-AndroidNDKVersions {
return ($versions -Join "
")
}
+
+function Get-IntelHaxmVersion {
+ kextstat | Where-Object { $_ -match "com.intel.kext.intelhaxm \((?(\d+\.){1,}\d+)\)" } | Out-Null
+ return [PSCustomObject] @{
+ "Package Name" = "Intel HAXM"
+ "Version" = $Matches.Version
+ }
+}
\ 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 13252fb3..8321bd85 100644
--- a/images/macos/software-report/SoftwareReport.Generator.ps1
+++ b/images/macos/software-report/SoftwareReport.Generator.ps1
@@ -276,7 +276,11 @@ $markdown += New-MDNewLine
# Android section
$markdown += New-MDHeader "Android" -Level 3
-$markdown += Build-AndroidTable | New-MDTable
+$androidTable = Build-AndroidTable
+if ($os.IsLessThanBigSur) {
+ $androidTable += Get-IntelHaxmVersion
+}
+$markdown += $androidTable | New-MDTable
$markdown += New-MDNewLine
$markdown += New-MDHeader "Environment variables" -Level 4
$markdown += Build-AndroidEnvironmentTable | New-MDTable
diff --git a/images/macos/tests/Android.Tests.ps1 b/images/macos/tests/Android.Tests.ps1
index 02fe6543..303a271f 100644
--- a/images/macos/tests/Android.Tests.ps1
+++ b/images/macos/tests/Android.Tests.ps1
@@ -83,8 +83,7 @@ Describe "Android" {
}
}
- It "HAXM is installed" {
- $haxmPath = Join-Path $ANDROID_SDK_DIR "extras" "intel" "Hardware_Accelerated_Execution_Manager" "silent_install.sh"
- "$haxmPath -v" | Should -ReturnZeroExitCode
+ It "HAXM is installed" -Skip:($os.IsBigSur) {
+ "kextstat | grep 'com.intel.kext.intelhaxm'" | Should -ReturnZeroExitCode
}
}
\ No newline at end of file