diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Compile.cs b/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Compile.cs index 1414922aab6..48e60f21e1d 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Compile.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Compile.cs @@ -1,4 +1,6 @@ // Copyright (C) 2011 Xamarin, Inc. All rights reserved. +#nullable enable + using System; using System.Diagnostics; using System.IO; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2LinkAssetPack.cs b/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2LinkAssetPack.cs index f4d12987062..6ced257a6e7 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2LinkAssetPack.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2LinkAssetPack.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.Diagnostics; using System.IO; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AdjustJavacVersionArguments.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AdjustJavacVersionArguments.cs index 4f939e7ec56..c05c93b74d1 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AdjustJavacVersionArguments.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AdjustJavacVersionArguments.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using Microsoft.Build.Utilities; using Microsoft.Build.Framework; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidAdb.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidAdb.cs index 8678ffc6c99..70f1c3eca50 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidAdb.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidAdb.cs @@ -1,3 +1,5 @@ +#nullable enable + using Microsoft.Android.Build.Tasks; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -34,7 +36,7 @@ protected override string GenerateFullPathToTool () protected override string GenerateCommandLineCommands () { var sb = new StringBuilder (); - if (!string.IsNullOrEmpty (AdbTarget)) + if (!AdbTarget.IsNullOrEmpty ()) sb.Append ($" {AdbTarget} "); sb.AppendFormat ("{0} {1}", Command, Arguments); return sb.ToString (); diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidApkSigner.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidApkSigner.cs index 60110c478be..6c3000d4986 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidApkSigner.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidApkSigner.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable enable using System; using System.IO; @@ -14,21 +14,21 @@ public class AndroidApkSigner : JavaToolTask public override string TaskPrefix => "AAS"; [Required] - public string ApkSignerJar { get; set; } + public string ApkSignerJar { get; set; } = ""; [Required] - public string ApkToSign { get; set; } + public string ApkToSign { get; set; } = ""; [Required] - public ITaskItem ManifestFile { get; set; } + public ITaskItem ManifestFile { get; set; } = null!; - public string KeyStore { get; set; } + public string? KeyStore { get; set; } - public string KeyAlias { get; set; } + public string? KeyAlias { get; set; } - public string PlatformKey { get; set; } + public string? PlatformKey { get; set; } - public string PlatformCert { get; set; } + public string? PlatformCert { get; set; } /// /// The Password for the Key. @@ -39,7 +39,7 @@ public class AndroidApkSigner : JavaToolTask /// env: /// file: /// - public string KeyPass { get; set; } = string.Empty; + public string KeyPass { get; set; } = ""; /// /// The Password for the Keystore. @@ -50,15 +50,15 @@ public class AndroidApkSigner : JavaToolTask /// env: /// file: /// - public string StorePass { get; set; } = string.Empty; + public string StorePass { get; set; } = ""; - public string AdditionalArguments { get; set; } + public string? AdditionalArguments { get; set; } void AddStorePass (CommandLineBuilder cmd, string cmdLineSwitch, string value) { - string pass = value.Replace ("env:", string.Empty) - .Replace ("file:", string.Empty) - .Replace ("pass:", string.Empty); + string pass = value.Replace ("env:", "") + .Replace ("file:", "") + .Replace ("pass:", ""); if (value.StartsWith ("env:", StringComparison.Ordinal)) { cmd.AppendSwitchIfNotNull ($"{cmdLineSwitch} env:", pass); } @@ -74,20 +74,21 @@ protected override string GenerateCommandLineCommands () var cmd = new CommandLineBuilder (); var manifest = AndroidAppManifest.Load (ManifestFile.ItemSpec, MonoAndroidHelper.SupportedVersions); - int minSdk = MonoAndroidHelper.SupportedVersions.MinStableVersion.ApiLevel; - int maxSdk = MonoAndroidHelper.SupportedVersions.MaxStableVersion.ApiLevel; + int? minSdk = MonoAndroidHelper.SupportedVersions.MinStableVersion?.ApiLevel; + int? maxSdk = MonoAndroidHelper.SupportedVersions.MaxStableVersion?.ApiLevel; if (manifest.MinSdkVersion.HasValue) minSdk = manifest.MinSdkVersion.Value; if (manifest.TargetSdkVersion.HasValue) maxSdk = manifest.TargetSdkVersion.Value; - minSdk = Math.Min (minSdk, maxSdk); + if (minSdk.HasValue && maxSdk.HasValue) + minSdk = Math.Min (minSdk.Value, maxSdk.Value); cmd.AppendSwitchIfNotNull ("-jar ", ApkSignerJar); cmd.AppendSwitch ("sign"); - if (!string.IsNullOrEmpty (PlatformKey) && !string.IsNullOrEmpty (PlatformCert)) { + if (!PlatformKey.IsNullOrEmpty () && !PlatformCert.IsNullOrEmpty ()) { cmd.AppendSwitchIfNotNull ("--key ", PlatformKey); cmd.AppendSwitchIfNotNull ("--cert ", PlatformCert); } else { @@ -97,11 +98,15 @@ protected override string GenerateCommandLineCommands () AddStorePass (cmd, "--key-pass", KeyPass); } - cmd.AppendSwitchIfNotNull ("--min-sdk-version ", minSdk.ToString ()); - cmd.AppendSwitchIfNotNull ("--max-sdk-version ", maxSdk.ToString ()); + if (minSdk is not null) { + cmd.AppendSwitchIfNotNull ("--min-sdk-version ", minSdk.ToString ()); + } + if (maxSdk is not null) { + cmd.AppendSwitchIfNotNull ("--max-sdk-version ", maxSdk.ToString ()); + } - if (!string.IsNullOrEmpty (AdditionalArguments)) + if (!AdditionalArguments.IsNullOrEmpty ()) cmd.AppendSwitch (AdditionalArguments); cmd.AppendSwitchIfNotNull (" ", ApkToSign); @@ -129,7 +134,7 @@ protected override string ToolName { protected override bool ValidateParameters () { - if (!string.IsNullOrEmpty (PlatformKey) && !string.IsNullOrEmpty (PlatformCert)) { + if (!PlatformKey.IsNullOrEmpty () && !PlatformCert.IsNullOrEmpty ()) { if (!File.Exists (PlatformKey)) { Log.LogCodedError ("XA4310", Properties.Resources.XA4310, "$(AndroidSigningPlatformKey)", PlatformKey); return false; @@ -139,15 +144,15 @@ protected override bool ValidateParameters () return false; } } else { - if (!string.IsNullOrEmpty (KeyStore) && !File.Exists (KeyStore)) { + if (!KeyStore.IsNullOrEmpty () && !File.Exists (KeyStore)) { Log.LogCodedError ("XA4310", Properties.Resources.XA4310, "$(AndroidSigningKeyStore)", KeyStore); return false; } - if (string.IsNullOrEmpty (KeyPass)) { + if (KeyPass.IsNullOrEmpty ()) { Log.LogCodedError ("XA4314", Properties.Resources.XA4314, "$(AndroidSigningKeyPass)"); return false; } - if (string.IsNullOrEmpty (StorePass)) { + if (StorePass.IsNullOrEmpty ()) { Log.LogCodedError ("XA4314", Properties.Resources.XA4314, "$(AndroidSigningStorePass)"); return false; } diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidComputeResPaths.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidComputeResPaths.cs index 0c5ceb2ff3d..03002fac517 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidComputeResPaths.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidComputeResPaths.cs @@ -24,6 +24,8 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#nullable enable + using System; using System.Text; using Microsoft.Build.Utilities; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidCreateDebugKey.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidCreateDebugKey.cs index d8d46985dbd..92ca67a054d 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidCreateDebugKey.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidCreateDebugKey.cs @@ -1,4 +1,6 @@ -using System; +#nullable enable + +using System; using System.IO; using System.Resources; using Microsoft.Build.Framework; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidDotnetToolTask.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidDotnetToolTask.cs index afdf4a5b88d..f7861c5bc6e 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidDotnetToolTask.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidDotnetToolTask.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.IO; using System.Runtime.InteropServices; @@ -106,13 +108,13 @@ string FindDotnet () string FindMono () { string mono = BuildEngine4.GetRegisteredTaskObjectAssemblyLocal (MonoKey, Lifetime); - if (!string.IsNullOrEmpty (mono)) { + if (!mono.IsNullOrEmpty ()) { Log.LogDebugMessage ($"Found cached mono via {nameof (BuildEngine4.RegisterTaskObject)}"); return mono; } var env = Environment.GetEnvironmentVariable ("PATH"); - if (string.IsNullOrEmpty (env)) { + if (!env.IsNullOrEmpty ()) { foreach (var path in env.Split (Path.PathSeparator)) { if (File.Exists (mono = Path.Combine (path, "mono"))) { Log.LogDebugMessage ("Found mono in $PATH"); @@ -138,7 +140,7 @@ string FindMono () protected virtual CommandLineBuilder GetCommandLineBuilder () { var cmd = new CommandLineBuilder (); - if (!string.IsNullOrEmpty (AssemblyPath)) { + if (!AssemblyPath.IsNullOrEmpty ()) { cmd.AppendFileNameIfNotNull (AssemblyPath); } return cmd; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidError.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidError.cs index 1bb902fd4d4..6b27c8fdfca 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidError.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidError.cs @@ -1,3 +1,5 @@ +#nullable enable + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.Android.Build.Tasks; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidMessage.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidMessage.cs index 663876611f8..4364e2b8e97 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidMessage.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidMessage.cs @@ -1,3 +1,5 @@ +#nullable enable + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.Android.Build.Tasks; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidSignPackage.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidSignPackage.cs index 3256f4bab93..949c26994df 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidSignPackage.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidSignPackage.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.IO; using Microsoft.Build.Framework; @@ -152,7 +154,7 @@ protected override string ToolName protected override bool ValidateParameters () { - if (!string.IsNullOrEmpty (KeyStore) && !File.Exists (KeyStore)) { + if (!KeyStore.IsNullOrEmpty () && !File.Exists (KeyStore)) { Log.LogCodedError ("XA4310", Properties.Resources.XA4310, "$(AndroidSigningKeyStore)", KeyStore); return false; } diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidWarning.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidWarning.cs index cfe946e81dc..6318ed08e18 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidWarning.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidWarning.cs @@ -1,3 +1,5 @@ +#nullable enable + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Microsoft.Android.Build.Tasks; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidZipAlign.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidZipAlign.cs index 88e27626c37..7a004263f85 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AndroidZipAlign.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AndroidZipAlign.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.IO; using Microsoft.Build.Framework; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AppendCustomMetadataToItemGroup.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AppendCustomMetadataToItemGroup.cs index a62287637a9..af8c2fc2621 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AppendCustomMetadataToItemGroup.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AppendCustomMetadataToItemGroup.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.Collections.Generic; using System.IO; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs b/src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs index 4086bde3e99..16d44eab315 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.Collections.Generic; using System.IO; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CalculateProjectDependencies.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CalculateProjectDependencies.cs index 5e1a90b050c..2eb484bb40f 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CalculateProjectDependencies.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CalculateProjectDependencies.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable enable using System; using System.IO; @@ -16,38 +16,38 @@ public class CalculateProjectDependencies : AndroidTask const int DefaultMinSDKVersion = 11; - public string CommandLineToolsVersion { get; set; } + public string? CommandLineToolsVersion { get; set; } - public string AndroidApiLevel { get; set; } + public string? AndroidApiLevel { get; set; } [Required] - public string TargetFrameworkVersion { get; set; } + public string TargetFrameworkVersion { get; set; } = ""; [Required] - public ITaskItem ManifestFile { get; set; } + public ITaskItem ManifestFile { get; set; } = null!; [Required] - public string BuildToolsVersion { get; set; } + public string BuildToolsVersion { get; set; } = ""; - public string PlatformToolsVersion { get; set; } + public string? PlatformToolsVersion { get; set; } - public string NdkVersion { get; set; } + public string? NdkVersion { get; set; } public bool NdkRequired { get; set; } - public string JdkVersion { get; set; } + public string? JdkVersion { get; set; } public bool GetJavaDependencies { get; set; } = false; [Output] - public ITaskItem [] Dependencies { get; set; } + public ITaskItem []? Dependencies { get; set; } [Output] - public ITaskItem[] JavaDependencies { get; set; } + public ITaskItem[]? JavaDependencies { get; set; } ITaskItem CreateAndroidDependency (string include, string version) { - if (string.IsNullOrEmpty (version)) + if (version.IsNullOrEmpty ()) return new TaskItem (include); return new TaskItem (include, new Dictionary { @@ -59,7 +59,7 @@ public override bool RunTask () { var dependencies = new List (); var javaDependencies = new List (); - var targetApiLevel = string.IsNullOrEmpty (AndroidApiLevel) ? + var targetApiLevel = AndroidApiLevel.IsNullOrEmpty () ? MonoAndroidHelper.SupportedVersions.GetApiLevelFromFrameworkVersion (TargetFrameworkVersion) : MonoAndroidHelper.SupportedVersions.GetApiLevelFromId (AndroidApiLevel); var manifestApiLevel = DefaultMinSDKVersion; @@ -67,19 +67,19 @@ public override bool RunTask () var manifest = AndroidAppManifest.Load (ManifestFile.ItemSpec, MonoAndroidHelper.SupportedVersions); manifestApiLevel = manifest.TargetSdkVersion ?? manifest.MinSdkVersion ?? DefaultMinSDKVersion; } - var sdkVersion = Math.Max (targetApiLevel.Value, manifestApiLevel); + var sdkVersion = Math.Max (targetApiLevel ?? DefaultMinSDKVersion, manifestApiLevel); dependencies.Add (CreateAndroidDependency ($"platforms/android-{sdkVersion}", $"")); dependencies.Add (CreateAndroidDependency ($"build-tools/{BuildToolsVersion}", BuildToolsVersion)); - if (!string.IsNullOrEmpty (PlatformToolsVersion)) { + if (!PlatformToolsVersion.IsNullOrEmpty ()) { dependencies.Add (CreateAndroidDependency ("platform-tools", PlatformToolsVersion)); } - if (!string.IsNullOrEmpty (CommandLineToolsVersion)) { + if (!CommandLineToolsVersion.IsNullOrEmpty ()) { dependencies.Add (CreateAndroidDependency ($"cmdline-tools/{CommandLineToolsVersion}", CommandLineToolsVersion)); } - if (!string.IsNullOrEmpty (NdkVersion) && NdkRequired) { + if (!NdkVersion.IsNullOrEmpty () && NdkRequired) { dependencies.Add (CreateAndroidDependency ("ndk-bundle", NdkVersion)); } - if (!string.IsNullOrEmpty (JdkVersion) && GetJavaDependencies) { + if (!JdkVersion.IsNullOrEmpty () && GetJavaDependencies) { javaDependencies.Add (CreateAndroidDependency ("jdk", JdkVersion)); } Dependencies = dependencies.ToArray (); diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CheckClientHandlerType.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CheckClientHandlerType.cs index 88c02bf6c1e..0f145294382 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CheckClientHandlerType.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CheckClientHandlerType.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CheckDuplicateJavaLibraries.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CheckDuplicateJavaLibraries.cs index dbfdf1762db..7390d256abe 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CheckDuplicateJavaLibraries.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CheckDuplicateJavaLibraries.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.IO; using System.Linq; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CheckForInvalidDesignerConfig.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CheckForInvalidDesignerConfig.cs index 8168ea77c61..9f0b63874f8 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CheckForInvalidDesignerConfig.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CheckForInvalidDesignerConfig.cs @@ -1,3 +1,5 @@ +#nullable enable + using Microsoft.Android.Build.Tasks; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CheckProjectItems.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CheckProjectItems.cs index 09fed25ca38..7e11ce062f0 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CheckProjectItems.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CheckProjectItems.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ClassParse.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ClassParse.cs index a8a54de00f9..ece680ed7a6 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/ClassParse.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ClassParse.cs @@ -1,5 +1,7 @@ // Copyright (C) 2012 Xamarin, Inc. All rights reserved. +#nullable enable + using System.IO; using Microsoft.Android.Build.Tasks; using Microsoft.Build.Framework; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs index facd6437405..a9b50ac09ce 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CollectDalvikFilesForArchive.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CollectDalvikFilesForArchive.cs index 94c920398e7..3ad49ddc407 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CollectDalvikFilesForArchive.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CollectDalvikFilesForArchive.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.IO; using Microsoft.Android.Build.Tasks; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ComputeHash.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ComputeHash.cs index a23faf735ab..578fc6bbd91 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/ComputeHash.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ComputeHash.cs @@ -1,3 +1,5 @@ +#nullable enable + using System.Collections.Generic; using Microsoft.Build.Utilities; using Microsoft.Build.Framework; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ConvertCustomView.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ConvertCustomView.cs index 522732eba9d..9a6aa629e84 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/ConvertCustomView.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ConvertCustomView.cs @@ -1,6 +1,6 @@ // Copyright (C) 2018 Microsoft, Inc. All rights reserved. -#nullable disable +#nullable enable using System; using System.Diagnostics; @@ -18,17 +18,17 @@ public class ConvertCustomView : AndroidTask { public override string TaskPrefix => "CCV"; [Required] - public string CustomViewMapFile { get; set; } + public string CustomViewMapFile { get; set; } = ""; [Required] - public string AcwMapFile { get; set; } + public string AcwMapFile { get; set; } = ""; - public ITaskItem [] ResourceDirectories { get; set; } + public ITaskItem []? ResourceDirectories { get; set; } [Output] - public ITaskItem [] Processed { get; set; } + public ITaskItem []? Processed { get; set; } - Dictionary _resource_name_case_map; + Dictionary? _resource_name_case_map; Dictionary resource_name_case_map => _resource_name_case_map ??= MonoAndroidHelper.LoadResourceCaseMap (BuildEngine4, ProjectSpecificTaskObjectKey); public override bool RunTask () @@ -53,7 +53,7 @@ public override bool RunTask () bool update = false; foreach (var elem in AndroidResource.GetElements (e).Prepend (e)) { update |= TryFixCustomView (elem, acw_map, (level, message) => { - ITaskItem resdir = ResourceDirectories?.FirstOrDefault (x => file.StartsWith (x.ItemSpec, StringComparison.OrdinalIgnoreCase)) ?? null; + ITaskItem? resdir = ResourceDirectories?.FirstOrDefault (x => file.StartsWith (x.ItemSpec, StringComparison.OrdinalIgnoreCase)); switch (level) { case TraceLevel.Error: Log.FixupResourceFilenameAndLogCodedError ("XA1002", message, file, resdir?.ItemSpec, resource_name_case_map); @@ -84,11 +84,11 @@ public override bool RunTask () } var output = new Dictionary (processed.Count); foreach (var file in processed) { - ITaskItem resdir = ResourceDirectories?.FirstOrDefault (x => file.StartsWith (x.ItemSpec, StringComparison.OrdinalIgnoreCase)) ?? null; - var hash = resdir?.GetMetadata ("Hash") ?? null; - var stamp = resdir?.GetMetadata ("StampFile") ?? null; - var filename = !string.IsNullOrEmpty (hash) ? hash : "compiled"; - var stampFile = !string.IsNullOrEmpty (stamp) ? stamp : $"{filename}.stamp"; + ITaskItem? resdir = ResourceDirectories?.FirstOrDefault (x => file.StartsWith (x.ItemSpec, StringComparison.OrdinalIgnoreCase)); + var hash = resdir?.GetMetadata ("Hash"); + var stamp = resdir?.GetMetadata ("StampFile"); + var filename = !hash.IsNullOrEmpty () ? hash : "compiled"; + var stampFile = !stamp.IsNullOrEmpty () ? stamp : $"{filename}.stamp"; Log.LogDebugMessage ($"{filename} {stampFile}"); output.Add (file, new TaskItem (Path.GetFullPath (file), new Dictionary { { "StampFile" , stampFile }, @@ -147,7 +147,7 @@ bool TryFixFragment (XAttribute attr, Dictionary acwMap) return false; } - bool TryFixCustomView (XElement elem, Dictionary acwMap, Action logMessage = null) + bool TryFixCustomView (XElement elem, Dictionary acwMap, Action? logMessage = null) { // Looks for any // Copyright (C) 2011 Xamarin, Inc. All rights reserved. +#nullable enable + using System.IO; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CreateAssemblyStore.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CreateAssemblyStore.cs index dc5dde54822..f68e99a5791 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CreateAssemblyStore.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CreateAssemblyStore.cs @@ -1,3 +1,5 @@ +#nullable enable + using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CreateTemporaryDirectory.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CreateTemporaryDirectory.cs index 26db43bc5c9..f9aa4f07e92 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CreateTemporaryDirectory.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CreateTemporaryDirectory.cs @@ -1,5 +1,7 @@ // Copyright (C) 2011 Xamarin, Inc. All rights reserved. +#nullable enable + using System; using System.IO; using Microsoft.Build.Framework; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/D8.cs b/src/Xamarin.Android.Build.Tasks/Tasks/D8.cs index 06207bd61b2..c7c15fcf065 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/D8.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/D8.cs @@ -1,3 +1,5 @@ +#nullable enable + using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using System.Collections.Generic; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ImportJavaDoc.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ImportJavaDoc.cs index e0d122a1724..0bf10af3280 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/ImportJavaDoc.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ImportJavaDoc.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable enable using System; using System.Collections.Generic; @@ -14,17 +14,17 @@ public class ImportJavaDoc : AndroidDotnetToolTask { public override string TaskPrefix => "IJD"; - public string [] JavaDocs { get; set; } + public string []? JavaDocs { get; set; } - public string [] References { get; set; } + public string []? References { get; set; } - public string [] Transforms { get; set; } + public string []? Transforms { get; set; } [Required] - public string TargetAssembly { get; set; } + public string TargetAssembly { get; set; } = ""; [Required] - public string OutputDocDirectory { get; set; } + public string OutputDocDirectory { get; set; } = ""; protected override string GenerateCommandLineCommands () { @@ -37,13 +37,17 @@ protected override string GenerateCommandLineCommands () // cmd.AppendSwitch (r); cmd.AppendSwitch ("-v=2"); cmd.AppendSwitchIfNotNull ("--out=", OutputDocDirectory); - foreach (var j in JavaDocs) - cmd.AppendSwitchIfNotNull ("--doc-dir=", Path.GetDirectoryName (j)); - foreach (var t in Transforms) { - if (t.EndsWith ("Metadata.xml", StringComparison.InvariantCultureIgnoreCase)) - cmd.AppendSwitchIfNotNull ("--metadata=", t); - else - cmd.AppendSwitchIfNotNull ("--enum-map=", t); + if (JavaDocs != null) { + foreach (var j in JavaDocs) + cmd.AppendSwitchIfNotNull ("--doc-dir=", Path.GetDirectoryName (j)); + } + if (Transforms != null) { + foreach (var t in Transforms) { + if (t.EndsWith ("Metadata.xml", StringComparison.InvariantCultureIgnoreCase)) + cmd.AppendSwitchIfNotNull ("--metadata=", t); + else + cmd.AppendSwitchIfNotNull ("--enum-map=", t); + } } return cmd.ToString (); } diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/JavaDoc.cs b/src/Xamarin.Android.Build.Tasks/Tasks/JavaDoc.cs index e776ede68cb..9d7b37002c9 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/JavaDoc.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/JavaDoc.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable enable using System; using System.Linq; @@ -18,15 +18,15 @@ public class JavaDoc : JavaToolTask { public override string TaskPrefix => "JDC"; - public string [] SourceDirectories { get; set; } + public string []? SourceDirectories { get; set; } - public string [] DestinationDirectories { get; set; } + public string []? DestinationDirectories { get; set; } - public string [] ReferenceJars { get; set; } + public string []? ReferenceJars { get; set; } - public string JavaPlatformJar { get; set; } + public string? JavaPlatformJar { get; set; } - public string [] ExtraArgs { get; set; } + public string []? ExtraArgs { get; set; } protected override string ToolName { get { return OS.IsWindows ? "javadoc.exe" : "javadoc"; } @@ -34,21 +34,25 @@ protected override string ToolName { public override bool RunTask () { - foreach (var dir in DestinationDirectories) - if (!Directory.Exists (dir)) - Directory.CreateDirectory (dir); + if (DestinationDirectories != null) { + foreach (var dir in DestinationDirectories) + if (!Directory.Exists (dir)) + Directory.CreateDirectory (dir); + } // Basically, javadoc will return non-zero return code with those expected errors. We have to ignore them. - foreach (var pair in SourceDirectories.Zip (DestinationDirectories, (src, dst) => new { Source = src, Destination = dst })) { - context_src = pair.Source; - context_dst = pair.Destination; - base.RunTask (); + if (SourceDirectories != null && DestinationDirectories != null) { + foreach (var pair in SourceDirectories.Zip (DestinationDirectories, (src, dst) => new { Source = src, Destination = dst })) { + context_src = pair.Source; + context_dst = pair.Destination; + base.RunTask (); + } } return true; } - string context_src; - string context_dst; + string? context_src; + string? context_dst; protected override string GenerateCommandLineCommands () { diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/JavaSourceUtils.cs b/src/Xamarin.Android.Build.Tasks/Tasks/JavaSourceUtils.cs index 8b3b2d380e4..4809a4bac60 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/JavaSourceUtils.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/JavaSourceUtils.cs @@ -1,6 +1,6 @@ // Copyright (C) 2012 Xamarin, Inc. All rights reserved. -#nullable disable +#nullable enable using System; using System.Linq; @@ -18,30 +18,30 @@ public class JavaSourceUtils : AndroidToolTask public override string TaskPrefix => "JSU"; [Required] - public string JavaSourceUtilsJar { get; set; } + public string JavaSourceUtilsJar { get; set; } = ""; [Required] - public string JavaSdkDirectory { get; set; } + public string JavaSdkDirectory { get; set; } = ""; [Required] - public ITaskItem[] InputFiles { get; set; } + public ITaskItem[] InputFiles { get; set; } = []; - public ITaskItem[] References { get; set; } + public ITaskItem[]? References { get; set; } - public ITaskItem[] BootClassPath { get; set; } + public ITaskItem[]? BootClassPath { get; set; } - public ITaskItem JavadocCopyrightFile { get; set; } - public string JavadocUrlPrefix { get; set; } - public string JavadocUrlStyle { get; set; } - public string JavadocDocRootUrl { get; set; } + public ITaskItem? JavadocCopyrightFile { get; set; } + public string? JavadocUrlPrefix { get; set; } + public string? JavadocUrlStyle { get; set; } + public string? JavadocDocRootUrl { get; set; } - public string JavaOptions { get; set; } + public string? JavaOptions { get; set; } - public string JavaMaximumHeapSize { get; set; } + public string? JavaMaximumHeapSize { get; set; } - public ITaskItem OutputJavadocXml { get; set; } + public ITaskItem? OutputJavadocXml { get; set; } - string responseFilePath; + string? responseFilePath; public override bool RunTask () { @@ -79,11 +79,11 @@ protected override string GenerateCommandLineCommands () // Add the JavaOptions if they are not null // These could be any of the additional options - if (!string.IsNullOrEmpty (JavaOptions)) { + if (!JavaOptions.IsNullOrEmpty ()) { cmd.AppendSwitch (JavaOptions); } - if (!string.IsNullOrEmpty (JavaMaximumHeapSize)) { + if (!JavaMaximumHeapSize.IsNullOrEmpty ()) { cmd.AppendSwitchIfNotNull("-Xmx", JavaMaximumHeapSize); } @@ -134,21 +134,23 @@ string CreateResponseFile () } } AppendArg (response, "--output-javadoc"); - AppendArg (response, OutputJavadocXml.ItemSpec); + if (OutputJavadocXml != null) { + AppendArg (response, OutputJavadocXml.ItemSpec); + } - if (!string.IsNullOrEmpty (JavadocCopyrightFile?.ItemSpec)) { + if (JavadocCopyrightFile?.ItemSpec != null && !JavadocCopyrightFile.ItemSpec.IsNullOrEmpty ()) { AppendArg (response, "--doc-copyright"); AppendArg (response, Path.GetFullPath (JavadocCopyrightFile.ItemSpec)); } - if (!string.IsNullOrEmpty (JavadocUrlPrefix)) { + if (!JavadocUrlPrefix.IsNullOrEmpty ()) { AppendArg (response, "--doc-url-prefix"); AppendArg (response, JavadocUrlPrefix); } - if (!string.IsNullOrEmpty (JavadocUrlStyle)) { + if (!JavadocUrlStyle.IsNullOrEmpty ()) { AppendArg (response, "--doc-url-style"); AppendArg (response, JavadocUrlStyle); } - if (!string.IsNullOrEmpty (JavadocDocRootUrl)) { + if (!JavadocDocRootUrl.IsNullOrEmpty ()) { AppendArg (response, "--doc-root-url"); AppendArg (response, JavadocDocRootUrl); } diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/JavaToolTask.cs b/src/Xamarin.Android.Build.Tasks/Tasks/JavaToolTask.cs index 67fee48e5cc..6c6f7d87d16 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/JavaToolTask.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/JavaToolTask.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable enable using System; using System.Collections.Generic; @@ -76,18 +76,18 @@ at com.android.dx.command.Main.main(Main.java:106) List errorLines = new List (); StringBuilder errorText = new StringBuilder (); HashSet mappingText = new HashSet (); - string file; + string? file; int line, column; - public string JavaOptions { get; set; } + public string? JavaOptions { get; set; } - public string JavaMaximumHeapSize { get; set; } + public string? JavaMaximumHeapSize { get; set; } public virtual string DefaultErrorCode => "JAVA0000"; - public string AssemblyIdentityMapFile { get; set; } + public string? AssemblyIdentityMapFile { get; set; } - public string IntermediateOutputPath { get; set; } + public string? IntermediateOutputPath { get; set; } protected override string ToolName { get { return OS.IsWindows ? "java.exe" : "java"; } @@ -101,7 +101,9 @@ protected override bool HandleTaskExecutionErrors () { if (foundError) { AssemblyIdentityMap assemblyMap = new AssemblyIdentityMap (); - assemblyMap.Load (AssemblyIdentityMapFile); + if (!AssemblyIdentityMapFile.IsNullOrEmpty ()) { + assemblyMap.Load (AssemblyIdentityMapFile); + } errorText.Clear (); mappingText.Clear (); foreach (var line in errorLines) { @@ -116,11 +118,6 @@ protected override bool HandleTaskExecutionErrors () return base.HandleTaskExecutionErrors (); } - protected override string GetWorkingDirectory () - { - return base.GetWorkingDirectory (); - } - protected override string GenerateFullPathToTool () { return Path.Combine (ToolPath, ToolExe); @@ -143,14 +140,14 @@ internal virtual bool ProcessOutput (string singleLine, AssemblyIdentityMap asse foreach (Match lp in lpRegex.Matches (singleLine)) { var id = lp.Groups["identifier"].Value; var asmName = assemblyMap.GetAssemblyNameForImportDirectory (id); - if (!string.IsNullOrEmpty (asmName)) { - var path = Path.Combine(IntermediateOutputPath ?? string.Empty, "lp", id); + if (!asmName.IsNullOrEmpty ()) { + var path = Path.Combine(IntermediateOutputPath ?? "", "lp", id); mappingText.Add (string.Format (Properties.Resources.XA_Directory_Is_From, path, asmName)); } } if (match.Success) { - if (!string.IsNullOrEmpty (file)) { + if (!file.IsNullOrEmpty ()) { Log.LogError (ToolName, DefaultErrorCode, null, file, line - 1, column + 1, 0, 0, errorText.ToString () + String.Join (Environment.NewLine, mappingText)); errorText.Clear (); mappingText.Clear (); diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/LinkApplicationSharedLibraries.cs b/src/Xamarin.Android.Build.Tasks/Tasks/LinkApplicationSharedLibraries.cs index d06915fdb0f..ba184b12194 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/LinkApplicationSharedLibraries.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/LinkApplicationSharedLibraries.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable enable using System; using System.Collections.Generic; @@ -21,28 +21,28 @@ public class LinkApplicationSharedLibraries : AsyncTask sealed class Config { - public NativeLinker Linker; - public List LinkItems; - public ITaskItem OutputSharedLibrary; + public NativeLinker? Linker; + public List? LinkItems; + public ITaskItem? OutputSharedLibrary; } [Required] - public ITaskItem[] ObjectFiles { get; set; } + public ITaskItem[] ObjectFiles { get; set; } = []; [Required] - public ITaskItem[] ApplicationSharedLibraries { get; set; } + public ITaskItem[] ApplicationSharedLibraries { get; set; } = []; [Required] - public ITaskItem IntermediateOutputPath { get; set; } + public ITaskItem IntermediateOutputPath { get; set; } = null!; [Required] public bool DebugBuild { get; set; } [Required] - public string AndroidBinUtilsDirectory { get; set; } + public string AndroidBinUtilsDirectory { get; set; } = ""; [Required] - public ITaskItem[] RuntimePackLibraryDirectories { get; set; } = Array.Empty (); + public ITaskItem[] RuntimePackLibraryDirectories { get; set; } = []; [Required] public bool TargetsCLR { get; set; } @@ -56,6 +56,8 @@ public override System.Threading.Tasks.Task RunTaskAsync () void RunLinker (Config config) { + if (config.Linker == null || config.OutputSharedLibrary == null || config.LinkItems == null) + return; config.Linker.Link (config.OutputSharedLibrary, config.LinkItems); } diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/MergeRemapXml.cs b/src/Xamarin.Android.Build.Tasks/Tasks/MergeRemapXml.cs index b4c50c08e16..29ba45a0905 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/MergeRemapXml.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/MergeRemapXml.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable enable using System; using System.Collections.Generic; @@ -18,10 +18,10 @@ public class MergeRemapXml : AndroidTask { public override string TaskPrefix => "MRX"; - public ITaskItem[] InputRemapXmlFiles { get; set; } + public ITaskItem[]? InputRemapXmlFiles { get; set; } [Required] - public ITaskItem OutputFile { get; set; } + public ITaskItem OutputFile { get; set; } = null!; public override bool RunTask () { @@ -36,11 +36,13 @@ public override bool RunTask () using (var writer = XmlWriter.Create (output, settings)) { writer.WriteStartElement ("replacements"); var seen = new HashSet (StringComparer.OrdinalIgnoreCase); - foreach (var file in InputRemapXmlFiles) { - if (!seen.Add (file.ItemSpec)) { - continue; + if (InputRemapXmlFiles != null) { + foreach (var file in InputRemapXmlFiles) { + if (!seen.Add (file.ItemSpec)) { + continue; + } + MergeInputFile (writer, file.ItemSpec); } - MergeInputFile (writer, file.ItemSpec); } writer.WriteEndElement (); } diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/StripNativeLibraries.cs b/src/Xamarin.Android.Build.Tasks/Tasks/StripNativeLibraries.cs index f40c25aedb4..fc753b82e71 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/StripNativeLibraries.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/StripNativeLibraries.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable enable using System; using System.IO; @@ -16,19 +16,19 @@ public class StripNativeLibraries : AndroidToolTask { public override string TaskPrefix => "SNL"; - public ITaskItem [] SourceFiles { get; set; } + public ITaskItem []? SourceFiles { get; set; } - public ITaskItem [] DestinationFiles { get; set; } + public ITaskItem []? DestinationFiles { get; set; } - string triple; - ITaskItem source; - ITaskItem destination; + string? triple; + ITaskItem? source; + ITaskItem? destination; public override bool RunTask () { - if (SourceFiles.Length != DestinationFiles.Length) + if (SourceFiles == null || DestinationFiles == null || SourceFiles.Length != DestinationFiles.Length) throw new ArgumentException ("source and destination count mismatch"); - if (SourceFiles == null || SourceFiles.Length == 0) + if (SourceFiles.Length == 0) return true; for (int i = 0; i < SourceFiles.Length; i++) { @@ -36,9 +36,9 @@ public override bool RunTask () destination = DestinationFiles [i]; var abi = AndroidRidAbiHelper.GetNativeLibraryAbi (source); - if (string.IsNullOrEmpty (abi)) { + if (abi.IsNullOrEmpty ()) { var packageId = source.GetMetadata ("NuGetPackageId"); - if (!string.IsNullOrEmpty (packageId)) { + if (!packageId.IsNullOrEmpty ()) { Log.LogCodedWarning ("XA4301", source.ItemSpec, 0, Properties.Resources.XA4301_ABI_NuGet, source.ItemSpec, packageId); } else { Log.LogCodedWarning ("XA4301", source.ItemSpec, 0, Properties.Resources.XA4301_ABI, source.ItemSpec); @@ -67,8 +67,8 @@ public override bool RunTask () protected override string GenerateCommandLineCommands () { var cmd = new CommandLineBuilder (); - cmd.AppendSwitchIfNotNull ("--strip-debug ", source.ItemSpec); - cmd.AppendSwitchIfNotNull ("-o ", destination.ItemSpec); + cmd.AppendSwitchIfNotNull ("--strip-debug ", source?.ItemSpec); + cmd.AppendSwitchIfNotNull ("-o ", destination?.ItemSpec); return cmd.ToString (); } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy