Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
331 commits
Select commit Hold shift + click to select a range
e9cff74
Use %ProgramW6432% path for 32-bit apps (#75)
Aug 27, 2019
818d1d6
Update to sdk-style csproj and netstandard2.0. (#78)
jpobst Jan 28, 2020
e32af10
[Xamarin.Android.Tools.AndroidSdk] Remove net461
jonpryor Feb 26, 2020
4bf8720
Merge pull request #80 from jonpryor/jonp-drop-net461
joj Feb 26, 2020
461a270
JetBrains OpenJDK 11 detection (#82)
grendello Apr 15, 2020
1bc75cf
[AndroidSdkWindows] Guard against exception checking registry (#79)
jpobst Apr 16, 2020
846e3ec
[Xamarin.Android.Tools.AndroidSdk] Add support for cmdline-tools (#83)
DmitriyKirakosyan Apr 30, 2020
0f984ed
[Xamarin.Android.Tools.AndroidSdk] Preview Build-Tools are Last (#85)
jonpryor Jun 2, 2020
b7b03d4
[Xamarin.Android.Tools.AndroidSdk] Nullable Reference Type support (#84)
jonpryor Jun 2, 2020
7aad57e
Delete NuGet.Config
jonpryor Jun 2, 2020
fd4e508
[Xamarin.Android.Tools.AndroidSdk] Prefer JAVA_HOME (#86)
jonpryor Jun 4, 2020
08f6a52
[Xamarin.Android.Tools.AndroidSdk] Improve utility of JDK warnings (#87)
jonpryor Jun 4, 2020
2c41c91
[Xamarin.Android.Tools.AndroidSdk] JdkInfo + JDK11 + Windows (#88)
jonpryor Jun 4, 2020
eca4212
Return a default for unknown API levels (#90)
jonathanpeppers Jun 30, 2020
f86bc57
[build] fail macOS build if tests fail (#94)
jonathanpeppers Jul 1, 2020
0551999
[Xamarin.Android.Tools.AndroidSdk] Default SDK component versions (#93)
dellis1972 Jul 1, 2020
f3ebd96
[Xamarin.Android.Tools.AndroidSdk] Add API-29, API-30 to KnownVersion…
jonathanpeppers Jul 8, 2020
644054c
Fix sort ordering for ndk-bundle, add macOS support (#91)
jonathanpeppers Jul 14, 2020
b393aef
[Xamarin.Android.Tools.AndroidSdk] Fix a few nullability warnings (#97)
jpobst Sep 25, 2020
d392eea
[Xamarin.Android.Tools.AndroidSdk] Error & Warning Localization (#96)
moljac Oct 3, 2020
38c2ff0
[Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-30 (#99)
jonpryor Oct 19, 2020
3155275
[ci] Use the new "main" default branch (#100)
brendanzagaeski Dec 15, 2020
ad51136
[tests] Use dotnet test to run AndroidSdk-Tests (#102)
pjcollins Jan 5, 2021
c22503d
[NDK] Locate and select only compatible NDK versions (#103)
grendello Jan 20, 2021
ae35096
Add Microsoft.Android.Build.BaseTasks project (#101)
pjcollins Feb 2, 2021
0aa9447
Bump ta xamarin/LibZipSharp/1.0.22@9f563dd1 (#104)
dellis1972 Feb 8, 2021
9259036
[ci] Update packageSources in NuGet.config (#105)
jonpryor Feb 9, 2021
fd602f3
[build] Move global.json file to root directory (#106)
pjcollins Feb 9, 2021
b89927f
Bump to xamarin/LibZipSharp/main@521b54ec [1.0.23] (#109)
dellis1972 Feb 25, 2021
672c5da
[macOS] fix DirectoryNotFoundException on clean systems (#110)
jonathanpeppers Mar 1, 2021
6b4f68e
Bump to xamarin/LibZipSharp/main@86f8ae57 [1.0.24] (#111)
dellis1972 Mar 2, 2021
d2e7bf7
[Xamarin.Android.Tools.AndroidSdk] Fix CS8600 in AndroidSdkBase (#107)
jpobst Mar 2, 2021
e554095
[Xamarin.Android.Tools.AndroidSdk] Fix quotes in %PATH% or %PATHEXT% …
jonathanpeppers Mar 17, 2021
5dcd287
[Xamarin.Android.Tools.AndroidSdk] Probe for Microsoft OpenJDK dirs (…
jonpryor Mar 24, 2021
229cedd
[Xamarin.Android.Tools.AndroidSdk] Probe for Zulu JDK (#114)
jonpryor Apr 19, 2021
6a21af2
[Xamarin.Android.Tools.AndroidSdk] Probe for AdoptOpenJDK Locations (…
jonpryor Apr 19, 2021
ac16183
[Xamarin.Android.Tools.AndroidSdk] Fix CS0168 warning (#116)
jonpryor Apr 21, 2021
1f3ea0a
[Xamarin.Android.Tools.AndroidSdk] Support Microsoft Dist JDK (#117)
jonpryor Apr 26, 2021
1e888d6
[Microsoft.Android.Build] Use MSBuild NuGets (#118)
pjcollins Apr 29, 2021
fa528d2
Add SECURITY.md (#119)
jpobst May 24, 2021
391f7a9
[JdkInfo] handle invalid XML from /usr/libexec/java_home (#120)
jonathanpeppers Jun 4, 2021
6db2428
[BaseTasks] add ABI detection for RIDs (#121)
jonathanpeppers Jun 4, 2021
d48ffd8
Reference the new Mono.Unix nuget (#123)
grendello Jun 8, 2021
64c243a
[BaseTasks] fix `\`-delimited paths on macOS (#122)
jonathanpeppers Jun 8, 2021
10646ad
Bump LibZipSharp to 2.0.0-alpha6
grendello Jun 10, 2021
3560738
Merge pull request #124 from xamarin/update-libzipsharp
grendello Jun 10, 2021
a7da026
[Microsoft.Android.Build] Bump to MSBuild 16.10.0 (#125)
pjcollins Jun 17, 2021
d307b79
Bump LibZipSharp to 2.0.0-alpha7 (#126)
grendello Jun 22, 2021
3a79542
[NDK] Properly detect 64-bit NDK
grendello Jul 6, 2021
743f263
[Microsoft.Android.Build.BaseTasks] add StrongName (#127)
dellis1972 Jul 19, 2021
b2791fa
Bump LibZipSharp and Mono.Unix to latest stable versions,
dellis1972 Jul 20, 2021
23ea1c9
Merge pull request #128 from dellis1972/bumpitybump
grendello Jul 20, 2021
7ee5960
[BaseTasks] improve Task settings in AsyncTaskExtensions (#129)
jonathanpeppers Jul 29, 2021
4b7c961
[Xamarin.Android.Tools.AndroidSdk] More Microsoft Dist JDK Support (#…
jonpryor Aug 11, 2021
e7508a2
[Xamarin.Android.Tools.AndroidSdk] Eclipse Adoptium support (#132)
jonpryor Aug 17, 2021
0ae5aa2
[build] Use GitInfo to generate $(Version) (#131)
dellis1972 Aug 19, 2021
cacc39e
Merge pull request #133 from xamarin/ndk-r23
grendello Aug 23, 2021
38230e9
[Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-31 (#…
jonpryor Sep 15, 2021
b90d233
[Xamarin.Android.Tools.AndroidSdk] Downgrade build-tools to API-30
jonpryor Sep 15, 2021
9bc9119
[build] Import "parent directory.override.targets" (#135)
Sep 24, 2021
53a3a88
[build] Allow Assembly "vendorization" (#136)
jonpryor Sep 27, 2021
3affb89
[Xamarin.Android.Tools.AndroidSdk] Add JdkInfo.GetSupportedJdkInfos()…
tondat Oct 27, 2021
8eda1b1
[Xamarin.Android.Tools.AndroidSdk] Add API-31 to KnownVersions (#141)
pjcollins Oct 27, 2021
4eae2e3
[Xamarin.Android.Tools.AndroidSdk] Parse Properties after header (#143)
jonpryor Nov 4, 2021
8f4f940
Update MaximumCompatibleNDKMajorVersion to be 23 (#144)
dellis1972 Nov 12, 2021
63c898e
Add resource dlls to MicroBuild signing. (#145)
mattnorflus Dec 1, 2021
ea47605
[build] Add d17-* as a branch trigger
jonpryor Dec 16, 2021
c7430c8
Bump LibZipSharp to 2.0.2 (#149)
dellis1972 Jan 24, 2022
b43f651
Fix Typo in commit c7430c88 (#150)
dellis1972 Jan 24, 2022
3d02e07
Bump LibZipSharp to 2.0.3 (#151)
dellis1972 Jan 26, 2022
70d1830
Adding condition to GetFilesToSign to only include files if build con…
mattnorflus Jan 26, 2022
29c27aa
Merge pull request #152 from xamarin/dev/mattnorflus/SigningMigration
mattnorflus Feb 7, 2022
b1e9825
[ci] Mention new NuGet feed and release (#153)
pjcollins Feb 10, 2022
d78d3f6
[Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-32 (#…
jonpryor Feb 18, 2022
1328f8d
Revert "[Xamarin.Android.Tools.AndroidSdk] Update SDK component for A…
jonpryor Feb 24, 2022
f820356
[Xamarin.Android.Tools.AndroidSdk] Attributes can be null! (#158)
jonpryor Feb 25, 2022
4797850
Bump to Microsoft.VisualStudioEng.MicroBuild.Core 1.0.0 (#159)
mcumming Mar 15, 2022
a2fcb1e
Add support for writing android:roundIcon to Android manifest (#162)
japarson Mar 21, 2022
278d525
Bump LibZipSharp to 2.0.4 (#166)
dellis1972 May 3, 2022
200a286
[Xamarin.Android.Tools.AndroidSdk] AndroidSdkInfo validation locator …
jonpryor Jun 13, 2022
933f2fb
[Xamarin.Android.Tools.AndroidSdk] Permit NDK r24 (#171)
jonpryor Jun 14, 2022
d44917e
[Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-32 (#…
jonpryor Jun 15, 2022
26fa79b
[Xamarin.Android.Tools.AndroidSdk] Add API-32 to KnownVersions
tondat Jun 23, 2022
cfa13e5
[Localization] Add OneLocBuild job (#175)
pjcollins Jul 18, 2022
1c7c008
LEGO: Merge pull request 182
csigs Jul 19, 2022
e0be7f9
[ci] Use latest macOS and Windows images (#181)
pjcollins Jul 19, 2022
7ae4182
[ci] Run OneLocBuild on a schedule (#180)
pjcollins Jul 20, 2022
ae0229e
[Xamarin.Android.Tools.AndroidSdk] Add API-33 to KnownVersions
tondat Jul 25, 2022
95adbae
[Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-33 (#…
tondat Jul 25, 2022
8c54f41
Juno: check in to juno/hb_befb220e-87ce-47e9-a9e6-10ea592b2337_202207…
csigs Jul 29, 2022
434b923
Juno: check in to juno/hb_befb220e-87ce-47e9-a9e6-10ea592b2337_202207…
csigs Jul 29, 2022
950b65f
LEGO: Merge pull request 187
csigs Jul 31, 2022
88622a7
Avoid `Environment.SpecialFolder.ApplicationData` (#188)
Aug 2, 2022
2a0f35f
[Xamarin.Android.Tools.AndroidSdk] Permit NDK r25 (#190)
jonathanpeppers Aug 4, 2022
76d8e7c
[Localization] Import translated resx files (#189)
vs-mobiletools-engineering-service2 Aug 5, 2022
43cc004
[ci] Use Microsoft.SourceLink.GitHub (#192)
jonpryor Aug 23, 2022
e4e6cdf
Bump to mono/mono.posix@d8994ca, xamarin/LibZipSharp@98e9173 (#193)
grendello Aug 24, 2022
221db21
Use Environment.SpecialFolder.UserProfile, not SpecialFolder.Personal…
eerhardt Sep 15, 2022
9ac7351
Move from `netcoreapp3.1` to `net6.0` (#195)
jonathanpeppers Oct 11, 2022
7c4faba
Enable CodeQL (#197)
dellis1972 Nov 8, 2022
828da70
[build] Update NuGet package versions (#196)
jonpryor Nov 17, 2022
7cf9e6e
Add reference to System.Security.Cryptography.Xml (#198)
pjcollins Nov 30, 2022
00664af
Add support for Project Specific RegisterTaskObject. (#199)
dellis1972 Jan 11, 2023
4589fbd
Fix CS0121 ambiguity errors. (#200)
jonpryor Jan 11, 2023
6d603f5
Revert IBuildEngine.ProjectFileOfTaskNode use. (#201)
jonpryor Jan 13, 2023
adc053a
Add *Task.ProjectSpecificTaskObjectKey() for RegisterTaskObject() use…
dellis1972 Jan 18, 2023
a2dce0d
Bump LibZipSharp version (#204)
grendello Feb 27, 2023
352c3ee
[Xamarin.Android.Tools.AndroidSdk] Update platform-tools for API-T (#…
dellis1972 Apr 19, 2023
3120347
[ci] Add weekly schedule for OneLocBuild (#207)
pjcollins May 11, 2023
860930b
[Xamarin.Android.Tools.AndroidSdk] Fix NRT warnings (#206)
jpobst May 12, 2023
eb0f8b0
[Build Tasks] Add LogErrorForXmlNode (#209)
pjcollins May 31, 2023
30edee4
Bump LibZipSharp to 3.0.0 (#210)
dellis1972 Jun 9, 2023
52f0340
[Xamarin.Android.Tools.AndroidSdk] Add API-34 to KnownVersions (#212)
tondat Aug 3, 2023
5c9f5f9
[Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-34 (#…
tondat Aug 3, 2023
21e7049
[Xamarin.Android.Tools.AndroidSdk] Check all <intent-filter/>s (#214)
jonpryor Aug 5, 2023
75d13b6
[build] set `$(DisableTransitiveFrameworkReferenceDownloads)`=true (#…
jonathanpeppers Aug 23, 2023
4210e5f
Update OpenJDK location for OpenJDK17 on windows
tondat Sep 19, 2023
6dfe006
Merge pull request #217 from xamarin/dev/tondat/main-openjdkms
MSLukeWest Sep 19, 2023
2d7065a
Update the maximum NDK version to 26 (#219)
grendello Nov 15, 2023
9e5b14c
Bump android-sdk platforms-tools to version 34.0.5
tondat Nov 9, 2023
70f5829
Bump android-sdk cmdline-tools to version 11.0
tondat Nov 9, 2023
023e7a2
Bump android-sdk build-tool version to 34.0.0
tondat Nov 16, 2023
bbdb2a4
Bump android-sdk NDK version to 26.1.10909125
tondat Nov 16, 2023
c3f608f
[build] update $(MSBuildPackageReferenceVersion) to 17.6.3 (#221)
jonathanpeppers Nov 30, 2023
4a4037a
[MSBuildReferences.projitems] Require opt-in to use `Microsoft.Build`…
jpobst Nov 30, 2023
3626cc7
[ci] Add API Scan job (#225)
pjcollins Jan 17, 2024
462be90
[ci] Only enable CodeQL on Windows build job (#224)
pjcollins Jan 17, 2024
8368ef6
[Xamarin.Android.Tools.Versions] Add JavaSdkVersion (#226)
pjcollins Jan 23, 2024
9387601
Only conditionally include <uses-sdk /> in the AndroidManifest.xml wh…
jstedfast Feb 7, 2024
52c204d
Added unit tests
jstedfast Feb 8, 2024
2a912f7
Merge pull request #227 from xamarin/dev/jestedfa/uses-sdk
jstedfast Feb 8, 2024
03019a5
Bump LibZipSharp to 3.1.1 (#228)
dellis1972 Feb 22, 2024
1542b53
[ci] Disable API Scan on xamarin/public (#231)
pjcollins Apr 11, 2024
6c55dce
Check for ANDROID_HOME Sdk location on Windows. (#230)
dellis1972 Apr 17, 2024
f1e8945
[AndroidToolTask] Log tool output as error (#229)
pjcollins Apr 19, 2024
d788922
[ci] Update OneLocBuildToken (#233)
MSylvia May 22, 2024
035485f
Force loc task pool image to windows (#234)
MSylvia May 24, 2024
d903394
Bump LibZipSharp and Xamarin.Build.AsyncTask (#236)
dellis1972 Jun 11, 2024
a31475c
Bump to dotnet/msbuild/v17.9.5@33de0b22 (#232)
dellis1972 Jun 11, 2024
014a1b5
Update README.md and build scripts (#238)
pjcollins Jun 13, 2024
de96238
Update pipeline and pipeline info in README.md (#239)
pjcollins Jun 14, 2024
a185304
[BaseTasks] Import Xamarin.Build.AsyncTask (#237)
pjcollins Jun 27, 2024
25a95cf
Be explicit about FileShare mode when using FileStream. (#240)
dellis1972 Aug 6, 2024
2df8ce4
Bump to dotnet/msbuild@10fbfbf2 (#241)
pjcollins Aug 20, 2024
cbc3531
[Xamarin.Android.Tools.AndroidSdk] Add API-35 to KnownVersions (#243)
anchimna Sep 4, 2024
70e4e79
[Microsoft.Android.Build.BaseTasks] report locked files in XA*7024 (#…
jonathanpeppers Sep 5, 2024
3350da0
[Microsoft.Android.Build.BaseTasks] report locked files for Unauthori…
jonathanpeppers Sep 12, 2024
5fd9510
[Microsoft.Android.Build.BaseTasks] retry when copying files (#245)
dellis1972 Oct 22, 2024
040d9d7
Add support to discovering activity-alias activity elements (#247)
dellis1972 Dec 3, 2024
2044220
[Xamarin.Android.Tools.AndroidSdk] Remove hardcoded Path (#248)
dellis1972 Jan 14, 2025
b41801e
[ci] Move PR build to dnceng public (#249)
pjcollins Feb 20, 2025
cbaafb2
[Xamarin.Android.Tools.AndroidSdk] OS-specific dirs are OS-specific (…
jonpryor Mar 21, 2025
88eb6cc
[build] Update to net9.0 and netstandard2.0 (#251)
pjcollins Apr 22, 2025
7ce6e0f
[msbuild] remove `Xamarin.Android.Tools.Versions.props` (#253)
jonathanpeppers Jun 4, 2025
0eed070
[Xamarin.Android.Tools.AndroidSdk] Add API-36 to `KnownVersions` (#254)
jonathanpeppers Jun 9, 2025
8496a7e
Return empty properties when `java` fails to run (#255)
emaf Jun 27, 2025
75189d6
[build] add net9.0 & timmer/aot compatibility (#256)
jonathanpeppers Jul 16, 2025
9441b41
[build] add way to opt out of multi-targeting (#257)
jonathanpeppers Jul 17, 2025
5f8edc0
[build] set `$(PackageVersion)` in `SetVersion` target (#258)
jonathanpeppers Jul 22, 2025
9d65a67
[build] introduce `$(PackageVersionSuffix)` for dotnet/android (#259)
jonathanpeppers Jul 23, 2025
886f59f
[Microsoft.Android.Build.BaseTasks] update to MSBuild 17.14.8 (#260)
jonathanpeppers Aug 11, 2025
da8bbe6
[Xamarin.Android.Tools.AndroidSdk] "Minor" SDK version support (#261)
jonpryor Aug 25, 2025
ba2696d
[Xamarin.Android.Tools.AndroidSdk] Prefer major versions (#262)
jonpryor Sep 8, 2025
e27b2de
Allow `MaximumCompatibleNDKMajorVersion=28` (#263)
jonathanpeppers Oct 15, 2025
d9d5cdd
[Xamarin.Android.Tools.AndroidSdk] Add API-36.1 to `KnownVersions` (#…
jonathanpeppers Oct 20, 2025
ffc5423
Update `$(MSBuildPackageReferenceVersion)` to 17.14.28 (#265)
jonathanpeppers Oct 22, 2025
8f709da
[Xamarin.Android.Tools.AndroidSdk] Add Android Studio's Android SDK p…
jonathanpeppers Jan 21, 2026
650c92c
[Xamarin.Android.Tools.AndroidSdk] Prevent fallback to major API leve…
jonathanpeppers Jan 28, 2026
3689ae9
Add JDK discovery for user-writable paths on Windows and macOS (#269)
Copilot Feb 5, 2026
4e5e133
[build] update to .NET 10 (#286)
jonathanpeppers Feb 24, 2026
5d585bc
[copilot] create minimal `copilot-instructions.md` (#287)
jonathanpeppers Feb 24, 2026
3760c78
Add JDK installation support (Microsoft OpenJDK) (#274)
rmarinho Feb 26, 2026
266d4c8
Add `EnvironmentVariableNames` constants for env var management (#290)
rmarinho Feb 27, 2026
000ef79
Add SDK bootstrap and sdkmanager wrapper (#275)
rmarinho Mar 2, 2026
8a9607c
Make `HttpClient` static in `JdkInstaller` (#291)
Copilot Mar 3, 2026
5c44cac
[skills] create a skill for reviewing PRs (#292)
jonathanpeppers Mar 4, 2026
b875bd1
[skills] new findings for `android-tools-reviewer` skill
jonathanpeppers Mar 4, 2026
86eb83f
[skills] Fix link path in review rules document
jonathanpeppers Mar 5, 2026
170aa06
[skills] Update link path in review rules document, take 2
jonathanpeppers Mar 5, 2026
669b4b6
Add `AdbRunner` for `adb` CLI operations (#283)
rmarinho Mar 6, 2026
ae757a1
Setup PublicApi Roslyn analyzer for Xamarin.Android.Tools.AndroidSdk …
Copilot Mar 10, 2026
7611bd2
Fix FormatDisplayName to match original dotnet/android implementation
rmarinho Mar 10, 2026
ad83ff3
Merge pull request #295 from dotnet/fix/format-display-name-preserve-…
rmarinho Mar 10, 2026
208e5a5
Fix RS0026: split AcceptLicensesAsync into explicit overloads (#298)
rmarinho Mar 11, 2026
bc191f5
Add no-whitespace-only-diffs rule to copilot instructions (#296)
rmarinho Mar 11, 2026
c56b9ca
Fix `CS8604` nullable warning in `AndroidVersion.AlternateIds` (#293)
rmarinho Mar 11, 2026
ee58c6a
Add PublicAPI file update rule to copilot instructions (#297)
rmarinho Mar 11, 2026
9fb3444
[skills] Incorporate review feedback from dotnet/android#10918 (#299)
jonathanpeppers Mar 11, 2026
b48b057
[skills] Document dotnet run file.cs for standalone C# scripts
jonathanpeppers Mar 11, 2026
684a7f4
Add `AvdManagerRunner` for `avdmanager` CLI operations (#282)
rmarinho Mar 12, 2026
0c1fda1
[skills] Add logger pattern rule from PR #282 review
jonathanpeppers Mar 12, 2026
5fb58b0
[actions] Add `copilot-setup-steps.yml` for Copilot coding agent (#307)
Copilot Mar 13, 2026
5e6f270
Add EmulatorRunner for emulator CLI operations (#284)
rmarinho Mar 19, 2026
6b978c7
[build] Append job attempt number to artifact names on retry (#314)
jonathanpeppers Mar 19, 2026
28e82ef
[copilot] Rename copilot-setup-steps job to required name (#316)
jonathanpeppers Mar 19, 2026
48fa276
[build] Fix `RS0017` warnings and enable `$(TreatWarningsAsErrors)` f…
Copilot Mar 19, 2026
7d5d3ad
Fix AdbRunner AVD detection: use getprop first, skip offline emulator…
rmarinho Mar 19, 2026
30e6bdd
[copilot-instructions] API design rules from PR #305 review (#317)
rmarinho Mar 19, 2026
781d86d
Add ADB reverse port forwarding support (#305)
rmarinho Mar 23, 2026
78bc962
Create CODEOWNERS file for pull request assignments (#318)
jonathanpeppers Mar 23, 2026
cf3266d
[Xamarin.Android.Tools.AndroidSdk] fall back to `android-{major}.0` (…
jonathanpeppers Apr 2, 2026
82357af
[Build.Tasks] Validate extracted zip entry paths in `Files.ExtractAll…
jonathanpeppers Apr 14, 2026
be78c1d
[Build.Tasks] Use `LogDebugMessage` instead of `LogWarning` in `Extra…
jonathanpeppers Apr 14, 2026
9845369
[test] Rename test cases to `relative.txt` in test files (#333)
Copilot Apr 22, 2026
5aba236
[tests] Add BenchmarkDotNet project for `Files` hash APIs (#334)
jonathanpeppers Apr 23, 2026
c022501
[BaseTasks] Replace `Crc64` with `XxHash64` in `Files` class (#335)
jonathanpeppers Apr 23, 2026
18639b7
[BaseTasks] Replace `XxHash64` with `System.IO.Hashing.Crc64` in `Fil…
jonathanpeppers Apr 27, 2026
d558aca
[JdkInfo] Remove dead code: `GetLibJvmJdks` and `GetLibJvmJdkPaths` (…
jonathanpeppers Apr 27, 2026
d17a045
[JdkInfo] Fix `StringBuilder` concurrency crash in `JdkInfo.GetJavaPr…
Copilot Apr 27, 2026
0a00592
[BaseTasks] Fix NRE in `DeleteFile` catch block (#342)
jonathanpeppers Apr 27, 2026
82dce35
[copilot] Add `/review` GitHub agentic workflow (#346)
jonathanpeppers Apr 28, 2026
dc991d0
[Tools.AndroidSdk] Remove unused `key_name` variables (#345)
jonathanpeppers Apr 28, 2026
9899436
[BaseTasks] Enable nullable reference types (#344)
Copilot Apr 28, 2026
d426de9
[copilot] Fix reviewer not posting body-only reviews (#352)
jonathanpeppers Apr 30, 2026
b2bd80d
[copilot] Split reviewer skill rules into conditional files (#355)
jonathanpeppers May 4, 2026
b9c16f6
[copilot] Add performance and allocation review learnings (#354)
rmarinho May 4, 2026
a98e0dd
Add `AvdManagerRunner.ListDeviceProfilesAsync()` for device enumerati…
rmarinho May 4, 2026
2593a52
Add API 37 (CinnamonBun) to KnownVersions (#357)
jonathanpeppers May 6, 2026
d2cd207
[copilot] Restore workflow_dispatch trigger for Copilot coding agent …
jonathanpeppers May 6, 2026
7296b64
Handle InvalidOperationException when emulator process has no associa…
jonathanpeppers May 7, 2026
87bdf75
Merge pull request #359 from dotnet/copilot/fix-emulator-boot-error
simonrozsival May 8, 2026
7795c2a
Remove dead ThrowIfCancellationRequested() in WaitForFullBootAsync
jonathanpeppers May 8, 2026
0c61ac5
Fix formatting of bootCompleted variable assignment
jonathanpeppers May 8, 2026
a759f15
Merge pull request #363 from dotnet/op-remove-dead-throwifcancelled-boot
simonrozsival May 12, 2026
c2348e0
Merge pull request #362 from dotnet/op-fix-runner-throwiffailed-stdout
jonathanpeppers May 12, 2026
f5abc5a
Launch emulator in signal-isolated process on Unix to survive Ctrl+C …
Copilot May 15, 2026
2d89805
Update Microsoft.Build package references (#369)
Redth May 27, 2026
f11f5c6
Add Dependabot config for weekly NuGet updates (#370)
jonathanpeppers May 27, 2026
22d3d74
[BaseTasks] Remove unused System.Reflection.Metadata reference (#377)
jonathanpeppers May 28, 2026
25d87b2
Bump Microsoft.DotNet.Arcade.Sdk from 6.0.0-beta.20615.1 to 6.0.0-bet…
dependabot[bot] May 28, 2026
44e7c46
Bump BenchmarkDotNet from 0.14.0 to 0.15.8 (#371)
dependabot[bot] May 28, 2026
6d86151
Bump GitInfo from 2.1.2 to 3.6.0 (#372)
dependabot[bot] May 28, 2026
d397b18
Bump Microsoft.NET.Test.Sdk from 17.5.0-preview-20221003-04 to 18.6.0…
dependabot[bot] May 28, 2026
a07e2b0
Bump Microsoft.CodeAnalysis.PublicApiAnalyzers from 3.3.4 to 4.14.0 (…
dependabot[bot] May 28, 2026
3cd8ed0
Bump System.IO.Hashing from 10.0.7 to 10.0.8 (#381)
dependabot[bot] Jun 2, 2026
67460a3
Bump Microsoft.SourceLink.GitHub from 1.1.1 to 10.0.300 (#378)
dependabot[bot] Jun 2, 2026
c57175e
Bump NUnit3TestAdapter from 4.0.0 to 6.2.0 (#380)
dependabot[bot] Jun 2, 2026
739e6db
[AdbRunner] Add ADB forward port management (#351)
rmarinho Jun 2, 2026
034a7f1
[msbuild] add System.Security.Cryptography.Xml transitive dependency …
Redth Jun 11, 2026
dde0c5b
Bump System.IO.Hashing from 10.0.8 to 10.0.9 (#387)
dependabot[bot] Jun 11, 2026
cc95da7
Upgrade gh-aw to v0.79.6 and recompile workflows (#388)
jonathanpeppers Jun 12, 2026
c01b7b0
[ci] Update agentic workflows to claude-opus-4.8 (#389)
jonathanpeppers Jun 15, 2026
5f9b94b
Bump gh-aw to v0.79.8 and disable AIC guardrails on reviewer workflow…
jonathanpeppers Jun 17, 2026
fca3a77
Scope gh-aw GitHub tokens to suppress magic fallback secret names (#391)
jonathanpeppers Jun 17, 2026
dcc326d
Bump GitInfo from 3.6.0 to 3.6.1 (#392)
dependabot[bot] Jun 25, 2026
84ca33f
Bump Microsoft.NET.Test.Sdk from 18.6.0 to 18.7.0 (#393)
dependabot[bot] Jun 25, 2026
f765eee
[gh-aw] move AI reviewer to PAT pool (#394)
vitek-karas Jun 29, 2026
d836afd
Remove external/xamarin-android-tools submodule in preparation for in…
jonathanpeppers Jul 6, 2026
1814cfa
Merge dotnet/android-tools history under external/xamarin-android-tools
jonathanpeppers Jul 6, 2026
ac8faf7
Add Android Tools CI stage and merge follow-ups
jonathanpeppers Jul 7, 2026
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
11 changes: 11 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,17 @@
- **Run tests:** `dotnet-local.cmd test bin/TestDebug/net9.0/Xamarin.Android.Build.Tests.dll --filter Name~TestName`
- **Device tests:** `dotnet-local.cmd test bin/TestDebug/MSBuildDeviceIntegration/net9.0/MSBuildDeviceIntegration.dll`

### external/xamarin-android-tools/

The in-tree Android tools libraries include SDK/JDK discovery (`AndroidSdkInfo`, `JdkInfo`, SDK manifest parsing, `AdbRunner`, `EmulatorRunner`) and MSBuild task infrastructure (`AndroidTask`, `AndroidToolTask`, `AsyncTask`, `Files`, `ProcessUtils`, `FileUtil`, `MemoryStreamPool`). They target `netstandard2.0` and/or modern .NET, so verify API availability across all target frameworks before using newer BCL APIs. Prefer `ANDROID_HOME` for new Android SDK environment handling; `ANDROID_SDK_ROOT` is deprecated and should only remain for compatibility.

Useful focused checks:
```sh
dotnet build external/xamarin-android-tools/Xamarin.Android.Tools.sln
dotnet test external/xamarin-android-tools/tests/Xamarin.Android.Tools.AndroidSdk-Tests/Xamarin.Android.Tools.AndroidSdk-Tests.csproj
dotnet test external/xamarin-android-tools/tests/Microsoft.Android.Build.BaseTasks-Tests/Microsoft.Android.Build.BaseTasks-Tests.csproj
```

## Critical Rules

**Never use `git commit --amend`:** Always create new commits. The user will squash or fixup as needed.
Expand Down
4 changes: 2 additions & 2 deletions .github/skills/android-reviewer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ description: >-

# Android PR Reviewer

Review PRs against guidelines distilled from past reviews by senior maintainers of dotnet/android.
Review PRs against guidelines distilled from past reviews by senior maintainers of dotnet/android, including the in-tree shared tooling under `external/xamarin-android-tools/`.

## Review Mindset

Expand Down Expand Up @@ -70,7 +70,7 @@ Based on the file types identified in step 2, read the appropriate rule files fr

**Conditionally load based on changed file types:**
- `references/csharp-rules.md` — When any `.cs` files changed. Covers nullable, async, error handling, performance, and code organization.
- `references/msbuild-rules.md` — When `.targets`, `.props`, `.projitems`, or `.csproj` files changed, or when MSBuild task C# files changed (e.g., files under `src/Xamarin.Android.Build.Tasks/`).
- `references/msbuild-rules.md` — When `.targets`, `.props`, `.projitems`, or `.csproj` files changed, or when MSBuild task C# files changed (e.g., files under `src/Xamarin.Android.Build.Tasks/` or `external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/`).
- `references/native-rules.md` — When `.c`, `.cpp`, `.h`, or `.hpp` files changed. Covers memory management, C++ best practices, symbol visibility, and platform-specific code.
- `references/interop-rules.md` — When both C# and native files changed, when the diff contains P/Invoke or JNI interop code (e.g., `DllImport`, `[Register]` attribute changes, `JNIEnv` calls, `[MarshalAs]`, `[StructLayout]`, `JniObjectReference`, `JniPeerMembers`, `JniTransition`), or when files under `external/Java.Interop/`, `src/Mono.Android/`, or `src/native/` changed.
- `references/testing-rules.md` — When test files changed (e.g., files under `tests/`, `**/Tests/`, or test project directories).
Expand Down
11 changes: 11 additions & 0 deletions .github/skills/android-reviewer/references/csharp-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ General C# guidance applicable to any .NET repository.

---

## Target Framework Compatibility

| Check | What to look for |
|-------|-----------------|
| **Oldest TFM must compile** | Code under `external/xamarin-android-tools/` may target `netstandard2.0` and modern .NET. Verify every API and overload against the oldest target framework; common traps include cancellation-token overloads such as `HttpContent.ReadAsStringAsync(CancellationToken)`, modern `ProcessStartInfo.ArgumentList` usage without the existing fallback helpers, and newer language/BCL features that need `#if` guards or polyfills. |
| **Prefer existing compatibility helpers** | Use repository helpers such as `ProcessUtils`, `FileUtil`, and nullable extension methods instead of direct modern-BCL calls when they provide `netstandard2.0` fallbacks or better annotations. |

---

## Nullable Reference Types

| Check | What to look for |
Expand Down Expand Up @@ -53,6 +62,8 @@ General C# guidance applicable to any .NET repository.
|-------|-----------------|
| **Avoid unnecessary allocations** | Don't create intermediate collections when LINQ chaining or a single list would do. Char arrays for `string.Split()` should be `static readonly` fields. |
| **ArrayPool for large buffers** | Buffers ≥ 1 KB should use `ArrayPool<byte>.Shared.Rent()` with `try`/`finally` return. Large allocations go to the LOH and are expensive to GC. |
| **Use existing pools for repeated streams/buffers** | In Android tools code, prefer existing pooling helpers such as `MemoryStreamPool`/`ObjectPool<T>` for repeated temporary streams or buffers instead of allocating new instances in hot paths. If mutable buffers are reused with single-caller assumptions, document the thread-safety invariant. |
| **Static `HttpClient`** | `HttpClient` instances should be `static readonly` fields, not per-instance objects that are repeatedly constructed or disposed. Per-instance clients can exhaust sockets; inject clients only when there is a real caller requirement. |
| **`HashSet.Add()` already handles duplicates** | Calling `.Contains()` before `.Add()` does the hash lookup twice. Just call `.Add()`. (Postmortem `#41`) |
| **Don't wrap a value in an interpolated string** | `$"{someString}"` creates an unnecessary `string.Format` call when `someString` is already a string. (Postmortem `#42`) |
| **Consider allocations when choosing types** | `Stopwatch` is heap-allocated; `DateTime`/`ValueStopwatch` is a struct. On hot paths or startup, prefer value types. (Postmortem `#39`) |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,13 @@ and merge conflicts.
| Check | What to look for |
|-------|-----------------|
| **Use existing utilities** | Check `MonoAndroidHelper`, `FileUtil`, `PathUtil`, `ITaskItemExtensions`, and other utilities before writing new helpers. Duplicating existing logic is the most expensive AI pattern. |
| **Use Android tools utilities** | In `external/xamarin-android-tools/`, process execution should go through `ProcessUtils`, file extraction/download/checksum/path helpers through `FileUtil`, and repeated buffers/streams through `ObjectPool<T>` or `MemoryStreamPool` where applicable. |
| **`Log.LogDebugMessage` for diagnostics** | Use `Log.LogDebugMessage(…)` for verbose/debug output, not `Console.WriteLine` or `Debug.WriteLine`. Don't spam logcat with messages that fire on every type lookup miss. (Postmortem `#9`) |
| **Android tools logger delegate** | SDK/JDK discovery helpers in `external/xamarin-android-tools/` commonly use `Action<TraceLevel, string>? logger` (see `AndroidSdkInfo.DefaultConsoleLogger`) so callers can route diagnostics into MSBuild or IDE logs. Don't replace this with `Console.WriteLine` or `Debug.WriteLine`. |
| **Return `IReadOnlyList<T>`** | Public methods should return `IReadOnlyList<T>` or `IReadOnlyCollection<T>` instead of mutable `List<T>`. |
| **Prefer C# pattern matching** | Use `is`, `switch` expressions, and property patterns instead of `if`/`else` type-check chains. |
| **Structured args, not string interpolation** | Process arguments should be `IEnumerable<string>` or use `ArgumentList`, not a single interpolated string. |
| **Android SDK environment variables** | In `external/xamarin-android-tools/`, use `EnvironmentVariableNames.AndroidHome`/`ANDROID_HOME` for new SDK-root behavior. `ANDROID_SDK_ROOT` is deprecated by Android and should only be read for backward compatibility. |
| **Method names must reflect behavior** | If `CreateFoo()` sometimes returns an existing instance, rename it `GetOrCreateFoo()` or `GetFoo()`. (Postmortem `#4`) |
| **Choose collision-proof names** | Types and constants that could collide with user code or Android concepts need disambiguating prefixes (e.g., `__Xamarin.Android.Resource.Designer` with a `__` prefix). (Postmortem `#2`) |
| **Don't assume transitive assembly references** | An assembly containing an `Activity` subclass does not necessarily reference `Mono.Android.dll` directly — the reference may be transitive. Skipping assemblies based on direct reference checks can break user code. (Postmortem `#64`) |
Expand Down Expand Up @@ -93,6 +96,7 @@ and merge conflicts.
| Check | What to look for |
|-------|-----------------|
| **XmlReader over LINQ XML** | For forward-only XML parsing (manifests, config files), prefer `XmlReader` — it's streaming and allocation-free. `XElement`/`XDocument` builds a full DOM tree. |
| **SDK manifest parsing stays streaming** | Android SDK repository manifests can be large; keep `external/xamarin-android-tools/` manifest parsing on streaming `XmlReader`-style paths unless there is measured evidence a DOM is acceptable. |
| **p/invoke over process spawn** | For single syscalls like `chmod`, use `[DllImport("libc")]` instead of spawning a child process. Process creation is orders of magnitude more expensive. |
| **Use `Files.CopyIfStringChanged()`** | Don't write to a file if the content hasn't changed — it breaks incremental builds by updating timestamps. (Postmortem `#53`) |
| **Don't remove caches without measurement** | If a cache (like `TypeDefinitionCache`) had a measured perf win, removing it requires proving the replacement provides equivalent caching. (Postmortem `#57`) |
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ I/O, archives, or process execution.
|-------|-----------------|
| **Zip Slip protection** | Archive extraction must validate that every entry path, after `Path.GetFullPath()`, resolves under the destination directory. Never use `ZipFile.ExtractToDirectory()` for untrusted archives without entry-by-entry validation. |
| **Path traversal** | `StartsWith()` checks on paths must normalize with `Path.GetFullPath()` first. A path like `C:\Program Files\..\Users\evil` bypasses naive prefix checks. Also check for directory boundary issues (`C:\Program FilesX` matching `C:\Program Files`). |
| **Mandatory checksum verification** | Downloads or archive installs in Android tools code must not proceed unverified when checksum/hash data is expected but missing or mismatched. Fail closed with an actionable error. |

---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Guidance for test code. The repo-specific conventions (e.g., `BaseTest`,
| **Test assertions must be specific** | `Assert.IsNotNull(result)` or `Assert.IsTrue(success)` don't tell you what went wrong. Prefer `Assert.AreEqual(expected, actual)` or NUnit constraints (`Assert.That` with `Does.Contain`, `Is.EqualTo`, etc.) for richer failure messages. |
| **Deterministic test data** | Tests should not depend on system locale, timezone, or current date. Use explicit `CultureInfo.InvariantCulture` and hardcoded dates when testing formatting. |
| **Test edge cases** | Empty collections, null inputs, boundary values, concurrent calls, and very large inputs should all be considered. If the PR only tests the happy path, suggest edge cases. |
| **Android tools SDK/JDK fixtures** | Tests under `external/xamarin-android-tools/tests/` commonly build isolated fake SDK/JDK layouts and platform-specific tool scripts (`.bat` on Windows, shell scripts on Unix). Keep these fixtures self-contained and cleaned up in setup/teardown rather than depending on the developer machine's installed SDK/JDK. |
| **Generator tests must include Invoker types** | Tests for generated binding code (under `external/Java.Interop/tools/generator/` and related test projects) should verify both the interface/class output and the `*Invoker` type behavior. Invoker codegen has historically had subtle bugs with default interface methods and virtual dispatch. |
| **JVM-dependent tests** | Tests that require a running JVM must be in projects that configure the JVM environment (e.g., `Java.Interop-Tests`). Verify that test classes requiring a JVM are not placed in unit-test-only projects, where they will silently skip or fail with obscure errors. |
| **Expected codegen output tests** | Generator tests that compare against expected output files should be updated when the expected format changes. Stale expected-output files cause spurious test failures that mask real regressions. |
4 changes: 0 additions & 4 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@
path = external/robin-map
url = https://github.com/xamarin/robin-map
branch = master
[submodule "external/xamarin-android-tools"]
path = external/xamarin-android-tools
url = https://github.com/dotnet/android-tools
branch = main
[submodule "external/xxHash"]
path = external/xxHash
url = https://github.com/Cyan4973/xxHash.git
Expand Down
14 changes: 14 additions & 0 deletions build-tools/automation/azure-pipelines-public.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,20 @@ stages:
- ImageOverride -equals ACES_VM_SharedPool_Tahoe
os: macOS

# Android Tools Tests Stage
- template: /build-tools/automation/yaml-templates/stage-xamarin-android-tools-tests.yaml@self
parameters:
windowsPool:
name: $(NetCorePublicPoolName)
demands:
- ImageOverride -equals $(WindowsPoolImageNetCorePublic)
os: windows
macPool:
name: AcesShared
demands:
- ImageOverride -equals ACES_VM_SharedPool_Tahoe
os: macOS

# MAUI Tests Stage
- stage: maui_tests
displayName: MAUI Tests
Expand Down
11 changes: 11 additions & 0 deletions build-tools/automation/azure-pipelines.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,17 @@ extends:
image: $(WindowsPoolImage1ESPT)
os: windows

- template: /build-tools/automation/yaml-templates/stage-xamarin-android-tools-tests.yaml@self
parameters:
# The internal Xamarin.Android pipeline uses 1ES Pipeline Templates, which
# require Windows jobs to run on a 1ES-hosted pool. macOS is fine on the
# hosted Azure Pipelines pool as long as `os: macOS` is set (which is now
# the template default).
windowsPool:
name: MAUI-1ESPT
image: $(WindowsPoolImage1ESPT)
os: windows

- stage: maui_tests
displayName: MAUI Tests
dependsOn: mac_build
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# xamarin-android-tools tests stage
#
# Mirrors the build + test jobs from the upstream dotnet/android-tools
# azure-pipelines.yaml so that the Xamarin.Android.Tools build + unit tests
# continue to run as part of dotnet/android CI now that android-tools has been
# merged in-tree under external/xamarin-android-tools/.
#
# The upstream pipeline also packed a NuGet and published build artifacts;
# those are intentionally dropped here (the binaries aren't consumed from this
# stage -- dotnet/android's own build produces the shipping assemblies). Only
# logs + test results are surfaced.
#
# Referenced from both:
# - build-tools/automation/azure-pipelines.yaml (official / 1ES)
# - build-tools/automation/azure-pipelines-public.yaml (public PR validation)

parameters:
- name: stageName
type: string
default: xamarin_android_tools_tests
- name: dependsOn
type: object
default: []
- name: condition
type: string
default: succeeded()
- name: windowsPool
type: object
# NOTE: This default is a Microsoft-hosted Azure Pipelines pool, which is NOT
# allowed by 1ES Pipeline Templates in Official mode. Callers that extend the
# 1ES Official template (e.g. build-tools/automation/azure-pipelines.yaml) must
# override this with a 1ES-hosted pool like `MAUI-1ESPT`.
default:
name: Azure Pipelines
vmImage: $(HostedWinImage)
os: windows
- name: macPool
type: object
default:
name: Azure Pipelines
vmImage: $(HostedMacImage)
os: macOS

stages:
- stage: ${{ parameters.stageName }}
displayName: Android Tools Tests
dependsOn: ${{ parameters.dependsOn }}
condition: ${{ parameters.condition }}
variables:
DotNetCoreVersion: 10.0.x
XatSourceDirectory: $(System.DefaultWorkingDirectory)/external/xamarin-android-tools
# When built in-tree, external/xamarin-android-tools.override.props imports
# dotnet/android's root Directory.Build.props, which pins
# DotNetTargetFrameworkVersion=11.0 and sets AndroidToolsDisableMultiTargeting=true
# (so the product build gets a single netstandard2.0 assembly). Upstream
# dotnet/android-tools CI instead builds standalone: multi-targeting
# netstandard2.0 + net10.0, with the test projects running on net10.0. Its
# ProcessUtils tests assert ProcessStartInfo.ArgumentList, which only exists on
# the net10.0 (NET5_0_OR_GREATER) build -- the netstandard2.0 build takes the
# string-Arguments path. To reproduce upstream's green test configuration we
# re-enable multi-targeting and force net10.0 via these global properties.
XatBuildProperties: -p:AndroidToolsDisableMultiTargeting=false -p:DotNetTargetFrameworkVersion=10.0
jobs:

# Check - "Xamarin.Android (Android Tools Tests Windows - .NET)"
- job: xamarin_android_tools_windows
displayName: Windows - .NET
pool: ${{ parameters.windowsPool }}
timeoutInMinutes: 30
workspace:
clean: all
steps:
- checkout: self
clean: true

- task: UseDotNet@2
displayName: Use .NET Core $(DotNetCoreVersion)
inputs:
version: $(DotNetCoreVersion)

- task: DotNetCoreCLI@2
displayName: Build Xamarin.Android.Tools.sln
inputs:
command: build
projects: $(XatSourceDirectory)/Xamarin.Android.Tools.sln
arguments: -c Debug $(XatBuildProperties) -bl:$(Build.ArtifactStagingDirectory)/build-windows.binlog

- task: DotNetCoreCLI@2
displayName: Run Tests
inputs:
command: test
projects: $(XatSourceDirectory)/bin/TestDebug/**/*-Tests.dll

- task: PublishBuildArtifacts@1
displayName: Upload build logs
condition: always()
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: android-tools-logs-windows

# Check - "Xamarin.Android (Android Tools Tests Mac - .NET)"
- job: xamarin_android_tools_mac
displayName: Mac - .NET
pool: ${{ parameters.macPool }}
timeoutInMinutes: 30
workspace:
clean: all
steps:
- checkout: self
clean: true

- task: UseDotNet@2
displayName: Use .NET Core $(DotNetCoreVersion)
inputs:
version: $(DotNetCoreVersion)

- task: DotNetCoreCLI@2
displayName: Build Xamarin.Android.Tools.sln
inputs:
command: build
projects: $(XatSourceDirectory)/Xamarin.Android.Tools.sln
arguments: -c Debug $(XatBuildProperties) -bl:$(Build.ArtifactStagingDirectory)/build-mac.binlog

- task: DotNetCoreCLI@2
displayName: Run Tests
inputs:
command: test
projects: $(XatSourceDirectory)/bin/TestDebug/**/*-Tests.dll

- task: PublishBuildArtifacts@1
displayName: Upload build logs
condition: always()
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: android-tools-logs-mac
Loading
Loading