Skip to content

Commit 01d2840

Browse files
[One .NET] AOT support
Helpful reading: * https://github.com/dotnet/runtime/blob/15dec9a2aa5a4236d6ba70de2e9c146867b9d2e0/src/tasks/AotCompilerTask/MonoAOTCompiler.cs * https://github.com/dotnet/runtime/blob/15dec9a2aa5a4236d6ba70de2e9c146867b9d2e0/src/mono/netcore/nuget/Microsoft.NET.Runtime.MonoAOTCompiler.Task/README.md TODO / limitations: * We only have the osx-x64 host packages * I have not updated the installers yet. The AOT packs are placed in `~/android-toolchain/dotnet` for local testing. * Many other `TODO` comments To make this work, I moved the existing `<Aot/>` MSBuild task calls to a new `_AndroidAot` MSBuild target in `Xamarin.Android.Legacy.targets`. In the .NET 6 targets, there is a *different* `_AndroidAot` MSBuild target that runs the new `<MonoAOTCompiler/>` MSBuild task. In order to acquire the AOT packages, I created a new `mono-aot-compiler.proj` that is invoked such as: <Exec Command="$(DotNetPreviewTool) build @(_GlobalProperties, ' ') &quot;$(MSBuildThisFileDirectory)..\mono-aot-compiler\mono-aot-compiler.proj&quot;" EnvironmentVariables="NUGET_PACKAGES=$(DotNetPreviewPath)packs" /> Setting `$NUGET_PACKAGES` allows us to extract the AOT NuGet packages directly to `dotnet/packs` when this project is restored. Then we conditionally import the Sdk: <Import Project="..\build\Microsoft.NET.Runtime.MonoAOTCompiler.Task.props" Sdk="Microsoft.NET.Runtime.MonoAOTCompiler.Task" Condition=" '$(AotAssemblies)' == 'true' " /> Which allows us to use `$(MonoAOTCompilerTaskAssemblyPath)`: <UsingTask Condition=" '$(AotAssemblies)' == 'true' " TaskName="MonoAOTCompiler" AssemblyFile="$(MonoAOTCompilerTaskAssemblyPath)" /> I still need to add the new packs to our installers.
1 parent a13305a commit 01d2840

File tree

15 files changed

+520
-274
lines changed

15 files changed

+520
-274
lines changed

build-tools/create-packs/Directory.Build.targets

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,16 @@
7474
<Exec Command="$(DotNetPreviewTool) build -p:Configuration=$(Configuration) &quot;$(XamarinAndroidSourcePath)src\Microsoft.Android.Sdk.ILLink\Microsoft.Android.Sdk.ILLink.csproj&quot;" />
7575
</Target>
7676

