Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@ called for "legacy" projects in Xamarin.Android.Legacy.targets.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<UsingTask TaskName="Xamarin.Android.Tasks.ValidateJavaVersion" AssemblyFile="$(_XamarinAndroidBuildTasksAssembly)" />
<UsingTask TaskName="Xamarin.Android.Tasks.ResolveAndroidTooling" AssemblyFile="$(_XamarinAndroidBuildTasksAssembly)" />
<UsingTask TaskName="Xamarin.Android.Tasks.RuntimeIdentifierToAbi" AssemblyFile="$(_XamarinAndroidBuildTasksAssembly)" />
<UsingTask TaskName="Xamarin.Android.Tasks.CheckGoogleSdkRequirements" AssemblyFile="$(_XamarinAndroidBuildTasksAssembly)" />
<UsingTask TaskName="Xamarin.Android.Tasks.ResolveAndroidTooling" AssemblyFile="$(_XamarinAndroidBuildTasksAssembly)" />
<UsingTask TaskName="Xamarin.Android.Tasks.RuntimeIdentifierToAbi" AssemblyFile="$(_XamarinAndroidBuildTasksAssembly)" />
<UsingTask TaskName="Xamarin.Android.Tasks.ValidateJavaVersion" AssemblyFile="$(_XamarinAndroidBuildTasksAssembly)" />

<Target Name="_ResolveAndroidTooling">
<ValidateJavaVersion
Expand Down Expand Up @@ -61,4 +62,12 @@ called for "legacy" projects in Xamarin.Android.Legacy.targets.
</RuntimeIdentifierToAbi>
</Target>

<Target Name="_CheckGoogleSdkRequirements"
Condition="Exists('$(IntermediateOutputPath)android\AndroidManifest.xml') And '$(AndroidEnableGooglePlayStoreChecks)' == 'true' ">
<CheckGoogleSdkRequirements
ApiLevel="$(_AndroidApiLevel)"
ManifestFile="$(IntermediateOutputPath)android\AndroidManifest.xml"
/>
</Target>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,26 @@ public class CheckGoogleSdkRequirements : AndroidTask
{
public override string TaskPrefix => "CGS";

[Required]
/// <summary>
/// This will be blank for .NET 5 builds
/// </summary>
public string TargetFrameworkVersion { get; set; }

/// <summary>
/// This is used instead of TargetFrameworkVersion for .NET 5 builds
/// </summary>
public int ApiLevel { get; set; }

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public int ApiLevel { get; set; }
public int TargetApiLevel { get; set; }

This is more clear in intent than the previous name.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this instead be string TargetAndroidId (plus associated chicanery and conversions), so that it can “reasonably” support preview API levels, such as this year’s current R (and presumably next year’s S, and...)?

AndroidManifest.xml has historically allowed //uses-sdk/@android:targetSdkVersion to contain values such as R, and we’ve historically allowed $(TargetFrameworkVersion) to be e.g. v10.0.99 to use the preview API level, and we need some form of equivalent in .NET 5, especially since we’ll be losing $(TargetFrameworkVersion)...

Copy link
Member Author

@jonathanpeppers jonathanpeppers Apr 23, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


[Required]
public string ManifestFile { get; set; }

public override bool RunTask ()
{
ManifestDocument manifest = new ManifestDocument (ManifestFile);

var compileSdk = MonoAndroidHelper.SupportedVersions.GetApiLevelFromFrameworkVersion (TargetFrameworkVersion);
var compileSdk = string.IsNullOrEmpty (TargetFrameworkVersion) ?
ApiLevel :

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ApiLevel :
TargetApiLevel :

MonoAndroidHelper.SupportedVersions.GetApiLevelFromFrameworkVersion (TargetFrameworkVersion);

if (!int.TryParse (manifest.GetMinimumSdk (), out int minSdk)) {
minSdk = 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ public void DotNetPublish (string runtimeIdentifier, bool isRelease)

var dotnet = CreateDotNetBuilder (proj);
Assert.IsTrue (dotnet.Publish (), "`dotnet publish` should succeed");
Assert.IsTrue (StringAssertEx.ContainsText (dotnet.LastBuildOutput, " 0 Warning(s)"), "Should have no MSBuild warnings.");

var apk = Path.Combine (Root, dotnet.ProjectDirectory, proj.OutputPath,
runtimeIdentifier, "UnnamedProject.UnnamedProject.apk");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,9 @@ public class Builder : IDisposable
public IEnumerable<string> LastBuildOutput {
get {
if (!string.IsNullOrEmpty (buildLogFullPath) && File.Exists (buildLogFullPath)) {
foreach (var line in File.ReadLines (buildLogFullPath, Encoding.UTF8)) {
yield return line;
}
return File.ReadLines (buildLogFullPath, Encoding.UTF8);
}
yield return String.Empty;
return Enumerable.Empty<string> ();
}
}
public TimeSpan LastBuildTime { get; protected set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;

namespace Xamarin.ProjectTools
Expand Down Expand Up @@ -84,6 +85,15 @@ public bool Publish (string target = null)
return Execute (arguments.ToArray ());
}

public IEnumerable<string> LastBuildOutput {
get {
if (!string.IsNullOrEmpty (BuildLogFile) && File.Exists (BuildLogFile)) {
return File.ReadLines (BuildLogFile, Encoding.UTF8);
}
return Enumerable.Empty<string> ();
}
}

List<string> GetDefaultCommandLineArgs (string verb, string target = null)
{
string testDir = Path.GetDirectoryName (projectOrSolution);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
<UsingTask TaskName="Xamarin.Android.Tasks.CalculateAdditionalResourceCacheDirectories" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.CalculateLayoutCodeBehind" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.CalculateProjectDependencies" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.CheckGoogleSdkRequirements" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.CheckForRemovedItems" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.CheckForInvalidResourceFileNames" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.CompileToDalvik" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
Expand Down Expand Up @@ -550,14 +549,6 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
/>
</Target>

<Target Name="_CheckGoogleSdkRequirements"
Condition="Exists('$(IntermediateOutputPath)android\AndroidManifest.xml') And '$(AndroidEnableGooglePlayStoreChecks)' == 'true' ">
<CheckGoogleSdkRequirements
TargetFrameworkVersion="$(TargetFrameworkVersion)"
ManifestFile="$(IntermediateOutputPath)android\AndroidManifest.xml"
/>
</Target>

<!--
*******************************************
Application Build
Expand Down
11 changes: 10 additions & 1 deletion src/Xamarin.Android.Build.Tasks/Xamarin.Android.Legacy.targets
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,8 @@ projects. .NET 5 projects will not import this file.
</CleanDependsOn>
</PropertyGroup>

<UsingTask TaskName="Xamarin.Android.Tasks.Legacy.ValidateJavaVersion" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.CheckGoogleSdkRequirements" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.Legacy.ValidateJavaVersion" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Android.Tasks.Legacy.ResolveAndroidTooling" AssemblyFile="Xamarin.Android.Build.Tasks.dll" />

<Target Name="_GetReferenceAssemblyPaths">
Expand Down Expand Up @@ -245,4 +246,12 @@ projects. .NET 5 projects will not import this file.
</ItemGroup>
</Target>

<Target Name="_CheckGoogleSdkRequirements"
Condition="Exists('$(IntermediateOutputPath)android\AndroidManifest.xml') And '$(AndroidEnableGooglePlayStoreChecks)' == 'true' ">
<CheckGoogleSdkRequirements
TargetFrameworkVersion="$(TargetFrameworkVersion)"
ManifestFile="$(IntermediateOutputPath)android\AndroidManifest.xml"
/>
</Target>

</Project>