Skip to content
Open
Show file tree
Hide file tree
Changes from 6 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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,11 @@
<XABundleToolHash Condition="'$(XABundleToolHash)' == ''">A099CFA1543F55593BC2ED16A70A7C67FE54B1747BB7301F37FDFD6D91028E29</XABundleToolHash>
<XABinutilsVersion Condition="'$(XABinutilsVersion)' == ''">L_18.1.6-8.0.0-1</XABinutilsVersion>
<XABinutilsHash Condition="'$(XABinutilsHash)' == ''">5394EA6C411DA3A08BF0E6A87E1DD1B98BD2562B896C0CACD18E29E2FD4C0660</XABinutilsHash>
<!-- Microsoft OpenJDK: https://learn.microsoft.com/en-us/java/openjdk/download -->
<MicrosoftOpenJDKVersion Condition="'$(MicrosoftOpenJDKVersion)' == ''">21.0.8</MicrosoftOpenJDKVersion>
<MicrosoftOpenJDKFolder Condition="'$(MicrosoftOpenJDKFolder)' == ''">jdk-21</MicrosoftOpenJDKFolder>
<MicrosoftOpenJDKRootDirName Condition="'$(MicrosoftOpenJDKRootDirName)' == ''">jdk-21.0.8+9</MicrosoftOpenJDKRootDirName>
Comment thread
jonathanpeppers marked this conversation as resolved.
<JavaSdkDirectory Condition=" '$(JavaSdkDirectory)' == '' ">$(AndroidToolchainDirectory)\$(MicrosoftOpenJDKFolder)</JavaSdkDirectory>
<XAPackagesDir Condition=" '$(XAPackagesDir)' == '' And '$(NUGET_PACKAGES)' != ''">$(NUGET_PACKAGES)</XAPackagesDir>
<XAPackagesDir Condition=" '$(XAPackagesDir)' == '' And '$(HostOS)' == 'Windows'">$(userprofile)\.nuget\packages</XAPackagesDir>
<XAPackagesDir Condition=" '$(XAPackagesDir)' == '' And '$(HostOS)' != 'Windows'">$(HOME)/.nuget/packages</XAPackagesDir>
Expand Down
14 changes: 14 additions & 0 deletions Xamarin.Android.sln
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "bundletool", "src\bundletoo
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "binutils", "src\binutils\binutils.csproj", "{B2BC20D1-F468-46A9-B9B0-1C80CC4D4F36}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "openjdk", "src\openjdk\openjdk.csproj", "{7A180B05-DE3F-4D89-9F40-03A8E186AE82}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "androidsdk", "src\androidsdk\androidsdk.csproj", "{3E45D81B-4C4A-4E3F-B891-A0D8A3E2F0C1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "jit-times", "tools\jit-times\jit-times.csproj", "{F3CFF31C-037B-450F-B22D-1D6E529B2DCC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSBuildDeviceIntegration", "tests\MSBuildDeviceIntegration\MSBuildDeviceIntegration.csproj", "{16DB2680-399B-4111-AA26-6CDBBFA334D8}"
Expand Down Expand Up @@ -307,6 +311,14 @@ Global
{B2BC20D1-F468-46A9-B9B0-1C80CC4D4F36}.Debug|AnyCPU.Build.0 = Debug|Any CPU
{B2BC20D1-F468-46A9-B9B0-1C80CC4D4F36}.Release|AnyCPU.ActiveCfg = Release|Any CPU
{B2BC20D1-F468-46A9-B9B0-1C80CC4D4F36}.Release|AnyCPU.Build.0 = Release|Any CPU
{7A180B05-DE3F-4D89-9F40-03A8E186AE82}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU
{7A180B05-DE3F-4D89-9F40-03A8E186AE82}.Debug|AnyCPU.Build.0 = Debug|Any CPU
{7A180B05-DE3F-4D89-9F40-03A8E186AE82}.Release|AnyCPU.ActiveCfg = Release|Any CPU
{7A180B05-DE3F-4D89-9F40-03A8E186AE82}.Release|AnyCPU.Build.0 = Release|Any CPU
{3E45D81B-4C4A-4E3F-B891-A0D8A3E2F0C1}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU
{3E45D81B-4C4A-4E3F-B891-A0D8A3E2F0C1}.Debug|AnyCPU.Build.0 = Debug|Any CPU
{3E45D81B-4C4A-4E3F-B891-A0D8A3E2F0C1}.Release|AnyCPU.ActiveCfg = Release|Any CPU
{3E45D81B-4C4A-4E3F-B891-A0D8A3E2F0C1}.Release|AnyCPU.Build.0 = Release|Any CPU
{F3CFF31C-037B-450F-B22D-1D6E529B2DCC}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU
{F3CFF31C-037B-450F-B22D-1D6E529B2DCC}.Debug|AnyCPU.Build.0 = Debug|Any CPU
{F3CFF31C-037B-450F-B22D-1D6E529B2DCC}.Release|AnyCPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -438,6 +450,8 @@ Global
{0C31DE30-F9DF-4312-BFFE-DCAD558CCF08} = {04E3E11E-B47D-4599-8AFC-50515A95E715}
{A0AEF446-3368-4591-9DE6-BC3B2B33337D} = {04E3E11E-B47D-4599-8AFC-50515A95E715}
{B2BC20D1-F468-46A9-B9B0-1C80CC4D4F36} = {04E3E11E-B47D-4599-8AFC-50515A95E715}
{7A180B05-DE3F-4D89-9F40-03A8E186AE82} = {04E3E11E-B47D-4599-8AFC-50515A95E715}
{3E45D81B-4C4A-4E3F-B891-A0D8A3E2F0C1} = {04E3E11E-B47D-4599-8AFC-50515A95E715}
{F3CFF31C-037B-450F-B22D-1D6E529B2DCC} = {864062D3-A415-4A6F-9324-5820237BA058}
{16DB2680-399B-4111-AA26-6CDBBFA334D8} = {CAB438D8-B0F5-4AF0-BEBD-9E2ADBD7B483}
{372E8E3E-29D5-4B4D-88A2-4711CD628C4E} = {05C3B1D6-A4CE-4534-A9E4-E9117591ADF7}
Expand Down
2 changes: 1 addition & 1 deletion build-tools/automation/azure-pipelines-nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ stages:
avdApiLevel: $(avdApiLevel)
avdAbi: $(avdAbi)
avdType: $(avdType)
emulatorMSBuildArgs: -p:JavaSdkDirectory=$(JI_JAVA_HOME_DEFAULT)
emulatorMSBuildArgs: -p:JavaSdkDirectory=$(JAVA_HOME)

- template: /build-tools/automation/yaml-templates/apk-instrumentation.yaml
parameters:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,9 @@ steps:
}
$jdkHomePath=$xaPrepareJdkPath
if ("${{ parameters.useAgentJdkPath }}" -eq "true") {
$defaultJdkHomeVarName="JAVA_HOME_$(DefaultJavaSdkMajorVersion)_${agentArch}"
$defaultJdkHomePath=(Get-Item -Path "env:$defaultJdkHomeVarName").Value
$jdkHomeVarName="JAVA_HOME_${jdkMajorVersion}_${agentArch}"
$jdkHomePath=(Get-Item -Path "env:$jdkHomeVarName").Value
}
Write-Host "Setting variable 'JI_JAVA_HOME_DEFAULT' to '$defaultJdkHomePath'"
Write-Host "##vso[task.setvariable variable=JI_JAVA_HOME_DEFAULT]$defaultJdkHomePath"
Write-Host "Setting variable 'JAVA_HOME' and 'JI_JAVA_HOME' to '$jdkHomePath'"
Write-Host "Setting variable 'JAVA_HOME' to '$jdkHomePath'"
Write-Host "##vso[task.setvariable variable=JAVA_HOME]$jdkHomePath"
Write-Host "##vso[task.setvariable variable=JI_JAVA_HOME]$jdkHomePath"
displayName: set JAVA_HOME and JI_JAVA_HOME
displayName: set JAVA_HOME
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,14 @@ steps:
arguments: --s=${{ parameters.xaprepareScenario }} --android-sdk-platforms="${{ parameters.androidSdkPlatforms }}"
xaSourcePath: ${{ parameters.xaSourcePath }}