77+
<Target Name="GetMonoAOTCompilers">
78+
<!-- Use $NUGET_PACKAGES to extract directly to the dotnet/packs directory -->
79+
<Exec
80+
Command="$(DotNetPreviewTool) build @(_GlobalProperties, ' ') &quot;$(MSBuildThisFileDirectory)..\mono-aot-compiler\mono-aot-compiler.proj&quot;"
81+
EnvironmentVariables="NUGET_PACKAGES=$(DotNetPreviewPath)packs"
82+
/>
83+
</Target>
84+
7785
<Target Name="CreateAllPacks"
78-
DependsOnTargets="BuildILLinkCustomStep;DeleteExtractedWorkloadPacks;_SetGlobalProperties">
86+
DependsOnTargets="BuildILLinkCustomStep;DeleteExtractedWorkloadPacks;_SetGlobalProperties;GetMonoAOTCompilers">
7987
<RemoveDir Directories="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\nuget-unsigned" />
8088
<Exec Command="$(DotNetPreviewTool) pack @(_GlobalProperties, ' ') -p:AndroidRID=android-arm -p:AndroidABI=armeabi-v7a-net6 &quot;$(MSBuildThisFileDirectory)Microsoft.Android.Runtime.proj&quot;" />
8189
<Exec Command="$(DotNetPreviewTool) pack @(_GlobalProperties, ' ') -p:AndroidRID=android-arm64 -p:AndroidABI=arm64-v8a-net6 &quot;$(MSBuildThisFileDirectory)Microsoft.Android.Runtime.proj&quot;" />
@@ -100,6 +108,7 @@
100108
<_WLTemplates Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\nuget-unsigned\Microsoft.Android.Templates.*.nupkg" />
101109
<!-- Runtime packs are not yet supported by workloads -->
102110
<!-- <_WLPacks Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\nuget-unsigned\Microsoft.Android.Runtime.*.nupkg" /> -->
111+
<_AotPacks Include="$(XamarinAndroidSourcePath)bin\Build$(Configuration)\nupkgs\microsoft.netcore.app.runtime.aot.*.cross.*.nupkg" />
103112
</ItemGroup>
104113
<PropertyGroup>
105114
<_WLPackVersion>@(_WLManifest->'%(Filename)'->Replace('Microsoft.NET.Workload.Android.', ''))</_WLPackVersion>
@@ -112,12 +121,18 @@
112121
SourceFiles="@(_WLPacks)"
113122
DestinationFolder="$(DotNetPreviewPath)packs\$([System.String]::Copy('%(_WLPacks.Filename)').Replace('.$(_WLPackVersion)', ''))\$(_WLPackVersion)"
114123
/>
124+
<Unzip
125+
SourceFiles="@(_AotPacks)"
126+
DestinationFolder="$(DotNetPreviewPath)packs\$([System.String]::Copy('%(_AotPacks.Filename)').Replace('.$(BundledNETCoreAppPackageVersion)', ''))\$(BundledNETCoreAppPackageVersion)"
127+
/>
115128
<MakeDir Directories="$(DotNetPreviewPath)template-packs" />
116129
<Copy SourceFiles="@(_WLTemplates)" DestinationFolder="$(DotNetPreviewPath)template-packs" />
117130
<ItemGroup>
118131
<_UnixExecutables Include="$(DotNetPreviewPath)packs\Microsoft.Android.Sdk.*\*\tools\$(HostOS)\**\*.*" />
132+
<_UnixExecutables Include="$(DotNetPreviewPath)packs\microsoft.netcore.app.runtime.aot.*.cross.*\*\tools\*.*" />
119133
<_FilesToTouch Include="$(DotNetPreviewPath)sdk-manifests\$(DotNetPreviewVersionBand)\Microsoft.NET.Workload.Android\**" />
120134
<_FilesToTouch Include="$(DotNetPreviewPath)packs\$([System.String]::Copy('%(_WLPacks.Filename)').Replace('.$(_WLPackVersion)', ''))\$(_WLPackVersion)\**" />
135+
<_FilesToTouch Include="$(DotNetPreviewPath)packs\$([System.String]::Copy('%(_AotPacks.Filename)').Replace('.$(BundledNETCoreAppPackageVersion)', ''))\$(BundledNETCoreAppPackageVersion)\**" />
121136
</ItemGroup>
122137
<Exec
123138
Condition=" '$(HostOS)' == 'Darwin' or '$(HostOS)' == 'Linux' "
@@ -137,6 +152,7 @@
137152
<_PackFilesToDelete Include="$(DotNetPreviewPath)sdk-manifests\$(DotNetPreviewVersionBand)\Microsoft.Android.Workload\**\*.*" />
138153
<_PackFilesToDelete Include="$(DotNetPreviewPath)sdk-manifests\$(DotNetPreviewVersionBand)\Microsoft.NET.Workload.Android\**\*.*" />
139154
<_PackFilesToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android*\**\*.*" />
155+
<_PackFilesToDelete Include="$(DotNetPreviewPath)packs\microsoft.netcore.app.runtime.aot.*.cross.*\**\*.*" />
140156
<_PackFilesToDelete Include="$(DotNetPreviewPath)template-packs\Microsoft.Android.Templates.*.nupkg" />
141157
</ItemGroup>
142158
<RemoveDir Directories="%(_PackFilesToDelete.RootDir)%(_PackFilesToDelete.Directory)" />

