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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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
5 changes: 5 additions & 0 deletions Configuration.props
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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