diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateNativeAotEnvironmentAssemblerSources.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateNativeAotEnvironmentAssemblerSources.cs index a23748cc237..20fd07fa424 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateNativeAotEnvironmentAssemblerSources.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateNativeAotEnvironmentAssemblerSources.cs @@ -1,3 +1,5 @@ +#nullable enable + using Microsoft.Android.Build.Tasks; using Microsoft.Build.Framework; using Xamarin.Android.Tools; @@ -29,6 +31,10 @@ public override bool RunTask () // There can be only one, since we run in the inner build ITaskItem? outputFile = GenerateNativeAotLibraryLoadAssemblerSources.FindOutputFile (OutputSources, abi: abi, rid: RID); + if (outputFile == null) { + Log.LogError ($"Could not find output file for ABI '{abi}' and RID '{RID}'"); + return false; + } Log.LogDebugMessage ($"Environment variables file to generate: {outputFile.ItemSpec}"); string environmentLlFilePath = outputFile.ItemSpec; @@ -37,9 +43,9 @@ public override bool RunTask () using var environmentWriter = MemoryStreamPool.Shared.CreateStreamWriter (); bool fileFullyWritten = false; try { - generator.Generate (environmentModule, targetArch, environmentWriter, environmentLlFilePath!); + generator.Generate (environmentModule, targetArch, environmentWriter, environmentLlFilePath); environmentWriter.Flush (); - Files.CopyIfStreamChanged (environmentWriter.BaseStream, environmentLlFilePath!); + Files.CopyIfStreamChanged (environmentWriter.BaseStream, environmentLlFilePath); fileFullyWritten = true; } finally { // Log partial contents for debugging if generation failed