build-tools/create-packs/Microsoft.Android.Sdk.proj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
9999
<PropertyGroup>
100100
<AndroidNETSdkVersion>$(AndroidPackVersionLong)</AndroidNETSdkVersion>
101101
<XamarinAndroidVersion>$(AndroidPackVersionLong)</XamarinAndroidVersion>
102+
<MonoAOTCompilerVersion>$(BundledNETCoreAppPackageVersion)</MonoAOTCompilerVersion>
102103
</PropertyGroup>
103104
<ItemGroup>
104105
<KnownFrameworkReference

build-tools/create-packs/Microsoft.NET.Workload.Android.proj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ workload manifest pack containing information about the various Microsoft.Androi
3333
<ReplaceFileContents
3434
SourceFile="$(XamarinAndroidSourcePath)src\Xamarin.Android.Build.Tasks\Microsoft.NET.Workload.Android\WorkloadManifest.in.json"
3535
DestinationFile="$(WorkloadManifestJsonPath)"
36-
Replacements="@SDK_PACK_VERSION@=$(AndroidPackVersionLong);@REF_PACK_VERSION@=$(AndroidPackVersionLong);@TEMPLATE_PACK_VERSION@=$(AndroidPackVersionLong);">
36+
Replacements="@SDK_PACK_VERSION@=$(AndroidPackVersionLong);@REF_PACK_VERSION@=$(AndroidPackVersionLong);@TEMPLATE_PACK_VERSION@=$(AndroidPackVersionLong);@MONO_AOT_VERSION@=$(BundledNETCoreAppPackageVersion);">
3737
</ReplaceFileContents>
3838

3939
<ItemGroup>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<Project Sdk="Microsoft.Build.NoTargets">
2+
<PropertyGroup>
3+
<TargetFramework>net6.0</TargetFramework>
4+
</PropertyGroup>
5+
6+
<Import Project="..\..\Configuration.props" />
7+
8+
<!--
9+
@(PackageDownload) with an exact version such as [6.0.0-preview.1.21072.5] is the only way to consume these packages:
10+
error NU1213: The package Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-* has a package type DotnetPlatform that is incompatible with this project.
11+
-->
12+
<ItemGroup Condition=" '$(HostOS)' == 'Darwin' ">
13+
<PackageDownload Include="Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-arm" Version="[$(BundledNETCoreAppPackageVersion)]" />
14+
<PackageDownload Include="Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-arm64" Version="[$(BundledNETCoreAppPackageVersion)]" />
15+
<PackageDownload Include="Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-x64" Version="[$(BundledNETCoreAppPackageVersion)]" />
16+
<PackageDownload Include="Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-x86" Version="[$(BundledNETCoreAppPackageVersion)]" />
17+
</ItemGroup>
18+
<ItemGroup Condition=" '$(HostOS)' == 'Darwin' or '$(HostOS)' == 'Windows' ">
19+
<PackageDownload Include="Microsoft.NetCore.App.Runtime.AOT.win-x64.Cross.android-arm" Version="[$(BundledNETCoreAppPackageVersion)]" />
20+
<PackageDownload Include="Microsoft.NetCore.App.Runtime.AOT.win-x64.Cross.android-arm64" Version="[$(BundledNETCoreAppPackageVersion)]" />
21+
<PackageDownload Include="Microsoft.NetCore.App.Runtime.AOT.win-x64.Cross.android-x64" Version="[$(BundledNETCoreAppPackageVersion)]" />
22+
<PackageDownload Include="Microsoft.NetCore.App.Runtime.AOT.win-x64.Cross.android-x86" Version="[$(BundledNETCoreAppPackageVersion)]" />
23+
</ItemGroup>
24+
<ItemGroup>
25+
<PackageDownload Include="Microsoft.NET.Runtime.MonoAOTCompiler.Task" Version="[$(BundledNETCoreAppPackageVersion)]" />
26+
</ItemGroup>
27+
</Project>

