Skip to content

Commit

Permalink
fix: Added a fallback for arm cpus
Browse files Browse the repository at this point in the history
  • Loading branch information
pictos authored and jeromelaban committed Mar 10, 2023
1 parent fbb2725 commit 7d21ac9
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions UnoCheck/Checkups/AndroidEmulatorCheckup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ namespace DotNetCheck.Checkups
{
public class AndroidEmulatorCheckup : Checkup
{
const string armArch = "arm64-v8a";
public override IEnumerable<CheckupDependency> DeclareDependencies(IEnumerable<string> checkupIds)
=> new [] { new CheckupDependency("androidsdk") };

Expand All @@ -34,8 +35,8 @@ public override bool ShouldExamine(SharedState history)

public override Task<DiagnosticResult> Examine(SharedState history)
{
if(history.GetEnvironmentVariable("ANDROID_EMULATOR_SKIP") == "true")
{
if (history.GetEnvironmentVariable("ANDROID_EMULATOR_SKIP") == "true")
{
return Task.FromResult(
new DiagnosticResult(Status.Warning, this, $"Installation skipped for https://github.com/unoplatform/uno.check/issues/48"));
}
Expand Down Expand Up @@ -114,8 +115,20 @@ public override Task<DiagnosticResult> Examine(SharedState history)

var installedPackages = sdkInstance.Components.AllInstalled(true);

var sdkPackage = installedPackages.FirstOrDefault(p => p.Path.Equals(me.SdkId, StringComparison.OrdinalIgnoreCase));
var sdkPackage = installedPackages.FirstOrDefault(p =>
{
// This will be false if the proccess runs on Rosetta emulation
// and will install the wrong emulator (x86_64)
// https://github.com/dotnet/runtime/issues/42130
return Util.IsArm64

// The Path will be something like:
// system-images;android-33;google_apis;arm64-v8a (for arm)
// system-images;android-31;google_apis;x86_64 (for x86 or x64)

? p.Path.Contains(armArch, StringComparison.OrdinalIgnoreCase)
: p.Path.Equals(me.SdkId, StringComparison.OrdinalIgnoreCase);
});
if (sdkPackage == null && (me.AlternateSdkIds?.Any() ?? false))
sdkPackage = installedPackages.FirstOrDefault(p => me.AlternateSdkIds.Any(a => a.Equals(p.Path, StringComparison.OrdinalIgnoreCase)));

Expand Down

0 comments on commit 7d21ac9

Please sign in to comment.