- template: /build-tools/automation/yaml-templates/run-dotnet-preview.yaml
parameters:
displayName: install OpenJDK and accept Android SDK licenses
xaSourcePath: ${{ parameters.xaSourcePath }}
project: ${{ parameters.xaSourcePath }}/src/androidsdk/androidsdk.csproj
arguments: -c ${{ parameters.configuration }} -bl:${{ parameters.xaSourcePath }}/bin/Test${{ parameters.configuration }}/androidsdk.binlog
continueOnError: false

- task: DotNetCoreCLI@2
displayName: build Xamarin.Android.Tools.BootstrapTasks.csproj
inputs:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,6 @@ namespace Xamarin.Android.Prepare
{
partial class Configurables
{
const string AdoptOpenJDKUpdate = "345";
const string AdoptOpenJDKBuild = "b01";

const string JetBrainsOpenJDKOperatingSystem = "linux-x64";
const string MicrosoftOpenJDKOperatingSystem = "linux-x64";
const string AdoptOpenJDKOperatingSystem = "x64_linux";

partial class Defaults
{
public const string NativeLibraryExtension = ".so";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
using System;
using System.Runtime.InteropServices;

namespace Xamarin.Android.Prepare
{
partial class Configurables
{
static string MicrosoftOpenJDKOperatingSystem = RuntimeInformation.OSArchitecture == Architecture.Arm64 ? "macos-aarch64": "macos-x64";

partial class Defaults
{
public const string NativeLibraryExtension = ".dylib";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ namespace Xamarin.Android.Prepare
{
partial class Configurables
{
const string MicrosoftOpenJDKFileExtension = "tar.gz";
const string AdoptOpenJDKArchiveExtension = "tar.gz";

partial class Defaults
{
public const string DefaultCompiler = "cc";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,6 @@ namespace Xamarin.Android.Prepare
{
partial class Configurables
{
const string AdoptOpenJDKUpdate = "345";
const string AdoptOpenJDKBuild = "b01";

const string JetBrainsOpenJDKOperatingSystem = "windows-x64";
const string MicrosoftOpenJDKOperatingSystem = "windows-x64";
const string MicrosoftOpenJDKFileExtension = "zip";
const string AdoptOpenJDKOperatingSystem = "x64_windows";
const string AdoptOpenJDKArchiveExtension = "zip";

partial class Defaults
{
public const string NativeLibraryExtension = ".dll";
Expand Down
15 changes: 0 additions & 15 deletions build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,11 @@ namespace Xamarin.Android.Prepare
partial class Configurables
{
const string MicrosoftOpenJDKVersion = "21.0.8";
const string MicrosoftOpenJDKRelease = "21.0.8";
const string MicrosoftOpenJDKRootDirName = "jdk-21.0.8+9";

static Context ctx => Context.Instance;

public static partial class Urls
{
// https://aka.ms/download-jdk/microsoft-jdk-17.0.11-linux-x64.tar.gz
// https://aka.ms/download-jdk/microsoft-jdk-17.0.11-macOS-x64.tar.gz or https://aka.ms/download-jdk/microsoft-jdk-17.0.11-macos-aarch64.pkg
// https://aka.ms/download-jdk/microsoft-jdk-17.0.11-windows-x64.zip
public static readonly Uri MicrosoftOpenJDK = new Uri ($"https://aka.ms/download-jdk/microsoft-jdk-{MicrosoftOpenJDKVersion}-{MicrosoftOpenJDKOperatingSystem}.{MicrosoftOpenJDKFileExtension}");

/// <summary>
/// Base URL for all Android SDK and NDK downloads. Used in <see cref="AndroidToolchain"/>
/// </summary>
Expand All @@ -42,8 +35,6 @@ public static partial class Defaults

public static readonly Version MicrosoftMinOpenJDKVersion = new Version (17, 0);
public static readonly Version MicrosoftOpenJDKVersion = new Version (Configurables.MicrosoftOpenJDKVersion);
public static readonly Version MicrosoftOpenJDKRelease = new Version (Configurables.MicrosoftOpenJDKRelease);
public static readonly string MicrosoftOpenJDKRootDirName = Configurables.MicrosoftOpenJDKRootDirName;

public const string DotNetTestRuntimeVersion = "3.1.11";

Expand Down Expand Up @@ -207,10 +198,6 @@ public static partial class Paths
public static string MonoAndroidFrameworksRootDir => GetCachedPath (ref monoAndroidFrameworksRootDir, () => Path.Combine (XAInstallPrefix, MonoAndroidFrameworksSubDir));
public static string InstallMSBuildDir => GetCachedPath (ref installMSBuildDir, () => ctx.Properties.GetRequiredValue (KnownProperties.MicrosoftAndroidSdkOutDir));

// OpenJDK
public static string OpenJDKInstallDir => GetCachedPath (ref openJDKInstallDir, () => Path.Combine (ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainDirectory), Defaults.JdkFolder));
public static string OpenJDKCacheDir => GetCachedPath (ref openJDKCacheDir, () => ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainCacheDirectory));

// .NET 6+
public static string NetcoreAppRuntimeAndroidARM => GetCachedPath (ref netcoreAppRuntimeAndroidARM, () => GetNetcoreAppRuntimePath (ctx, "arm"));
public static string NetcoreAppRuntimeAndroidARM64 => GetCachedPath (ref netcoreAppRuntimeAndroidARM64, () => GetNetcoreAppRuntimePath (ctx, "arm64"));
Expand Down Expand Up @@ -305,8 +292,6 @@ static string GetCachedPath (ref string? variable, Func<string> creator)
static string? installMSBuildDir;
static string? monoAndroidFrameworksRootDir;
static string? externalJavaInteropDir;
static string? openJDKInstallDir;
static string? openJDKCacheDir;
static string? configurationPropsGeneratedPath;
static string? netcoreAppRuntimeAndroidARM;
static string? netcoreAppRuntimeAndroidARM64;
Expand Down
5 changes: 1 addition & 4 deletions build-tools/xaprepare/xaprepare/OperatingSystems/OS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,7 @@ abstract class OS : AppObject
/// </summary>
protected virtual bool InitOS ()
{
JavaHome = Environment.GetEnvironmentVariable ("JI_JAVA_HOME") ?? String.Empty;
if (string.IsNullOrEmpty (JavaHome)) {
JavaHome = Context.Instance.Properties.GetValue (KnownProperties.JavaSdkDirectory)?.Trim () ?? String.Empty;
}
JavaHome = Context.Instance.Properties.GetValue (KnownProperties.JavaSdkDirectory)?.Trim () ?? String.Empty;
if (String.IsNullOrEmpty (JavaHome)) {
var androidToolchainDirectory = Context.Instance.Properties.GetValue (KnownProperties.AndroidToolchainDirectory)?.Trim () ?? String.Empty;
JavaHome = Path.Combine (androidToolchainDirectory, Configurables.Defaults.JdkFolder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ partial class Scenario_AndroidTestDependencies : ScenarioNoStandardEndSteps
protected virtual AndroidToolchainComponentType AndroidSdkNdkType => AndroidToolchainComponentType.CoreDependency;

public Scenario_AndroidTestDependencies ()
: base ("AndroidTestDependencies", "Install Android SDK, OpenJDK and .NET preview test dependencies.")
: base ("AndroidTestDependencies", "Install Android SDK and .NET preview test dependencies.")
{}

protected Scenario_AndroidTestDependencies (string name, string description)
Expand All @@ -18,7 +18,6 @@ protected Scenario_AndroidTestDependencies (string name, string description)
protected override void AddSteps (Context context)
{
Steps.Add (new Step_InstallDotNetPreview ());
Steps.Add (new Step_InstallMicrosoftOpenJDK (allowJIJavaHomeMatch: true));
Steps.Add (new Step_Android_SDK_NDK (AndroidSdkNdkType));

// disable installation of missing programs...
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ partial class Scenario_EmulatorTestDependencies : Scenario_AndroidTestDependenci
protected override AndroidToolchainComponentType AndroidSdkNdkType => AndroidToolchainComponentType.CoreDependency | AndroidToolchainComponentType.EmulatorDependency;

public Scenario_EmulatorTestDependencies ()
: base ("EmulatorTestDependencies", "Install Android SDK (with emulator), OpenJDK, and .NET preview test dependencies.")
: base ("EmulatorTestDependencies", "Install Android SDK (with emulator) and .NET preview test dependencies.")
{}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ protected override void AddSteps (Context context)
throw new ArgumentNullException (nameof (context));

Steps.Add (new Step_InstallDotNetPreview ());
Steps.Add (new Step_InstallMicrosoftOpenJDK ());
Steps.Add (new Step_Android_SDK_NDK ());
Steps.Add (new Step_GenerateFiles (atBuildStart: true));
Steps.Add (new Step_PrepareProps ());
Expand Down
56 changes: 0 additions & 56 deletions build-tools/xaprepare/xaprepare/Steps/Step_Android_SDK_NDK.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
Expand Down Expand Up @@ -70,10 +68,6 @@ protected override async Task<bool> Execute (Context context)

toolchain.Components.ForEach (c => Check (context, packageCacheDir, sdkRoot, c, toInstall, 4));
if (toInstall.Count == 0) {
if (!AcceptLicenses (context, sdkRoot)) {
Log.ErrorLine ("Failed to accept Android SDK licenses");
return false;
}
WritePackageXmls (sdkRoot);
return GatherNDKInfo (context);
}
Expand Down Expand Up @@ -114,61 +108,11 @@ protected override async Task<bool> Execute (Context context)
await Unpack (context, tempDir, p);
}

if (!AcceptLicenses (context, sdkRoot)) {
Log.ErrorLine ("Failed to accept Android SDK licenses");
return false;
}

WritePackageXmls (sdkRoot);

return GatherNDKInfo (context);
}

bool AcceptLicenses (Context context, string sdkRoot)
{
string[] sdkManagerPaths = new[]{
Path.Combine (sdkRoot, "cmdline-tools", context.Properties [KnownProperties.CommandLineToolsFolder] ?? String.Empty, "bin", "sdkmanager"),
Path.Combine (sdkRoot, "cmdline-tools", "latest", "bin", "sdkmanager"),
};
string sdkManager = "";
foreach (var sdkManagerPath in sdkManagerPaths) {
sdkManager = context.OS.Which (sdkManagerPath, required: false);
if (!string.IsNullOrEmpty (sdkManager))
break;
}
if (sdkManager.Length == 0)
throw new InvalidOperationException ("sdkmanager not found");
string jdkDir = context.OS.JavaHome;

Log.Todo ("Modify ProcessRunner to allow standard input writing and switch to it here");
// var runner = new ProcessRunner (sdkManager, "--licenses");
// runner.StartInfoCallback = (ProcessStartInfo psi) => {
// if (!String.IsNullOrEmpty (jdkDir))
// psi.EnvironmentVariables.Add ("JAVA_HOME", jdkDir);
// psi.RedirectStandardInput = true;
// };

var psi = new ProcessStartInfo (sdkManager, "--licenses") {
UseShellExecute = false,
RedirectStandardInput = true
};
if (!String.IsNullOrEmpty (jdkDir) && !psi.EnvironmentVariables.ContainsKey ("JAVA_HOME"))
psi.EnvironmentVariables.Add ("JAVA_HOME", jdkDir);

Log.DebugLine ($"Starting {psi.FileName} {psi.Arguments}");
Process? proc = Process.Start (psi);
if (proc != null) {
for (int i = 0; i < 10; i++)
proc.StandardInput.WriteLine ('y');

proc.WaitForExit ();
} else {
Log.DebugLine ("Failed to start process");
}

return true;
}

bool GatherNDKInfo (Context context)
{
if (!CopyRedistributableFiles (context)) {
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Loading