build-tools/xaprepare/xaprepare/Resources/Configuration.Generated.props.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
<PropertyGroup>
44
<XAPackagesDir Condition=" '$(XAPackagesDir)' == '' And '$(NUGET_PACKAGES)' != '' ">$(NUGET_PACKAGES)</XAPackagesDir>
55
<XAPackagesDir Condition=" '$(XAPackagesDir)' == '' ">@XA_PACKAGES_DIR@</XAPackagesDir>
6+
<BundledNETCoreAppPackageVersion>@BundledNETCoreAppPackageVersion@</BundledNETCoreAppPackageVersion>
67
</PropertyGroup>
78
</Project>

build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ GeneratedFile Get_Configuration_Generated_Props (Context context)
107107

108108
var replacements = new Dictionary<string, string> (StringComparer.Ordinal) {
109109
{ "@XA_PACKAGES_DIR@", Configurables.Paths.XAPackagesDir },
110+
{ "@BundledNETCoreAppPackageVersion@", context.BundledPreviewRuntimePackVersion },
110111
};
111112

112113
return new GeneratedPlaceholdersFile (

src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.After.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ This file is imported *after* the Microsoft.NET.Sdk/Sdk.targets.
1818
<Import Project="..\tools\Xamarin.Android.Bindings.Core.targets" />
1919
<Import Project="..\tools\Xamarin.Android.Bindings.ClassParse.targets" />
2020
<Import Project="Microsoft.Android.Sdk.AndroidLibraries.targets" />
21+
<Import Project="Microsoft.Android.Sdk.Aot.targets" Condition=" '$(AndroidApplication)' == 'true' " />
2122
<Import Project="Microsoft.Android.Sdk.Application.targets" Condition=" '$(AndroidApplication)' == 'true' " />
2223
<Import Project="Microsoft.Android.Sdk.AssemblyResolution.targets" />
2324
<Import Project="Microsoft.Android.Sdk.ILLink.targets" />
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<!--
2+
***********************************************************************************************
3+
Microsoft.Android.Sdk.Aot.targets
4+
5+
.NET 6 AOT support. You can find "legacy" Xamarin.Android AOT support
6+
in Xamarin.Android.Legacy.targets.
7+
8+
For <MonoAOTCompiler/> usage, see:
9+
* https://github.com/dotnet/runtime/blob/15dec9a2aa5a4236d6ba70de2e9c146867b9d2e0/src/tasks/AotCompilerTask/MonoAOTCompiler.cs
10+
* https://github.com/dotnet/runtime/blob/15dec9a2aa5a4236d6ba70de2e9c146867b9d2e0/src/mono/netcore/nuget/Microsoft.NET.Runtime.MonoAOTCompiler.Task/README.md
11+
12+
***********************************************************************************************
13+
-->
14+
<Project>
15+
16+
<UsingTask TaskName="Xamarin.Android.Tasks.GetAotArguments" AssemblyFile="$(_XamarinAndroidBuildTasksAssembly)" />
17+
18+
<Target Name="_AndroidAot"
19+
Condition=" '$(AotAssemblies)' == 'true' "
20+
Inputs="$(_BuildApkEmbedInputs)"
21+
Outputs="$(_BuildApkEmbedOutputs)">
22+
<PropertyGroup>
23+
<_RunMonoAOTCompilerProperties>
24+
_RunMonoAOTCompiler=true;
25+
AotAssemblies=true;
26+
AndroidAotMode=$(AndroidAotMode);
27+
AndroidBinUtilsDirectory=$(AndroidBinUtilsDirectory);
28+
EnableLLVM=$(EnableLLVM);
29+
_AotOutputDir=$(IntermediateOutputPath)aot\;
30+
_AndroidManifestFile=$(IntermediateOutputPath)android\AndroidManifest.xml;
31+
_AndroidNdkDirectory=$(_AndroidNdkDirectory);
32+
_AndroidApiLevel=$(_AndroidApiLevel);
33+
_AotAssemblies=@(_ShrunkAssemblies->'%(FullPath)', '%3b');
34+
_SequencePointsMode=$(_SequencePointsMode);
35+
</_RunMonoAOTCompilerProperties>
36+
</PropertyGroup>
37+
<ItemGroup>
38+
<_MonoAOTRuntimeIdentifiers Include="$(RuntimeIdentifier)" Condition=" '$(RuntimeIdentifiers)' == '' " />
39+
<_MonoAOTRuntimeIdentifiers Include="$(RuntimeIdentifiers)" Condition=" '$(RuntimeIdentifiers)' != '' " />
40+
</ItemGroup>
41+
<MSBuild
42+
Projects="$(MSBuildProjectFullPath)"
43+
Targets="_RunMonoAOTCompiler"
44+
Properties="RuntimeIdentifier=%(_MonoAOTRuntimeIdentifiers.Identity);$(_RunMonoAOTCompilerProperties)"
45+
/>
46+
</Target>
47+
48+
<PropertyGroup Condition=" '$(_RunMonoAOTCompiler)' == 'true' ">
49+
<_HostRID Condition="$([MSBuild]::IsOSPlatform('windows'))">win-x64</_HostRID>
50+
<_HostRID Condition="$([MSBuild]::IsOSPlatform('osx'))">osx-x64</_HostRID>
51+
</PropertyGroup>
52+
<Import
53+
Condition=" '$(_HostRID)' != '' and '$(RuntimeIdentifier)' != '' "
54+
Sdk="Microsoft.NETCore.App.Runtime.AOT.$(_HostRID).Cross.$(RuntimeIdentifier)"
55+
Project="Sdk.props"
56+
/>
57+
58+
<Target Name="_RunMonoAOTCompiler"
59+
Condition=" '$(_RunMonoAOTCompiler)' == 'true' ">
60+
<!--
61+
TODO:
62+
* I set every [Input] with a non-existent property.
63+
* AotProfilePath is a single string, not sure how to pass @(_AotProfiles)?
64+
-->
65+
<GetAotArguments
66+
AndroidAotMode="$(AndroidAotMode)"
67+
AndroidNdkDirectory="$(_AndroidNdkDirectory)"
68+
AndroidBinUtilsDirectory="$(AndroidBinUtilsDirectory)"
69+
AndroidApiLevel="$(_AndroidApiLevel)"
70+
ManifestFile="$(_AndroidManifestFile)"
71+
AndroidSequencePointsMode="$(_SequencePointsMode)"
72+
AotAdditionalArguments="$(AndroidAotAdditionalArguments)"
73+
AotOutputDirectory="$(_AndroidAotBinDirectory)"
74+
RuntimeIdentifier="$(RuntimeIdentifier)"
75+
EnableLLVM="$(EnableLLVM)"
76+
Profiles="@(_AotProfiles)">
77+
<Output PropertyName="_AotArguments" TaskParameter="Arguments" />
78+
</GetAotArguments>
79+
<ItemGroup>
80+
<_MonoAOTAssemblies Include="$([MSBuild]::Unescape('$(_AotAssemblies)'))" AotArguments="$(_AotArguments)" />
81+
</ItemGroup>
82+
<MakeDir Directories="$(_AotOutputDir)$(RuntimeIdentifier)\" />
83+
<MonoAOTCompiler
84+
AotProfilePath="$(_AotProfilePath)"
85+
Assemblies="@(_MonoAOTAssemblies)"
86+
CompilerBinaryPath="$(MonoAotCrossCompilerPath)"
87+
DisableParallelAot="$(_DisableParallelAot)"
88+
LLVMPath="$(_LLVMPath)"
89+
Mode="$(AndroidAotMode)"
90+
OutputDir="$(_AotOutputDir)$(RuntimeIdentifier)\"
91+
Profilers="@(_AotProfilers)"
92+
UseAotDataFile="$(_UseAotDataFile)"
93+
UseLLVM="$(EnableLLVM)">
94+
<Output TaskParameter="CompiledAssemblies" ItemName="_AotCompiledAssemblies" />
95+
<Output TaskParameter="FileWrites" ItemName="FileWrites" />
96+
</MonoAOTCompiler>
97+
</Target>
98+
</Project>

src/Xamarin.Android.Build.Tasks/Microsoft.NET.Workload.Android/WorkloadManifest.in.json

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@
77
"Microsoft.Android.Sdk",
88
"Microsoft.Android.Sdk.BundleTool",
99
"Microsoft.Android.Ref",
10-
"Microsoft.Android.Templates"
10+
"Microsoft.Android.Templates",
11+
"Microsoft.NET.Runtime.MonoAOTCompiler.Task",
12+
"Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-arm",
13+
"Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-arm64",
14+
"Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-x64",
15+
"Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-x86"
1116
]
1217
}
1318
},
@@ -27,6 +32,42 @@
2732
"kind": "sdk",
2833
"version": "@SDK_PACK_VERSION@"
2934
},
35+
"Microsoft.NET.Runtime.MonoAOTCompiler.Task": {
36+
"kind": "sdk",
37+
"version": "@MONO_AOT_VERSION@"
38+
},
39+
"Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-arm": {
40+
"kind": "sdk",
41+
"version": "@MONO_AOT_VERSION@"
42+
},
43+
"Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-arm64": {
44+
"kind": "sdk",
45+
"version": "@MONO_AOT_VERSION@"
46+
},
47+
"Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-x64": {
48+
"kind": "sdk",
49+
"version": "@MONO_AOT_VERSION@"
50+
},
51+
"Microsoft.NetCore.App.Runtime.AOT.osx-x64.Cross.android-x86": {
52+
"kind": "sdk",
53+
"version": "@MONO_AOT_VERSION@"
54+
},
55+
"Microsoft.NetCore.App.Runtime.AOT.win-x64.Cross.android-arm": {
56+
"kind": "sdk",
57+
"version": "@MONO_AOT_VERSION@"
58+
},
59+
"Microsoft.NetCore.App.Runtime.AOT.win-x64.Cross.android-arm64": {
60+
"kind": "sdk",
61+
"version": "@MONO_AOT_VERSION@"
62+
},
63+
"Microsoft.NetCore.App.Runtime.AOT.win-x64.Cross.android-x64": {
64+
"kind": "sdk",
65+
"version": "@MONO_AOT_VERSION@"
66+
},
67+
"Microsoft.NetCore.App.Runtime.AOT.win-x64.Cross.android-x86": {
68+
"kind": "sdk",
69+
"version": "@MONO_AOT_VERSION@"
70+
},
3071
"Microsoft.Android.Ref": {
3172
"kind": "framework",
3273
"version": "@REF_PACK_VERSION@"

src/Xamarin.Android.Build.Tasks/Microsoft.NET.Workload.Android/WorkloadManifest.targets

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
Condition=" '$(TargetPlatformIdentifier)' == 'android' " />
44
<Import Project="Sdk.targets" Sdk="Microsoft.Android.Sdk.BundleTool"
55
Condition=" '$(AndroidPackageFormat)' == 'aab' " />
6+
<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoAOTCompiler.Task"
7+
Condition=" '$(AotAssemblies)' == 'true' " />
68
</Project>

0 commit comments

Comments
 (0)